HALの不定期雑記 電子小物の話題など

自作ソフト/過去記事のまとめ Fossil Wrist PDA 関連リンク集
Softwares for the Fossil Wrist PDA (English page)

スポンサーサイト   [English]

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

HalLaunch for WristPDA   [English]

サンプル画面 HalLaunch は Fossil/Abacus Wrist PDA with Palm OS 専用のランチャーソフトです。

いわゆるアプリ起動ボタンの無い WristPDA ですが,HalLaunch を使うことでどんな状況からでも1~2回のハードキー操作だけで素早くアプリ/DAを起動できます。


目次

主な特徴
更新履歴
ダウンロードと配布条件
インストール/アンインストール
とりあえず使ってみる

メイン画面の説明
設定画面の説明
割当変更画面の説明
  割り当てる機能:アプリ/パネルアプリ
  割り当てる機能:DA
  割り当てる機能:キーコード発生
  割り当てる機能:特殊機能
    特殊機能:編集機能
    特殊機能:登録抹消
    特殊機能:アプリ再呼び出し
複数のコマンドページの使用について
おまけアプリ ButtonF.prc

その他
既知の問題
トラブルシューティング
ソースコードについて
謝辞

主な特徴

・任意のアプリ実行中または時計モード表示中でも,1~2回のハードキー操作だけで素早くアプリ/DAを起動可能

・本体右側の5つのキーに各種機能を割り当てて使用する
・複数のコマンドページを切り替えて使用可能

・10個のクイック起動機能(5つのキーの長押し/キーの長押し+バックキーの同時押し)
・復帰時起動機能(時計モードからの復帰時に任意のアプリを起動可能)

・割り当てられる機能はアプリ/パネルアプリ/DA/キーコード/特殊機能
・クイック起動にDAを割り当てることでいわゆるDAランチャとしても機能する(一部制限あり)
・すぐに時計モードに移行させる等のちょっとした特殊機能
・最近起動した10個のアプリをキーの長押しで順番に再呼び出しする機能
・キーコードとして普通の Palm 機にはついているメモ帳ボタン等のコードを発生することでメモ帳の起動,カテゴリ切り替えなどがキーの長押しなどで可能

目次へもどる

更新履歴

・2005/4/27 ver 0.3b - 新規公開
・2005/5/16 ver 0.6b - ボタン表示が化ける問題の修正。コマンドバー呼び出し機能追加。
・2005/6/26 ver 0.9b - 沢山の機能追加。
・2005/6/28 ver 0.9b2 - コマンドショートカットが無効になっていたバグの修正。
・2005/8/4 ver 0.91b - 細かい動作の改善。詳しくは→こちら
・2005/12/12 ver 0.93b - プログラムを2つに分離して常駐メモリ量の削減。その他細かい改善。詳しくは→こちら

目次へもどる

ダウンロードと配布条件

本ソフトはフリーウェアです。
このソフトウェアは一切無保証です。いかなる損害に対しても私は責任を負えません。
再配布については事前に御連絡下さい。詳しくは同梱の Readme を読んで下さい。
本アプリは Fossil/Abacus Wrist PDA with Palm OS 専用のアプリです。他機種にはインストールしないで下さい。
インストールする前にバックアップを取っておくことを強くお勧めします。

ダウンロード → HalLaunch_0.93b.zip (45 KB)

バグなどありましたら,最新のエントリにコメント/このエントリにコメント/私にメール,等どのような手段でもいいので是非お知らせください。

目次へもどる

インストール/アンインストール

まずは本体のバックアップを行って下さい。

・ver 0.3b より新しいバージョンをお使いの方は,復帰時起動/長押し起動を一度オフにしてソフトリセットし,旧バージョンを削除しないでそのままアーカイブ内の HalLaunch_J_0.93b.prc(または英語版の HalLaunch_E_0.93b.prc)および HalHackCore_0.93b.prc を HotSync で上書きインストールしてください。以前の設定は引き継がれます。

・ver 0.3b をお使いの方は,復帰時起動/長押し機能をオフにしてソフトリセットし,一度 HalLaunch を削除してから新規にインストールして下さい。

アンインストールする時は,復帰時起動/長押し起動を一度オフにしてソフトリセットし,それから削除を行って下さい。

