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
toshichanの日記からの情報です。epoc.iniというファイルに貼り付け画像の下に書いた一行を書き込むことによりQWERTYキーボード付のエミュレーターが使えるようになります。良い情報を得ました。ただし元記事にもあるように数字キーでしか日本語入力できなかったです。
configuration epoc_352x416_qwerty.ini
久しぶりに高電社のホームページを見たら翻訳ウォーカーがZERO3対応版が出ていました。
一月ほど前に確認した時にはWM5.0対応版(おそらく、わたしが今使っているもの)のことは書いてありました。そしてZERO3でも稼動するがポートレートのみ対応みたいな書き方でした。
今回のバージョンはZERO3のランドスケープも対応しています。微妙にほしいな。今も、困ってはいないのですが、辞書引きの時はJASJARの液晶を反転させてポートレートに時々しています。