NS Basic/Palm 4.00

2003/11/19


Ver.4.00での大きな変更は、拡張ライブラリの改良と新しいPalmデバイスへの対応です。
一般的なユーザーには、Tungsten|T3などに対応した結果、5WAYナビ周辺のGetKey()の戻り値が変更になったことが重要ではないでしょうか。
特に、各種TungstenやZireについては日本で正式に発売されていないものの、何故かユーザーがあちらこちらに存在していますので、プログラマーには何らかの対応が求められるでしょう。
また、Pocket Purchaseに対応したことで、自作アプリを販売しやすくなったこと、各種の修正が行われたようです。

以下に、主要な点を紹介しますが、詳しくはお手元のアップデートの連絡などをご覧下さい。
※アップデート内容を全て網羅している訳でもありませんので、アップデートについての情報も併せてご覧下さい。




■GetKey()の値が変わりました【重要】

 Ver.3.11までにTungsten|Tなどに搭載されている5WAYナビボタンのイベントが取得できるようになりましたが、Ver.4.00からはGetKey()で得られる値が変わります。
これはTungsten|T3への対応の結果によるもので、現段階では、PalmOneからは特にコメントがないとの事です。
この変更で5WAYナビを使った既存のアプリケーションは、変更する必要があります。
(戻り値はランタイムのバージョンによって決まります。)
    イベントAsc(GetKey())
    Ver.3.11aまでVer.4.00から
    5WAYナビ離す0200
    4204
    8208
    選択16216
    アルファベットキーボード2913
    テンキー3014
    コントラスト調整3111
    時計(シルクスクリーン)320
    時計(バーチャル)331
    ブライトネス調整3413
    カメラのシャッター408
    T3のケースを閉じる 4
    T3のケースを開く 5
    Soft Graffitiエリア1 15
    エリア2 16
    エリア3 17
    エリア4 18
    ※GetEventType()=7
5WAYナビの操作については、1回の操作で2度のイベントが発生する事があります。
これは、SetEventHandledで回避できます。
詳細は、新しくなったSpecEventsというサンプルプログラムを参照して下さい。



■SysInfo(9)、(10)、(11)

これらは、イベントコードよりは詳細な情報を返します。
詳細は、PalmOS ReferenceのKeyDownEventを参照してください。


    ●SysInfo(9)は、何らかの変化を生じたボタンに独自に割り当てられたID番号を返します。
    Tungsten|Tでは、次のような値を返します。
      ボタン名SysInfo(9)
      5 way1283
      Schedule516
      Address517
      ToDoList518
      Memo519
      Up11
      Down12
      Home264
      Menu261
      Alpha Keyboard272
      Num. Keyboard273
      Power520
      silk scr.clock1280
      Brightness1282

    ●SysInfo(10)は、サブID番号です。
    ボタンの状態によっても、値が変化しますので、SysInfo(11)と組み合わせてチェックする必要があります。
    Tungsten|Tの5Wayナビでは、次のようになります。
      【例】Tungsten|Tの5way
       SysInfo(11)=8(通常の押下)SysInfo(11)=72
      オートリピート中
       押した離した
      2572561
      5145122
      102810244
      205620488
      中央4112409616

    ●SysInfo(11)は、キーマスクです。
    特にキーボードのついたマシンに重宝する情報ですが、SysInfo(10)と併用することで詳細なボタンの状態を知ることが出来ます。
    以下が、その値ですが、詳細は、PalmOS5 Referenceを参照してください。
    Tungsten|Tでは、次のようになります。
      ビット(値)マスク名内容
      1(1)shiftKeyMaskGraffiti、Graffiti2が、一時Shiftモードにあります。
      2(2)capsLockMaskGraffitiがCAPSシフトモードです(Graffiti2ではサポートされていません。)
      3(4)numLockMask Graffiti、Graffiti2が数値入力モードです。
      4(8)commandKeyMaskメニューやボタンなどの操作が行われました。
      5(16)optionKeyMask Not implemented. Reserved.
      6(32)controlKeyMask Not implemented. Reserved.
      7(64)autoRepeatKeyMaskオートリピート状態になっています。
      8(128)doubleTapKeyMask Not implemented. Reserved.
      9(256)poweredOnKeyMask電源ONによって行われたキー操作です。
      10(512)appEvtHookKeyMask System use only.
      11(1024)libEvtHookKeyMask System use only.

      【例】 SysInfo(11)=136(10000100)の時、これは「2度押し」を意味します。
      通常のボタン操作ではSysInfo(11)=8、押しつづけるとSysInfo(11)=72を返します。



■拡張ライブラリが増強されました

 拡張ライブラリの作成に関する仕様が大幅に強化されました。
これらの詳細はテクニカルノート5d5eを参照してください。



■アプリケーションを販売しやすくなりました

「Pocket Purchase」に対応しました。
一部のシェアウェアや製品などでは、試用版機能を持ったものを見かけますが、あの機能を自分のアプリケーションに組み込むことが可能になります。
詳細は、テクニカルノート28を参照してください。



■バージョン文字列の取得

 新しい関数GetVersion(prcName)によって、各ファイルのバージョン文字列を取得できるようになりました。
得られるバージョン文字列は、IDEで指定したプログラムのバージョンなので、例えば「1.5b」などと指定したものについては、そのままの文字列を取得することが出来ます。
NS Basicのランタイム(ファイル名は、NSBRuntime)のバージョンも「4.0.0」と得ることが出来ます。
もし、指定したPRCファイルが見当たらない場合「ERR:Database not found」の文字列を返します。
ちなみに、ベータ版では単に「Database not found」だったのですが、英語圏以外のユーザーは、エラー時には自国語で表示をするだろうと思いましたので、単純にエラーであることが分かるようにしてもらいました。
エラー処理が必要な場合、先頭の3文字をLeft()などで取り出して「ERR」かどうか調べることで、チェックが出来ます。



■多国語への対応

 IDEは、新たに「ポルトガル語(ブラジル)」「フランス語」「ヘブライ語」「ロシア語」に対応しました。



■ROM付きエミュレータ

 Palm OS Emulator(POSE)は、PalmOS Ver.4.1のROMがバンドルされた形で提供されるようになりました。

    ※英語版のROMのみがバンドルされていますので、日本のユーザーにはちょっと使いづらいかもしれません。
    また、ROMはバンドルされていますが、ランタイムが含まれている訳ではありません。


■シミュレータ同梱

 POSEに加え、PalmOS Simulatorも同梱されています。
これによって、今までの「POSEを起動してすぐ実行」というオプションの他、Simulatorも選択できるようになりました。
バンドルされているROMは、Ver.5.3と表記されています。

    ※こちらも英語版のROMのみがバンドルされています。今のところ、見通しは立たないような雰囲気です。
    こちらも、ランタイムは含まれていないので、ダウンロードすることをお忘れなく。