目次へもどる

とりあえず使ってみる

1)まずはキーの長押しで HalLaunch が起動できるように設定します。

メイン画面 インストールしたらまずは HalLaunch を起動してメイン画面左上の“設定”ボタンをタップして設定画面を開いて下さい。

設定画面 ここで“クイック起動/キー置換”の設定を“ON”にして下さい。
ソフトリセットをしていいか聞いてくるので“OK”をタップしてソフトリセットしてクイック起動を有効にしてください。

リセットしたら再度 HalLaunch を起動してメイン画面の“割当変更”ボタンをタップして次の画面を開いて下さい。
割当変更画面 上のほうにある横向き三角のページ移動ボタンをタップするか,ハードウェアのページアップ/ダウンキーを押してページインジケータが [*HoldOn*] になるまでページを切り替えてください。

そしたら5つの機能カテゴリの内 [Appl] をタップしてアプリの一覧を表示し,下のほうの上下三角のリスト移動ボタンをタップするか,ハードウェアのロッカーアップ/ダウンキーを押して [HalLaunch] を選択状態にして下さい。

[HalLaunch] が選択状態で右端のボタンのどれかをタップすると HalLaunch が対応するキーの長押しに割り当てられます。
右側の5つのボタンは上から順番にハードウェアの PageUp / RockerUp / RockerPush / RockerDown / PageDown に対応します。

例えば,一番下のボタンに HalLaunch を割り当てれば,以降どのアプリが起動中でもページダウンキーを長押しすれば HalLaunch が起動します。

以上は設定なので行うのは一度だけでいいです。


2)使ってみる。

DateBook 1.任意のアプリ(ここでは DateBook)でページダウンキーを長押しする。

HalLaunch すると HalLaunch が起動するので,
2.メモ帳に対応したキー(ここではロッカーダウン)を普通に押す


MemoPad → メモ帳が起動する。

普通,ページアップ/ダウンやロッカーキーは項目の“移動”に使われますけど HalLaunch ではこれら5つのハードキーを全て“決定”のために使います。そうすることでいわゆるアプリケーションボタンの無い WristPDA でもアプリを素早く起動できるようにしているのです。

これが基本的な使い方です。他にも HalLaunch を長押しで起動したように任意のアプリを任意のキーの長押しで直接起動したり,アプリではなくDAを起動したり,いろんな使い方が出来ます。

目次へもどる

メイン画面の説明

メイン画面 [設定]ボタン:長押し起動や時計復帰起動の有効などの設定を行う設定画面を開きます。

[割当変更]ボタン:ボタンに割り当てる機能を編集する画面を開きます。

[Pg n/N]ボタン:複数のコマンドページを使っている場合,次のコマンドページへ移動します。n/Nは“現在のページ番号/総ページ数”をあらわします。

[Pg Back]ボタン:複数のコマンドページを使っている場合,前のコマンドページへ移動します。

右側の大きな5つのボタン:割り当てられた機能を実行します。画面のタップでも実行できますが,基本は対応するハードウェアキー(上からPageUp/RockerUp/RockerPush/RockerDown/PageDown)の操作で割り当てられた機能を実行します。

目次へもどる

設定画面の説明

メイン画面の“設定”ボタンをタップすると基本設定画面が開きます。

基本設定画面 時計からの復帰時に起動:ONにすると時計モードからPDAモードに復帰した時に,指定したアプリを起動します。起動するアプリの指定は割当変更画面でページインジケーターが [*WakeUp*] の状態で行います。

クイック起動:キーの長押し,キーの長押し+バックキーによるクイック起動を有効にします。有効/無効を切り替えるにはソフトリセットが必要です。
クイック起動する機能の指定は割当変更画面でページインジケーターが [*HoldOn*],[*Back+*] の状態で行います。

長押し時間:キーの長押し判定を行う時間を設定します。

時計→DA 自動終了:時計モードに移行するときに DA を自動的に終了する機能を有効にします。
但し終了できるのは HalLaunch から起動した DA のみです。
重要な注意: DA によっては(AppStopEvent を処理してくれないため)自動的に終了させられないものがあります。
この場合時計モードに移行することが出来ずにずーっと PDA モードのまま動き続けてバッテリの消耗を引き起こす可能性があります。
近日(?)公開予定の新版の HalWatch ではそちら側で DA 起動時の対策をしているので HalLaunch 側のこの DA 停止機能は使わないことを推奨します。

