22) Palmなスピリッツと2つの星
 Palmデバイスに付けられている幾つかのボタン類、そのどれが押されたかを判別するために、NS BasicではGetKey()という関数を使うのが一般的です。
GetKey()という関数、正確には、押されたキーやボタンの「1文字」を得ることが出来るものなので、物理的なボタン類に限らず、Graffiti入力された文字も取得可能ですが、あまり使われているのを見たことはありません。
どちらにしろ、GetKey()には、1文字が代入されると覚えておけばよいでしょう。
ちなみに、このGetKey()は、キーやボタンを含めたPalmデバイス上から入力できるほとんどの装置に対応しているのは、下表を見れば明らかかと思います。
    種類 GetEventType() 名称 GetKey() (16進数)
    本体ボタンNsbKeyOrButton / 1ボタン1/予定表1 (&H1)
    ボタン2/アドレス帳2 (&H2)
    ボタン3/ToDo リスト3 (&H3)
    ボタン4/メモ帳4 (&H4)
    上方向11 (&HB)
    下方向12 (&HC)
    電源14 (&HE)
    シルクエリアメニュー5 (&H5)
    ホーム(アプリケーション)17 (&H11)
    検索7 (&H7)
    電卓/ソフトキーボード16 (&H10)
    外部装置HotSync(クレードル)15 (&HF)
    イベント用自動電源OFF18 (&H12)
    CLIE
    ジョグダイアル
    NsbJogDial / 4時計回り0 (&H0)
    反時計回り1 (&H1)
    長押し2 (&H2)
    押しながら時計回り3 (&H3)
    押しながら反時計回り4 (&H4)
    押す5 (&H5)
    離す6 (&H6)
    HandEra 330
    ジョグダイアル等
    NsbKeyOrButton / 1Auxボタンを押す27 (&H1B)
    [ESC]と同じ
    ジョグを押す13 (&HD)
    [Enter]と同じ
    NsbHandEraJog / 5時計回り12 (&HC)
    反時計回り3 (&H3)
    Tungsten-T
    5WAYナビボタン
    NsbPalm5way / 7センターボタンを離す0 (&H0)
    左方向4 (&H4)
    右方向8 (&H8)
    センターボタンを押す16 (&H10)
 面白いことに、NS Basicでは、16進数を表す「&H」で始まる定数を、数値としてではなく、文字列として認識します。
例えば、Visual BASICなどでは、

    Dim A as Integer

    A = &H10
という書き方が許される、というか単なる数値ですから当然で、A には &H10(10進数では16)が代入されますが、NS Basicではコンパイル時にエラーになります。

    Dim A as String

    A = &H10
こう書けばOKですが、これは、
    A = Chr(16)
と同等です。ちょっと不思議な気がしますが、そういうモノだと思って使ってください。


さて、最近は、英語版先行というか、日本語版が発表されない純正Palmデバイスにシビレを切らしている方も多いと思います。そんな英語版のデバイス、気が付けば日本語版には存在しない「★」のボタンがあります。
物欲の為せる業か、神の導きか、なぜか手元に、Palm Tungsten-Tと、Palm Zireがありますが、どちらも「★」がシルクエリアの右上についてます。

日本語版だったらソフトキーボードの起動ボタンですが、m515あたりの英語版では電卓が割り当てられていました。
どちらにしても、環境設定(Prefs)から自由に割り当ての出来なかった機能限定ボタンでしたが、★になってからはユーザーが自由に割り当てることが可能になりました。
それぞれの環境設定のデフォルト設定画面は、次のようになっていますが、これを見れば★ボタンがユーザー向けの「ご自由にどうぞ」ボタンであることはわかりますね。

    Palm m500(日本語)

    Palm Zire

    Palm Tungsten-T
面白いのは、ZireではデフォルトでHotSyncが割り当てられているのに、Tungsten-Tでは何も割り当てられていない点です。
確かに、Zireはクレードルではなく、ただのケーブルでHotSyncしますので、このような機能が割り当てられているのだと思います。まぁ、一方のTungsten-Tの方は「好きにして★」状態でしょうか。

ところで、Zireをお持ちの方はご存知のことと思いますが、このZireの★ボタンを押すと、HotSyncが出来ます。
いや、ボタンに機能が割り当てられているから、当たり前じゃん、と思うかもしれませんが、試しに、お手持ちのPalmで適当なボタンにHotSync機能を割り当ててみてください。
HotSyncのプログラムが起動するだけで、自動的にHotSyncが始まる訳ではありませんが、Zireは自動的にHotSyncが始まります。
    Zireでは...

       Tungsten-Tでは...

    ★をタップすると、HotSyncが開始されます。 ★をタップしても、HotSync画面が表示されるだけ。
これは特殊な機能か!と思ったのですが、前述のGetKey()関数を使って調べてみましたら、理由がわかりました。
Tungsten-Tの★ボタンはキーコード16番、Zireの★ボタンはキーコード15番だったのです。 そう、実は、Zireには、いわゆる電卓(ソフトキーボード)ボタンがついていなくて、HotSyncボタンが実装されていたことになります。
それがユーザー側で自由に変更できる点、ある意味、画期的なHotSyncボタンを備えた特殊なデバイスであるといえますね。

このように、わざわざZireではシルクアリアの★ボタンは、他のデバイスとは違ってHotSyncボタンであることがわかりましたが、どうしてこんな対応がされているのでしょう?

ちょっと考えれば、その答えが理解できます。
低価格デバイスとして発表されたZire、クレードルはありませんし、ボタンこそ4つから2つに削られていますが、ボタン1つで手軽にHotSyncできる!というPalmの特徴を外すことだけはしたくなかったと思われます。
単なるコストダウンで、「安いから仕方がないや」とユーザーに納得させて、同じように電卓(ソフトキーボード)ボタンを配置することも可能だったはずですが、あえてHotSyncはボタン1つで出来るように設計したあたり、このチープなデバイスの★ボタンに、Palmの魂を見た思いがします。