週末になるとKKJConvのリリースをしていますが、今週はちょっと微妙なので現状報告と予定について書いておきます。
現在、学習機能(正確には辞書キャッシュ)を実装中です。ほとんど出来ているのですが、最後の詰めでちょっと小休止中です。これがうまく行けば明朝までには次のリリースを出します。それを過ぎると、水曜くらいまで時間が取れそうに無いです。
[ その他の変更予定 ]
– UIQでコピペ画面に改行が反映されない。
かわ。さん、ピードラさんのご協力のおかげで解決策が出来ました。次のリリースに反映予定。
– 「お世話になります」みたいな変換を簡単に。
うめさん、Peek_Dogさんから話があって、なるほどと思いました。頭に「お」が有る場合2文字めからの辞書検索を行います。これは実装済みです。
– E61での記号入力。
なかなか進んでいません。とりあえず記号入力パネルみたいなもの(E61のChrキーで出るようなやつ)を作ろうとしています。キートップに合わせた入力は、最後になってしまうかも、、、
– UIQでの文字種変更。
これも、まだ具体的な案はありません。適当なキーに文字種変更の役割をふるというのが現実的と考えています。
– ユーザー辞書。
作れるかどうか、まだ不明です。辞書登録の方法とか課題多し。
– 大型辞書。
今のより数倍大きい辞書もテスト的には搭載して動くことを確認しています。ただしレスポンスは悪いです。選択肢の一つとして、そういうパッケージも用意しても良いかも。
– ドキュメント。
遅々として進まず。
最初、いくつか書き忘れていたので追記(まだ忘れていることもあるでしょうね)、、、
– 部分確定機能。
これが出来ると学習機能との組み合わせで、単漢字の組み合わせを単語としてキャッシュできるので使い勝手がかなり向上するのですが、まだ具体的な構築方法については考えがまとまっていないです。
– 漢字入力画面での編集機能。
これは、ゴリゴリとコードを書けば出来そうです。
私事ですが月曜から日本に2週間ほど一時帰国します。前半は作業時間がかなり取れそうです。後半は家族サービスのため作業はあまり出来ないかもしれません。
私は日本に帰ると翼をもがれたモバイラーになるためブログのコメント、メール等のレスポンスが悪くなると思いますのでご理解をお願いします。中国に居る間はブログのコメントが付くとプッシュメールで、すぐに内容が分かるのに、日本では音声だけの携帯電話とダイアルアップのネット接続という生活になってしまいます。さすがにダイアルアップだけではキツイのでAIR-EDGEレンタルを計画中。国際慢遊契約もないのでSMSも受け取れないなぁ、、、
たまには小ネタを書いてみます。NOKIA E61で素早く赤外線とBluetoothを起動する方法です。パンフレットのようなものに書いてあったのですが、説明書の方には無かったように思います。見落としている方も多いかと思うので紹介します。
スタンバイ画面で一番下、左端のキー
とCtrl
を同時に押すとBleutoothのオン、オフが出来ます。
赤外線は一番下、左端のキーとCarと書かれた右端のキー
を同時に押すとオンになります。もう一度押してもオフにはなりません。タイマーで自動的にオフになるのを待たないといけないです。
いまさら赤外線と思う方もいるかも知れませんが、私は赤外線を多用しています。KKJConvの開発も初期の頃はエミュレーター(Sunのものです、結局Carbide.jは重いので使っていません)を使うことが多かったのですが、最近ではもっぱら実機でテストしています。そんなとき、ケーブルとかMiniSD経由でプログラムを送るのは面倒です。ThinkPadを主な母艦として使っていますが残念ながらBluetoothは付いてないので、自然と赤外線でビームすることになります。KKJConvくらいのサイズであればストレスなく転送することが出来ます。転送されたプログラムはInboxから直接導入することが出来ます。赤外線つきのノートパソコンを使ってるいる方は試してみる価値ありです。
KKJConv v0.62をリリースします。今回は、細かい変更とE61以外の機種向けの対応が主です。
E61向けの記号入力も自分のE61のキートップに合わせた入力の対応中です。怪しい香港版E61では、いくらか記号入力を試すことも出来ます。
変更点
– M600, Freedom miniキーボード等のエンターキー対応
– 漢字モードでのスペース入力(全角、E61ではshiftを押した後にスペースを押すと半角スペースになります)
– かな->カナ変換で「の」が「ネ」に変換されていたので修正
– M1000で漢字変換が出来ないことへの対応(辞書をUTF-16LEからUTF-8に変更した)
– 記号を全角変換するときの候補が沢山出すぎていたことに対する対応
– 大文字の英字でローマ字変換がうまくいってなかったのを修正
– 単語の最後がnのまま変換できるようにした(例、shainを変換すると「社員」になる)
– 現在入力中の文字数を表示するようにした
– E61の漢字モードでShiftお押したままスペースバーの左の2つのキーで「」を入力出来るようにした。
– 漢字変換の方法を少し変えました(詳しくは後述)
ダウンロードは以下のurlです。
http://www.nkozawa.com/html/E61MyProgList.html
Read the rest of this entry
NOKIA E61のキーボードをMIDPのプログラムから見た時の話です。
TextBox等の部品を使うとOSがキーボードの面倒を見てくれるので何も悩むことはありません。ゲームなどのプログラムでは、キーボードを押した時、あるいは放した時に発生するイベントで得られるキーコードを見て動作を決定します。KKJConvでは漢字変換時の操作性を考えるとOSの部品は使えずキーコードを見ながら自分で画面を描画するという方法を取ることにしました。
そこで最初にKKeyCodeCheckerというプログラムを作成し、キーコードを調査しました。いくつかキーを押してみて、愕然とするとともに、なるほどと思いました。「a」を押すと「a」のアスキーコードが返ってくるのに「b」を押すと「8」のアスキーコードが返ってくるのでした。7月2日の記事に写真を載せているので見ていただくと分かるのですが「b」のキーはキーボードの中央近くにあって「8」と共用になっているのです。つまり、電話のテンキーに相当する部分は、そのままテンキーのように振舞うデザインになっています。言い換えると電話のテンキー部分の両端にフルキーボードの残りの部分を取り付けたかのような構造になっているのです。
これは、考えてみると良く出来た構造です。今までの10キーを対象に作られたMIDPのプログラムは、そのまま動かすことが出来るからです。KanjiHelper等の10キーで日本語入力するMIDPプログラムが動作可能なのも、このためです。逆にKKJConvのようにフルキーボードとして使うためには、この部分のキーコードを自分で読み替える必要があります。
もうひとつ面白いのはシフトを押したままフルキーボードを押すと、それなりにキーコードが変化しすることです(そのくせシフトキー自体もキーコードを持っています)。シフト+「a」は「A」に相当するアスキーコードが返ります。またシフト+「1」だと「!」になります、これは英語キーボードに準じているように見えます。これも読み替えによって「!」だったら「R」と読み替えは可能です。Peek_DogさんやmaitomoさんがKKJConvのレポートで指摘されていることを直すには、この読み替えを行えば良いわけです。
ところが、ひとつ困ったことがあります。それは「8」のキーです。シフト+「8」では「*」に相当するアスキーコードが返ります。何故これが困ったことかというと「*」は別に存在するのです(電話だから当然です)。つまりシフトを押したままの状態でキーを押していくと「*」が2つの別のキーで返ってしまいます。つまり、その2つのキーがMIDPから見分けが付かないのです。
シフトを押したままの操作はKKJConvでは禁じてとするしかないみたいです。積極的に禁止するか、変な記号が入るけどサポート外ですとするか、、、悩ましい。