先頭記号表示:反転状態にするとアプリ以外の機能,DAや特殊機能などを割り当てた場合にボタンの名前の先頭に機能カテゴリを表す接頭辞 "D:" や "S:" 等を表示します。

目次へもどる

割当変更画面の説明

メイン画面の“割当変更”ボタンをタップすると機能割り当て編集画面が開きます。
この画面での操作は基本的に左から右へと行います。

割当変更画面 ページ移動ボタン:横向きの三角ボタンのタップ,またはハードウェアの PageUp/PageDown で現在編集対象となっているページを切り替えます。

ページインジケータ兼ページ数変更ボタン:このボタンは現在のページを表すページインジケーターであると同時に,使用するコマンドページの数を変更するためのダイアログを開くボタンでもあります。使用するコマンドページの数を変更したい時はこのボタンをタップして現れるダイアログで設定してください。

インジケータの表示が [Pg n/N] の時は,編集対象がメイン画面に現れるコマンドページでることを表します。nは現在のページ番号,Nは総ページ数を表しています。
同様に,[*HoldOn*] = 長押し起動への割り当て,[*Back+*] = 長押し+バックキー起動への割り当て,[*WakeUp*] = 時計からの復帰起動への割り当て,を行うモードであることを表します。

なお“設定”画面で“クイック起動”がONになっていなければ [*HoldOn*],[*Back+*] のページは表示されません。同様に“時計からの復帰時に起動”がONになっていなければ [*WakeUp*] のページは表示されません。

全ての機能が全ての起動方法に割り当てられるわけではありません。アプリはコマンドページでもクイック起動でもどの起動方法にも割り当てられますが,特殊機能の内いくつかはコマンドページには割り当てられなかったり逆にクイック起動には割り当てられなかったりします。詳細はそれぞれの機能の項目を参照してください。

機能カテゴリ選択ボタン:ボタンに割り当てる機能のカテゴリを選択します。ここで選択を行うと機能リストの表示が切り替わります。現在機能カテゴリとしては Appl = 普通のアプリ,Panl = pref 内のパネルアプリ,DA ,Key = キーコード発生,特殊 の5つがあります。それぞれの詳細については別項を参照してください。

機能リスト:選択したカテゴリの機能(アプリとかDAの)一覧を表示します。上下向きの三角ボタンのタップ,またはハードウェアの RockerUp/Down でリストを移動します。

割り当てボタン:ボタンをタップすると現在機能リストで選択状態になっているものがそのボタンに割り当てられます。

操作の流れは ページを選択する → 機能カテゴリを選択する → 機能をリストから選択する → 割り当てボタンをタップする,というように行います。例えば RockerEnter の長押しで JotChange DA を実行するようにするには,PageUp/PageDown を操作してページインジケータが [*HoldOn*] になるまでページを移動 → 機能カテゴリのうち [DA] をタップ → RockerUp/Down でリスト移動し JotChange DA を選択状態にする → RockerEnter に対応した上から三段目の割り当てボタンをタップする → ボタンの表示が JotChange DA に更新される。

ボタンを選択してから割り当てる機能を選ぶほうが直感的かなという気もするのですけど,今実装してある,機能を選択してから割り当てボタンを押す,という流れのほうが操作のステップが少なくて済むんじゃないかと思ってこういう風にしてます。

クイック起動は長押し5つと長押し+バックキー5つの合計10通り指定できますが,10通り全て指定するのは推奨しません。なぜならクイック起動を割り当てたキーではキーリピートが発生しなくなるという本質的な制限があるためです。キーリピートが使えなくなると項目の移動やスクロールなどが不便になってしまうので PageUp/PageDown のペア,または RockerUp/RockerDown のペアには長押し起動を割り当てないことを推奨します。
一旦割り当ててしまったクイック起動ボタンの登録は解除することが出来ます。詳しくは特殊機能:登録抹消を参照してください。

目次へもどる

割り当てる機能:アプリ/パネルアプリ

普通のアプリはコマンドページ,クイック起動,時計からの復帰時起動のいずれにも割り当て可能です。

