Dropbox

数日前の記事にNokia E7-00のMIDPにてナビキーがQWERTYキーボードのa,w,s,dに割り当てられていると書きました。この解釈は間違ってはいませんが、もう少し詳しい仕組みが分かりました。現在確認されているところではN97 miniも同じ仕組です。他にも該当デバイスがあるかも知れません。

MIDPにおいては幾つかのキーが予め定義されています。携帯電話の10キー(0-9, *, #)とゲーム用のキーです。詳しくはCanvasクラスの説明の冒頭部分に記述されています。ゲーム用のキーについてはキーコードが決め打ちされている訳ではありません。CanvasクラスのgetKeyCode(int)メソッドでキーコードを取得すると、そのデバイスで使用するゲームキー(Up, Down, Left, Right, Fire)が初めて分かるという仕組みになっています。

KKJConvでは、上下左右にカーソルを動かすためのキーコードをgetKeyCodeで取得しています(一部例外あり)。その結果、E7-00ではa, w, s, dが上下左右のキーとして返っていました。そのためKKJConvにおいてもa, w, s, dを押すとカーソルが動くという結果になりました(同じ理由で本当のカーソルキーは無視)。ただし実際のキーコードはascii文字としてのa, w, s, dそのものでした。また、キーボード右下にあるカーソルキーも正しく反応していて、他のデバイスと全く同じキーコードが出ていました。

ということで、KKJConvではE7-00とN97mini(あと詳細は忘れましたがソニエリも以前から)ではgetKeyCodeを使わず決め打ちのキーコードでカーソルを移動することにしました。もしかすると全くgetKeyCodeを使わなくても良いような気もします。

[ まだ残る謎 ]
これでカーソル移動については簡単に解決しましたが、改行キーの謎は残っています。現在の所、改行キーを押すとメニューが表示されてしまいます。 これが、ちゃんと改行キーとして働けば、素直な動作環境になります。今現在は仕方なく@を改行キーの代替キーとして割り当てています。

Trackback

no comment untill now

Add your comment now