自分のブログで、まだ一度もKKJConvの画面の紹介をしていないのを思い出しました。
そこで手抜きなコザックはreveil師匠の作ったアニメーションGIFを盗用することにしました。みごとに変換の様子が再現されています。
盗用と書いていますが、一応事前に連絡しています(一方的に^^;)。
みなさんお待たせしました。やっと漢字変換が出来るようになりました。漢字変換部分はベータと呼んでもいいかも知れませんがE61の記号入力とか手付かずのままなのでアルファ版といったところです。
いまだドキュメント無しです。
前回からの変更点(忘れているものもするかも)
– 漢字変換機能搭載
– ←キーをバックスペースとして使うのを止めた
– ↑キーをシフトとして使うのを止めた
– シフトを押した後に文字種のボタンを押すと文字種を逆順で送る(E61だけしか効かないと思います)
– 機種判定を自動で行いE61にしか意味のない数記モードを他機種では表示しないようにした。
Read the rest of this entry
E61のケースが、はるばる香港のreveil師匠からダークサイド宅急便を経て上海のうめ重宝員のアジトまで届きました。reveil師匠、ありがとうございました。
一度は使ってみたいとあこがれていたKRUSELL製のケースで、なかなかカッコよいです。ベルト・クリップが付くのですが、液晶とかボタンとか丸出しなのでちょっと不安です。裏側にストラップを通せる部分があるのでクリップ付きのストラップとネック・ストラップを状況に応じて使い分けすることにします。
本日お休みで、KKJConvのコード書かなきゃと思いながら、このケースの入手のことだけはブログに書かずにはいられないコザックでした。(華南地方ではコザックという名前が定着しているのでブログ上の名前はコザックもしくはKozakに変更します)
KKJConvの中にE61固有のコードが沢山含まれています。機種固有部分を処理するために自動的に機種を判別するコードを組み込みました。その際に使用したのがSystem.getPropertyというAPIです。
このgetPropertyで得られる値を表示するプログラムKGetPropertyを以下のurlにアップロードしました。KKJConv用の機種判別コードは既に完成していますが、皆さんのデバイスで、どんな値が返るのか今後の参考のために知りたいと思います。もし時間に余裕があれば調べてコメントいただけないでしょうか?
http://www.nkozawa.com/html/E61MyProgList.html
私の香港版、ちょっと怪しい中文E61では以下のような値が得られました。
Encoding: ISO-8859-1
Platform: NokiaE61-1/0610.04.04
Locale:
Configuration: CLDC-1.1
Profiles: MIDP-2.0
何故かLocaleはブランクです。エミュレーターではちゃんと文字がでていたのでバグではないと思います、、、
6/29追記
言語を中国語に変更したら Locale: zh-CN になりました。上のは英語にしていたときです。en とでるべきなのでしょうが、事実上は影響ないでしょうね。
MIDP版漢字入力(まだ漢字は無し)プログラムKKJConvのメインテナンスバージョンv0.51を作りました。
修正した問題点は以下の通りです。
– nyuなどと入力すると最初のnが「ん」に変換されてしまう。
– 漢字入力画面が一杯になった後に「クリアー」をかけると、その後まったく入力できなくなる。
– E61のシフトキーが効かない
– M600iのバックスペース・キーが効かない。
– シフトキーにもキーリピートが掛かっている。
– 全角スペースが入力できない。
– 漢字モードのスペースが半角である。
– E61で漢字モードで長音を入力するすべが無い。
上の修正と関連しますが、新しいキーの割付は以下の通りです。
– Clearキー、M600iのバックスペースをバックスペースとして扱うようにした。
– Callキーに’-‘を割り当てた。これによりE61の漢字モードで簡単に長音が入力できます。もうニューヨークって入力しようとして困ることはありません。
ダウンロードは前と同じ以下のurlです。
http://www.nkozawa.com/html/E61MyProgList.html
その他の説明は昨日の記事をご覧ください。
週末になり、まとまった時間をコーディングに費やすことが出来ました。とりあえずローマ字変換だけ出来たのでpreview版として公開します。タイトルには反しますが、まだ漢字の入力は出来ません。
E61のキーボード(ちょっと特殊なんです)に特化したプログラムですが、その他のフルキーボード搭載機種でも稼動する可能性は大きいと思います。MIDP1.0が動く機種でフルキーボード搭載の機種をお持ちの方は、試していただけるとありがたいです。
MIDPの独立したプログラムであってFEPではありません。ちょっと回りくどい操作を強いられることをお許しください。将来的にはFEPが作れれば良いのですがS60のプログラミングの世界は、全くの未知の世界なので自分にも作れるのかどうかまだ分かりません、、、
Read the rest of this entry