パネルアプリはコマンドページ,クイック起動に割り当て可能です。

目次へもどる

割り当てる機能:DA

DAはコマンドページ,クイック起動に割り当て可能です。

クイック起動で起動した場合には,いわゆるDAランチャーから起動した場合とほぼ同じように使えますが,一部機能制限があります。クイック起動する場合キーの長押し判定を行う関係上その間のキーイベントを全てキャンセルしています。従って PBToggleDA のように画面表示を行わずにキーコードを発生してすぐに終了するようなDAはその機能が事実上実行されません。
HalLaunch はキーコード発生機能もあるので単一のキーコードの発生ならこの機能を使うことで代替出来ます。PBToggleDA の代替としては 0xf2 を発生してやれば PBInline のオンオフを切り替えられるみたいです。

多くのDAを使いたい時は,それ自身がDAであるDAランチャ,例えば LDA を HalLaunch のクイック起動に割り当てて使うと便利だと思います。LDA は WristPDA 用に作られたわけではないですけど PageUp/PageDown キーでの起動に対応した項目があるのでそこに良く使うDAを割り当てておけば,長押しで LDA 起動 → PageUp/Down でDA起動,とハードキーの操作だけで使えて便利です。また LDA 経由なら PBToggleDA 等もちゃんと使えるみたいです。

目次へもどる

割り当てる機能:キーコード発生

キーコード発生機能はコマンドページ,クイック起動に割り当て可能です。

HalLaunch がやっていることはキーイベントを発生しているだけの非常に単純なものですが,いくつかのキーイベントはシステムに処理されて便利な機能を実行できます。

おそらく一番有用なのはリストの上のほうにある4つでしょう。内部的には vchrHard1 ~ vchrHard4 というキーコードを発生しているだけなのですが,これは普通の Palm の 予定表ボタン ~ メモ帳ボタン を押した時に発生するキーコードで,これがシステムに処理されるとそれぞれのハードボタンが押された時と大体同じような働きをします。
例えば H4 MemoPad (vchrHard4) を長押しに割り当てておくと,任意のアプリ→(長押し)→メモ帳起動→(長押し)→メモ帳のカテゴリ移動 …,というように使えます。またこれらのキーコードによって起動するように設定できるアプリや Hack なども一部使えるものがあるようです。
但し,HalLaunch が発生するのはキーを“押し下げた”というイベントだけなのでキーを“離した”というイベントを必要とするアプリなどでは完全には真似をすることが出来ません。

主なキーコードとその働きを簡単に列挙すると,

0xf2 : PBInline のトグル
vchrCommand : コマンドバー表示
vchrMenu : メニュー表示
vchrLaunch : 標準に設定されているランチャーを起動
vchrKeyboard : スクリーンキーボード表示
vchrContrast : コントラスト調節パネル表示
vchrJogRelease : クリエのジョグダイアル(を離したという)イベント

などなど。他にもありますが私も全部は把握してません。

またリストに無いキーコードを登録することも可能です。具体的には特殊機能:編集機能を参照して下さい。

目次へもどる

割り当てる機能:特殊機能

特殊機能カテゴリには次の項目があります。[!詳細設定],[時計モード],[コマンドバー],[画面オフ],[リセット],[次ページ],[前ページ],[順次再呼出],[一つ再呼出],[!登録抹消]。

これらの内 [!詳細設定]についてはこちらで,[!登録抹消]はこちら,[順次再呼出],[一つ再呼出]についてはこちらで説明します。

[時計モード]:直ちに時計モードに移行します。コマンドページ,クイック起動に割り当て可能です。
[コマンドバー]:コマンドバーを表示します。コマンドページ,クイック起動に割り当て可能です。
[画面オフ]:画面を消去します。ひょっとしたら普通の Palm の電源オフに相当するかもしれません。コマンドページにのみ割り当て可能です。
[リセット]:リセットします。コマンドページにのみ割り当て可能です。
[次ページ]:HalLaunch のコマンドページを次のページに切り替えます。コマンドページにのみ割り当て可能です。
[前ページ]:HalLaunch のコマンドページを前のページに切り替えます。コマンドページにのみ割り当て可能です。

目次へもどる

特殊機能:編集機能

