Let's 5-Way Navigation -NS Basic/Palm Ver.3.02-

2003-02-01.

現時点で日本国内未発売のTungsten-Tですが、既に何らかの方法で手にされた方も多いようです。
(そういう私もその1人ですが・・・)
このTungsten-Tで目を引くのが、やはり中央に配置された新しい入力装置「5-Way Navigation」(以下、5WAYナビ)ですが、使っていて便利だなと思います。
特に、CLIEなどのジョグダイアルでは「上下」という直線的な動きしか表現できませんでしたが、ここに「左右」という選択肢が簡単に出来るようになったのは、予想以上に便利に感じます。
さて、今回のNS Basicのバージョンアップでは、待ち望んでいた、5WAYナビへの対応が実現されましたので、ここで紹介します。

相変わらず、というか、今回も、NS Basicのバージョンアップは 3.01から3.02と、数字の上ではマイナーバージョンアップです。
確かに修正点一覧を眺めると、まだ、こんな細かいバグがあったんだなぁ、と思う反面、普通に使っていると、それほど致命的なバグに遭遇することは珍しいのでよく見つけたなァ、と思ったりします。
さて、そんなバグ取りの中で、唐突に登場した「5WAYナビ」への対応は、予想通り、新しいイベントタイプによって実現しています。

     nsbPalm5Way

このイベントタイプが、ボタンやジョグと同じように、GetEventType()関数で取得できますので、フォームのイベントモジュール内に記述すればよいことになります。
返されるキーの値ですが、以下のようになっています。

アクション
nsbPalm5Way
GetKey()
5WAY:押すのをやめた 0 (&H0)
5WAY:左を押した 4 (&H4)
5WAY:右を押した 8 (&H8)
5WAY:中央を押した 16 (&H10)

従来のボタンでは「キーを押した」という動作しか取得できませんでしたが、今回は、ボタンから手を離した、という動作もイベントとして取得できます。
そのため、プログラム的に組み込めば、単なる「押した」以外に、いわゆる「長押し」も実現することが可能です。

一方、5WAYナビの上下の動作については、従来のアップキー、ダウンキーと互換になっていますので、プログラムの変更は必要ありません。

アクション
nsbKeyOrButton
GetKey()
5WAY:上を押した 11 (&HB)
5WAY:下を押した 12 (&HC)

ただし1つ注意点があります。
5WAYナビボタンから手を離したときには、ボタンを離した、というイベントが発生しますが、これはどんな場合でも発生するようで、従来と互換のある上下方向のボタンも例外ではありません。したがって、押した時は、nsbKeyOrButtonで取得できますが、離した時は、nsbPalm5Wayで取得する事になります。
また、どのボタンを離したか、という事は取得できませんので、作成する際は、注意して下さい。

ひとまず、この新しい機能を、3D迷路のAMPに組み込んで、5WAYナビに対応させてみました。(Ver.0.1b)
対応ついでに、思いきって2Dマップ画面を取り除きましたので、本当に単なる迷路遊びになりましたが、5WAYナビだけで全ての操作が可能ですから、Tungstenをお持ちの方、是非、お試しください。
(その他の機種でも、普通に動作しますが、AMP Ver.0.1aとの共存は出来ません。)

     amp_tt.prc(圧縮版:ami_tt.zip)(要 ランタイムVer.3.02)

さて、新しい機能のサンプルプログラムですが、NS Basic Ver.3.02付属のサンプル「SpecEvent.prj」が5WAYナビに対応したものにアップデートされています。
これ以上簡単に説明できないほど、易しいサンプルですので、是非、そちらをご覧下さい。


このように、新しいデバイスにも着実に追従してくれるNS Basicですが、今回の5WAYナビへの対応は、Tungstenが物欲リストに入っている方にとっては、物欲レベルを上げるのに十分な要因じゃないかと思います。
簡単なパズルゲームなどを、5WAYナビ対応にしておけば、スライドさせない状態で楽しむ事が出来ますから、通勤や通学の電車内での良い遊び相手になるんじゃないでしょうか?

mizuno-ami.


Ver.3.02の主な変更点・改良点


1.Startupコード内で、32767文字以上のコードが記入できるようになりました。

2.SerialOpen()で、32767を超えるポート番号が指定できるようになりました。

3.Symbol 1550 

4.Rand()が、1.0を発生させるバグを解消しました。

5.コンパイラは、フォーム上の同じ名前のオブジェクトをチェックするようになりました。

6.2番目のフォーム上のオブジェクト名に変数を使った時の、プロパティ指定に関するバグを解消しました。

7.Control().Label、は、ボタンオブジェクトでも動作するようになりました。

8.コンパイル時に、不要な「NEXT」をチェックするようになりました。

9.コンパイル時に、不要な「End Select」をチェックするようになりました。

10.複雑な比較式の評価方法の問題点を修正しました。

11.16桁を超える数値のリテラル変換の問題を修正しました。

12.チュートリアル1と2を新しいバージョンに改版しました。

13.Codモジュール内の、Funciton関数を、Defineで宣言しなくてもよくなりました。

14.空っぽのCodeモジュールに関するエラー(91)を修正しました。

15.無効なMaxCharsに生じるエラーを修正しました。

16.無効な、Top、Left、Right、Bottom、FontIDなどのエラーを修正しました。

17.リソースのパスが変更になったときに生じるエラーを修正しました。

18.登録されていない場合、コンパイル後に警告表示がされるようになりました。

19.InStr()の不具合を修正しました。

20.プログラムがタイムアウトになったときも、リセットされなくなりました。

21.メモリーのオーバーロック問題を修正しました。

22.Tungstenの5Wayボタンに対応しました。

23.サンプルプログラム「SpecEvent.prj」をTungsten対応にアップデートしました。

24.TECH NOTEの24,25を追加しました。

その他
  1.ハンドブックに掲載のBluetoothポートが「rcfm」と記載されていますが、正しくは「rfcm」です。


  2.Tungsten対応
新しいPalmデバイス「タングステン」は、上下左右と中心に新しいボタンを持っています。
これらのボタンは、押された場合、繰り返しイベントを生じます。

上下方向へは、従来の装置と同じコードを返しますが、それらのボタンが離された場合に特殊なイベントを生じます。
GenEventType()関数からnsbPalm5Wayで取得できるイベントでは、それらのボタンが離された場合、GetKey()に0を返します。

一方、左右方向と中心については、nsbPalm5Wayで取得できるイベントのGetKey()にそれぞれ、4,6,16を返します。
これらのボタンの何れが離された場合も、引き続きイベントを発生させ、これらは 0 を返します。

詳しくは、SpecEventのサンプルを参考にして下さい。