Graffiti と Opie on Qtopia


よーするに大昔の宿題。昨年の 11 月 というのが凄まじいぞ mOm
Opie handwriting に graffitiset があったので書体上の癖を避けるためにベースをこちらに移したのはいいが、 Opie が reference として使えるようになるまではどないにもならんかったのであった。 ともかくまともに動かんのよ < Opie on Qtopia

二つの libqpe

現在の Opie は Qt/Embedded 2.3.4 以上必須になっている。 ... が、かなりの部分は Qt/Embedded 2.3.2 上でも動くし、 どーゆーときに動くか動かないかもはっきりしているのでとりあえずどーでもいい。 やっかいなのが libqpe で、Qtopia に含まれる libqpe と Opie に含まれる libqpe は どちらも 1.5.0 を名乗って互換ということになってるが、名ほど対応してない。 ともかく color と buttonmenu 周りで呆れるほどよくひっかかってくれる。 Opie on Qtopia の最大の障害がこいつである ... libqpe は native のもの (Qtopia 環境では Qtopia 由来の libqpe、Opie 環境では Opie 由来の libqpe) を使いたいが、 そーほこほこ交換できん。

結局 libqpe の非互換のストレスは Opie 全面移行のトリガの一つになった。 まー、アプリをソースから make するぶんには下記な方法でなんとかなるとしても、 バイナリがそのまま使えないんじゃ、意味ないもんねぇ。

Opie on Qtopia の build.

ほんとは Qt/Embedded 2.3.2 対応時代 (2002 年 11 月以前) の Opie ソースを用意すべきである。 ... 実際、新しめの Opie のバイナリパッケージを Qtopia に入れるより、古めのパッケージを入れたほうが安定する、などの例は多いはずだ。

ここでは handwriting 作るだけなので cvs 20030713 を使った。 もっとも肝心の handwriting は 20030529 と同じものだったが ...。 基本的には Opie ソースツリーの include 下を Qtopia 1.5.0 のもので置き換え、 make -i して出来ないものは放置する (をい)。

libqpe も qpe も make に失敗するが、どーせ使わない。 出来あがったアプリバイナリは定義によって Qtopia 1.5.0 の libqpe と組んで使えるはずだ。

% export QTDIR=/home/src/Qt/arm/qt-embedded-2.3.2
% export OPIEDIR=/home/src/Qt/arm/opie-qte232
% export QPEDIR=/home/src/Qt/arm/qtopia-free-1.5.0
% cd /home/src/Qt/arm/opie-qte232
% cd include
% mv qtopia qtopia.org
% mv qpe qpe.org
% md qpe
% ln -sf qpe qtopia
% pushd /home/src/Qt/arm/qtopia-free-1.5.0/include/qpe
% cp * /home/src/Qt/arm/opie-qte232/include/qpe
% popd
% pushd /home/src/Qt/arm/opie-qte232/include/qtopia
% ln -sf . private
% popd
ソースツリー完成。てきとーに config してから
% make -i
むろん、ばかすかエラーが出まくるが無視。 エラーでひっかかったうちでは advancedfm や opieplayer, drawpad あたりが大物 (けっこうイタい)。 libopie が qtopia 1.5.0 ヘッダで make できないのが痛すぎるが、当面は仕方なかろ。

Handwriting と Graffiti セット

Opie on Qtopia を make する環境が整えば、Opie の handwriting も Qtopia 1.5.0 で動かすことができる (上述の方法でバイナリができる)。

Opie の handwriting は文字データを切替えて使うことができる。 デフォルトの quickset (Quickhand) 以外に opie-handwriting-classicset (ふつーの英字)、 opie-handwriting-graffitiset (Graffiti) の 3 種類が用意されている。

Graffiti で使うにはいかにも opie-handwriting-graffitiset を入れてくれと言わんばかりなんだが、 どーみても quickset って graffiti にしか見えんのだよな。 ついでに graffitiset よりも graffiti そっくり ... というのは、 graffitiset には backspace、return、space が含まれてない一方、 quickset はちゃんと backspace、return、space を含むからだ。

で、まぁ、細かいことは気にせず例によって BS キーを漢字キーに切替え、Qtopia 向けに make した:

handwriting settings

opie-handwriting-graffitiset が space を持たないということは graffitiset 使用中は仮名漢字変換ができないということで、漢字キーを置いた意味がない。 そこで graffitiset に backspace、return、space を加えたものを handwriting-ja-graffitiset としたが、 そんなもん入れずにデフォルトの quickset で困ることはないはずである。マジに違いが分からん。 ... でも氏素姓不明なものを基準にはでけんて。

バイナリとパッチ

それぞれ、 で、handwriting-ja-classicset は Opie サイトで言う opie-handwriting-classicset を Qtopia 向けにパッケージングしなおしたものである。 よーするにパッケージを opie 形式から qtopia 形式に直せば、opie-handwriting-{classicset|graffitiset} も使える。

補足

本文も書き直したが、上の handwriting-ja バイナリは生来の Qtopia 1.5.0j 環境で動かしてるので念のため ...。 A300 そのものには Opie をつっこんであるが、 上のテストの時は生粋の ROM 1.50J を chroot jail で作り、一時的に本体の opie を止めて動かしている (3/15 頃と逆やね)。

併用した libqpe や qpe などに Opie の血は入っておらず、 ソースのヘッダごと交換してるので handwriting-ja 自体も opie-handwriting-*set の形式関連を除き Opie API との関係はない。 このため handwriting-ja は Opie で動かなくても不思議はないが、Opie で漢字キーがあっても仕方ないので Opie 環境ではちゃんと native の opie-handwriting を使うよーに。

追記

A300 では動いた。B500 でも動くだろう ... てのはいいとして。 C750 に入れたところふつーに動いているようにみえるが、 表示窓サイズが QVGA 専用なので「おーちっちゃい」と笑いながら rotation したら Qtopia ごと落ちた (qpe に再起動がかかった)。 笑ってはいけなかったらしい。ふむ。

ちなみに一回しか落ちてくれなかったので落ちた理由は不明。 Qtopia for C7x0 むけのデバッグ環境作ってないのでちと分からん。

ところで、viewstyle → inputstyle 方向の rotation では出してあった inputmethos が消えるのは仕様なんだろな。まあ、言いたいことはわかるが。


[日記へ] [目次へ]