HalLaunch ではボタンの表示に大きなフォントを使っているので長い名前は全部は表示できません。これでは名前の大事な部分が後ろのほうにあるような場合に困ります。そこで表示する名前をユーザーが書き換えられるようにしました。

“機能カテゴリ=特殊”の中の[!詳細設定]を選択状態にして割り当てボタンをタップすると,そのボタンについての詳細設定ダイアログが開きます。または割り当てボタンを押して,そのまま離さないでボタンの外までドラッグしても設定ダイアログを表示できます。

詳細画面 このダイアログ上でボタンに表示される名前を自由に編集することが出来ます。(但し,Creator ID が 'Foss' な時計アプリでは編集不可です)

機能のカテゴリがアプリ,特殊機能の場合にはオプションの数値を指定可能です。この数値が意味を持つのは HalLaunch をクイック起動に指定した場合と特殊機能の[順次再呼出]の場合のみです。

HalLaunch をクイック起動する時,opt == 0 なら前回のページが開きますが,opt == 1 なら前回終了時のページがどこであっても1ページ目が表示されます。だから例えばページアップの長押しではいつも HalLaunch の2ページ目が開き,ページダウンの長押しでは3ページ目が開くようにする,といった使い方も可能でしゅ。

[順次再呼出]の場合は,アプリ切り替えの待ち時間が“この数値 x 100 ms”となります。

詳細・キー 表示されるIDは,割り当てられている機能カテゴリによって意味が変わります。アプリ/DAでは Creator ID,キーコード発生ではキーコードの16進表示,特殊機能では機能IDが表示されます。この部分も編集可能ですが特に必要が無ければキーコード以外はいじらないほうがいいと思います。

あらかじめリストに表示されていないキーコードを発生させたい時は,ここにキーコードを16進数で指定して下さい。

目次へもどる

特殊機能:登録抹消

クイック起動に機能を割り当てると必然的にそのキーではキーリピートが出来なくなります。一度割り当てた機能を解除するには特殊機能から[!登録抹消]を選択状態にして割り当てボタンをタップすれば,そのボタンへの割り当てがクリアされます。クリアされるのは長押し起動,長押し+バックキー起動のみです。それ以外のページではクリアできません。

目次へもどる

特殊機能:アプリ再呼び出し

HalLaunch は最近起動した10個のアプリを覚えていて,それらを再度呼び出す仕組みを提供します。
記憶するアプリは HalLaunch から起動されたものに限りません。普通のランチャやその他のアプリから起動された物も履歴に記録されます。

[順次再呼出]はその性質上長押し起動にのみ割り当て可能です。
この機能を割り当ててキーを長押しすると,最近起動した10個のアプリを順番に切り替えて起動し続けます。つまりずーっと押しっぱなしにしていればアプリが次々と切り替わっていくので,目的のアプリが表示されたらキーを離せばいいのです。

アプリ切り替えの時間間隔はデフォルトでは通常の長押し時間の2倍です。この値は詳細画面を開いてオプション数値を指定することで変更できます。オプションの数値 x 100 ms が切り替え間隔の時間になります。

[一つ再呼出]は長押し起動,長押し+バックキー起動に割り当て可能です。
一度押すたびに10個の記憶しているアプリを順番に再度起動します。
[順次再呼出]を行った直後に[一つ再呼出]を実行すると普段とは逆順で起動します。つまり[順次再呼出]で一つ行き過ぎてしまった時に[一つ再呼出]を実行すれば行き過ぎたアプリに戻ることが出来ます。

なお HalLaunch,標準のランチャ,Preference,クリエーターが 'Foss' の時計アプリは履歴に記録されません。したがってこの再呼び出し機能では呼び出されません。

目次へもどる

複数のコマンドページの使用について

最大で32のコマンドページを使用することができますが,実用性を考えるとせいぜい3ページ程度にしておいたほうがいいと思います。

使用するページ数の設定は割当変更画面の上のほうのボタンを押して,ページ数設定ダイアログを開いて行ってください。

