[PR]看護師の好条件な求人情報満載:年間30,000人の転職看護師が利用中

5Way-Navigationのお作法


Palm Tungstenシリーズに搭載された5Way-Navigationボタンは、CLIEに搭載されているJOGダイアルとは別の視点から
Palmの操作性向上を目指した意欲的なデバイスです。
基本的には上下ボタンの機能拡張であり、上下、左右、そしてセンターの5つのボタンから成ります。
身近な例えだと、携帯電話についているアレといっしょです。

携帯電話のアレ

もう、見るからに便利そうな5Wayナビボタンなのですが、不幸なことに現在国内ではPalm Tungsten Tの輸入品を購入する以外に
手元で使用することが出来ません。

しかし、だからと言って開発者たるもの、自作のPalmWareにこの便利なデバイスを対応させないと言うのは屈辱の極みです(ちょっと大げさ?)。
と言うわけで、今回は自作PalmWareに5Wayナビボタンに対応させるためのお作法について説明していきたいと思います。

検証環境の整備


5Wayナビボタンは、現在Palm Tungsten T/W以外のデバイスに搭載されていません。もしあなたがこれらのユーザであれば、
作ったプログラムを実機にて検証することが可能でしょう。
不幸にもあなたがこれらのデバイスを持ち合わせていない場合、手元で実際に検証を行うことが出来ません。これではとても不安ですね。

でも、心配することはありません。
あなたが、SONYのCLIEシリーズのユーザであるという条件がつきますが、その場合素晴らしい検証環境を手に入れることができます。
その素晴らしい環境を提供してくれるのがSilkTTです。
SilkTTは、CLIE PEG-NX60/70のシルクスクリーンエリアに5Wayナビボタンを表示して、その動作をエミュレートするためのプラグインです。

あなたがPEG-NX60/70のユーザであれば実機で、そうでない場合でもCLIEのデベロッパープログラムに申し込みをすることで、
PEG-NX70のPalmOS Simulatorを入手することが出来ます。
もし、これらの検証環境が入手が可能であるのなら、迷わず入手しましょう

残念ながらこれらの検証環境を構築出来ない方は、検証作業をどなたかに依頼することになるでしょう。

5Wayナビボタンのイベント取得


5Wayナビボタンは上下左右と中央のボタンの押下時と、それを止めた時にイベントが発生します。
以下に、5Wayナビボタンの各アクションにおけるイベントコードを示します。

動作 イベントコード
5Wayナビボタン押下(上) 11
5Wayナビボタン押下(下) 12
5Wayナビボタン押下(左) 204
5Wayナビボタン押下(右) 208
5Wayナビボタン押下(中央) 216
5Wayナビボタンを押すのを止めた 200
凡例
イベントの種類
nsbPalm5Way
nsbKeyOrButton

ここで注意したいのは、上下ボタンそれ以外のボタンで、イベントタイプが異なるという点です。
上下ボタンは、他のPalmデバイスとの互換性を確保するために、イベントタイプはnsbKeyOrButtonですが、
それ以外のボタンではnsbPalm5Wayです。
ちょうど、JOGアシストを使用した場合のCLIEのJOGダイアルと似ていますね。

2005.4.13訂正
5WayナビのイベントコードをNS Basic4以降のものに書き換えております。
NS Basic Ver3.xをお使いの場合、左、右、ナビボタン押下、ナビボタンを押すのをやめた場合の4つのイベントコードから200を引いて下さい。

リピート対策

5Wayナビボタンは押しつづけていると、イベントが次々と発生します。
特に、Palm Tungsten Tは高速なPalmOS5.0デバイスのせいか、ちょっとボタンを離すタイミングが遅れるとボタンを押しっぱなしだと判断され、
次々とイベントが発生してしまいます(Palm Tungsten Wなど、他のデバイスでは未確認)。

そのため、どうしてもボタンのリピートが必要な場合を除いて、予めイベントを制御して1つのアクションに対して
1つの処理を実行するような仕組みを考えるのがお勧めです。

下の図をご覧下さい

5Wayナビボタン対応イベントコードの処理フロー


この図は、5Wayナビボタンを使用した場合のイベントコードの処理についてまとめたフローチャートです。

この処理ではボタンが押されている間、TT_BUFというグローバル変数にイベントコードを代入し続けています。
そして、ボタンが押されなくなった時(イベントコード=0が発生した時)に、変数TT_BUFに残っていたイベントコードの処理を実行しています。

こうすることにより、確実に1つのアクションに対し1つの処理を実行することができるようになります。

上下ボタンに関してはイベントタイプがnsbKeyOrButtonですので注意が必要です。
このフローでは省略していますが、5Wayナビボタンを持たない他のPalmデバイスと互換性を確保しようと思ったら、
5Wayナビボタンか普通の上下ボタンを使用しているのかで、処理の場合分けをしておく必要があります。
上記フローでは、ボタンを押すのを止めたというイベントを受け取ってから処理が実行されるよう設計されていますが、
従来の上下ボタンではボタンを離したというイベントは発生しないからです。


サンプルプログラム

5Wayナビボタンのイベントが発生すると、発生したイベントを画面に表示するプログラムです。
過去10回までの履歴を表示できます。

画面下の、USE 5Way-Naviのチェックボックスのチェックを外すことにより、上下ボタンしか持たないPalmデバイスで、動作させることが出来ます。 環境が変わるとイベントの発生にどのような違いがあるのかを観察してみてください。
※プログラムの実機での動作確認は自己責任にてお願いします。
 また本プログラムはクリエイターIDの登録を行っていません。
 本体で確認を行うときは、同一のクリエイターID、ファイル名の
 プログラムが存在しないことを確認してからインストールするか、
 添付のソースを修正してから、コンパイルしてください

サンプルプログラム
ファイル名=5WayEvent.zip
クリエイターID=Test
download

謝辞

これらの情報をまとめるにあたり、私といっしょに試行錯誤をしていただき、また的確なアドバイスや検証をしていただいたmizuno-amiさんに感謝いたします。
この情報をまとめることが出来たのは、ひとえに氏の助言と行動の賜物です。

この場を借りて、謹んでお礼申し上げます。

戻る
[PR]中古車探しは、ガリバー:在庫多数、全車保証つき!