メイン画面でのページ移動は画面上のボタンタップでも可能ですが,ハードキーを使ったページ移動がお勧めです。HalLaunch 自身を長押しで起動するように設定していれば,HalLaunch 上で同じキーを長押しすることでページ切り替えを行います。例えばページダウンキーの長押しに HalLaunch の起動が割り当ててあれば,

  任意のアプリ →(PageDown 長押し)→ HalLaunch 起動 →(PageDown 長押し)→ HalLaunch のコマンドページ切り替え →(PageDown 長押し)→ HalLaunch のコマンドページ切り替え …

という感じで使えます。もちろん特殊機能のページ移動コマンドをボタンに割り当てておいてもいいですが,この場合アプリ起動に使えるキーが一つ減ってしまいます。

また,特殊機能:編集機能で HalLaunch の長押し起動にオプションを設定してやることで,長押し起動時に開くページを指定することが出来ます。これによって例えば,

  PageUp 長押し → HalLaunch の1ページ目を起動
  PageDown 長押し → HalLaunch の2ページ目を起動
  PageDown 長押し+バックキー → HalLaunch の3ページ目を起動

として,立ち上げてからページ移動するのではなく立ち上げる時にすでにページを指定しておく,といった使い方も可能です。

目次へもどる

おまけアプリ ButtonF.prc

普通の Palm には含まれているパネルアプリ Buttons と同じようなパネルアプリ ButtonF.prc をおまけアプリとして同梱してあります。
インストールすると Pref に組み込まれます。ButtonF にて設定することでキーコード発生機能での呼び出し/カテゴリ切り替えを,PsMemo など代替アプリに対しても適用することができます。

目次へもどる

その他

長押しの判定を行うためにシステムが KeyUp イベントを返してくれれば楽なのですが,KeyDown イベントしか返してくれないみたいなので,キーが押されたら長押しの判定のために独自イベント EventID = firstUserEvent + 160 を繰り返し発行して,その間キーの状態をずーっと監視し続けることで長押しの判定を行っています。
従ってもし何らかのアプリが同じイベントIDを使っていると,そのアプリでは長押し判定がおそらく行えません。それだけでなくそのアプリでエラーが起こる可能性があります。
もしそのようなアプリを見かけましたらお知らせ下さるようお願いします。


HalLaunch では SysSetTrapAddress() を利用してリセット直後に EvtGetEvent(),SysUIAppSwitch(),SysAppStartup() を置き換えています。しかも置き換えた EvtGetEvent() の中では無限ループを使っています。ちょっとでも Palmware の開発を行ったことがある方ならこれがいかに危険なことかお分かりいただけると思います。
もちろん,予期しない無限ループに陥った場合に強制的にループを脱出するための安全装置は仕込んであります。その際画面に

HalL[%d]HK%d S%d K%d T%d (実際には %d は数字に置き換えられる)

のようなエラーメッセージを表示します。このような表示が無いことを願いますが,もし見かけた方はその時使用していたアプリ,行った操作,表示されたメッセージのパラメータなど,わかる範囲で結構ですので是非御報告下さい。


特殊機能:編集機能で説明したオプションが0で無い場合,SysAppStartup() が実行されたタイミングで feature としてこの値がメモリ上に置かれます。この値はアプリの側で

UInt32 opt;
FtrGet('HalL', 9, &opt);

を実行することで参照することが出来ます。HalLaunch の起動時ページ指定はこの変数を参照して行っています。この値は任意のアプリから参照可能なはずです。

目次へもどる

既知の問題
目次へもどる

トラブルシューティング

・本ソフトを使っていて何かトラブルに遭遇した場合,ページアップキーを押しながらリセットを行って,拡張機能を無効化してみて下さい。拡張無効で起動したあと本アプリを本体から削除し,その後普通にリセットして下さい。
またトラブルの状況など,できれば具体的に報告していただけるようお願いします。

目次へもどる

ソースコードについて

正式版を公開したらソースコードも公開する予定です。正式版公開前でもソースが欲しいという方はメールして下さい。

目次へもどる

謝辞

アプリケーションの一覧作成方法や設定情報の保存方法など,Palm アプリ作成初心者の私に丁寧なアドバイスを下さったひぐちさんに深く感謝いたします。

DAランチャーについては Hoshi さんの App/DA Launcher のソースコードを参考にさせて頂きました。Hoshi さん,ソースの公開ありがとうございます。

目次へもどる
スポンサーサイト
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。