KeyHelper Applet 開発版(0.9.x) 新機能説明 last modified 2003/04/01 開発バージョンの機能説明です。 設定方法等が変わる可能性もありますのでご了承下さい。 注) 本体メモリ以外へのインストールはテストしていませんので ご注意下さい。不具合報告も出ています。 ■ 変更履歴 ○ 0.9.10 ・ メニューの最初の項目がサブメニューだと動作がおかしかったのを修正。 ・ reload()の処理を高速化。 ・ タスクセレクターの最小表示項目数を設定可能に。 ○ 0.9.9 ・ 階層型メニューを実装。 ・ 0.9.8で日付が更新されなくなっていたので修正。 ・ .confで行コメントを可能に。(行頭#はコメント) 但し、行の中に必ずイコール"="が入っている必要があります。 (つまり普通に設定を書いてその行頭に#を付ければ大丈夫ということです) ・ メニューをスペースキーでも選択可能に。 ○ 0.9.8 ・ 0.9.6,0.9.7で発生していたロード時のリセット問題を修正。 ・ 日付書式展開で日本語を扱えなかったので修正。 ・ 設定方法追加。(設定方法をこちらに移行します) ○ 0.9.7 ・ 任意文字コード対応がうまくいっていなかったので修正。 ○ 0.9.6 ・ 日付書式展開機能(改行/タブを含む) ・ キーワード展開機能 ・ 任意.confファイル読み込み機能 ・ ユーザー定義修飾キーが1つしか定義できなかったので修正。 ○ 0.9.5 ・ キーボードフィルタをセットするタイミングを変更。 0.9.4で変更していたのですが、Home画面に切り替わる時にも セットしてしまっていたので[Home]キーによるランチャー動作が 動かなくなってしまっていました。 ・ .confファイルの読み込みを最適化。 .confファイルの読み込みを最小限に済ませられるようにしました。 ○ 0.9.4 ・ リセット問題のバグ修正。(やっと原因がつかめました) 0.9.3以前のバージョンのアンインストール時にリセットがかかるのを 防ぐ為にはアンインストール前(バージョンアップ前)に下記のコマンドを 実行しておいて下さい。 qcop QPE/KeyHelper debug(int) 1 ・ コマンド/シェル実行機能実装。 ・ qcopメッセージ送信機能実装。 ・ テキスト貼り付け機能実装。 ・ keyhelper.conf 任意文字コード対応(UTF-8,SJIS,EUC,JIS) ・ ランチャーメニューで任意アイコン表示機能実装。 ○ 0.9.3 ・ キーリピート無効化機能。 ・ 任意XMLファイル読みこみ機能。 ・ Anthy対応 (03/15追記) したつもりだったんですけどまだダメでした。 Anthyの入力画面が出ていなくてもAnthyが選択されている状態だと、 入力可能な部分をタップするとキーボードフィルタを持って行かれてしまいます。 現状ではAnthy以外のIMを選択した状態にしておけば問題なく動きます。 ・ インストール時のリセット問題対策 (0.9.2で直したのともう一つそれらしい部分を修正。デストラクタのバグなので 0.9.3のインストール時にはリセットがかかる可能性があります) ○ 0.9.2 ・ KeyHelperコントロールシェル khctl 作成 ・ qcop QPE/KeyHelper "version()" でタスクバーにバージョンを表示 ・ reload()時にもバージョンを表示 ・ 0.9.1でリセットがかかって動かなくなる事があるらしいので 設定読み込み時に一端disable()にしてから読み込むように修正してみた。 (これが原因かどうかは掴めていません) ○ 0.9.1 ・ メニューランチャー(メニュー選択形式のランチャー)実装 ・ Capslock状態反転対策 ・ タスクセレクターのアクセスキーを設定可能に ・ タスクセレクター、メニューランチャーのタイトル部分のスタイルを指定可能に ・ ランチャー機能の設定でファイルのフルパスを指定した場合に関連する アプリケーションがあればそれを実行。(シェル等の実行は実装中…) ・ リピーター機能の使用/不使用の切り替え (リピートが全くなくなるわけではなく、 KeyHelperでリピートさせるかどうかの切り替えです) ・ ランチャー機能を複数設定できるように変更 ・ 拡張動作時にトグル状態をキープするかの設定 ○ 0.9.0 ・ タスクセレクター(メニュー選択形式のタスク切り替え)実装 ・ キーコード指定に0x????形式も使えるように修正 ・ 拡張動作で実際には動作しなかったキーをそのまま生かすように変更。 (例えばランチャーで設定していないキー等) -> 同じ修飾キーでキーマッピングにも使用できるようにするため。 ・ トグル動作にタイムアウトを設定。(デフォルト10秒) ■ メニュー選択形式のタスク切り替え(タスクセレクター) 拡張動作にメニュー選択形式のタスク切り替えを追加しました。 (WindowsのAlt+Tabと同じような切り替え方法です) kind に "select" を指定して下さい。 例) 下記の例は [Shift]+[Menu] にこの操作を割り当てる設定です。 デフォルトではアクセスキーが 123456789... の様に割り当てられていきますが 変更したい場合には keyhelper.conf の [Global] セクション の AccessKeys に設定を行ってください。 例) [Global] AccessKeys = ABCDEFGHIJKLMNOPQRSTUVWXYZ ■ メニュー選択形式のランチャー(メニューランチャー) 拡張動作にメニュー選択形式のランチャーを追加しました。 kind に "menu" を指定して下さい。 例) 下記の例は [Shift]+[Address] にこの操作を割り当てる設定です。 アプリケーションの登録は keyhelper.conf の [Menu] セクションで行います。 設定方法はキーランチャーとほぼ同じです。 ただし、表示名、表示順、アクセスキーの設定のためにキー部分の 指定が変わっています。 例) 01_A = Applications/textedit 02_B = Applications/todo 03_memo(&C) = Applications/textedit /home/zaurus/Documents/memo.txt 先頭の(数字_)の部分は表示順の制御の為の部分です。 (Configクラスが QMap に読み込んでいるので勝手にソートされてしまう為) 実際のメニューには表示されません。 その後に1文字のみ記述すると記述した文字がアクセスキーになります。 2文字以上記述した場合にはそのままメニューに表示される文字列になります。 (アクセスキーは &X の形式で記述します) keyhelper.conf を UTF-8形式で記述すれば日本語も使用できます。 -> 0.9.4で任意文字コードに対応しました。 ■ ランチャー機能の複数設定 拡張動作設定の kind を "launch??", "menu??" で指定することで 複数の設定を持てるようにしました。 (キーが余ってないんで意味無いかも…) 対応する keyhelper.conf の設定は launch -> [Launch] menu -> [Menu] launch1 -> [Launch1] menu1 -> [Menu1] の様になります。 ■ メニューのタイトル部分のスタイル指定 keyhelper.conf の [Style] セクションで各メニューの スタイルを指定可能にしました。 {kind}の 部分は keyhelper.xml で指定した kind と同じ文字列を指定して下さい。 FontColor_{kind} = #RRGGBB BgColor_{kind} = #RRGGBB Caption_{kind} = タイトル名 例) [Style] FontColor_select = #FFFFFF BgColor_select = #000000 Caption_select = TaskSelector ■ リピーター機能の使用/不使用/無効の切り替え KeyHelperのリピート機能を使用するかしないかの切り替え設定です。 KeyHelperでリピートさせない方が軽いかもしれないのでとりあえず 実装してみました。(効果ありらしい) 下記の様に設定するとデフォルトで不使用になります。 0.9.3 で リピートを無効にする機能を追加しました。 それに伴ってデフォルト設定の方法を変更しました。 モードは下記のようになります。 0: リピーター不使用(システムでリピート) 1: リピーター使用(デフォルトです) 2: キーリピート無効 例) リピータ不使用をデフォルトにする場合 qcop メッセージで動的に切り替えることが出来ます。 qcop QPE/KeyHelper "repeater(int)" モード リピーター有効化 qcop QPE/KeyHelper "repeater(int)" 1 リピーター無効化 qcop QPE/KeyHelper "repeater(int)" 0 キーリピート完全無効化 qcop QPE/KeyHelper "repeater(int)" 2 ■ 拡張動作時のトグル状態キープ設定 メニュー系の拡張動作の為に拡張動作を行った場合には トグル状態をキープするようにしています。 [Shift] -> [Home] -> [Home] -> [Home] の様な操作を可能にする為です。 このような動作をしない方が良い場合には keyhelper.conf の [Global] セクションで [Global] KeepToggle=0 の様な設定を記述することでキープしないように設定できます。 デフォルトはキープする設定になっています。 ■ トグル動作のタイムアウト設定 修飾キーのトグル動作をタイムアウトさせるようにしました(デフォルト10秒) タイムアウトまでの時間を変更したい場合には keyhelper.conf の [Global] セクションで ToggleTimeout = 20 の様に記述すると変更できます。0を指定するとタイムアウトしません。 ■ KeyHelperコントロールシェル qcopメッセージを送信するのみのシェルです。 /opt/QtPalmtop/bin/khctl にインストールされます。 Usage: khctl {reload|enable|disable|version|repeat|norepeat|killrepeat|load} ・ reload XML設定再読込 ・ enable 有効化 ・ disable 無効化 ・ version バージョン表示 ・ repeat リピーター有効化 ・ norepeat リピーター無効化 ・ killrepeat キーリピート完全無効化 ・ load XML設定再読込(ファイル指定) ・ config conf再読込(名前指定) ・ default confをデフォルトに戻す ■ 任意XML設定ファイル読みこみ機能 デフォルト(keyhelper.xml)または keyhelper.conf で指定したファイル 以外のXML設定ファイルでも qcopメッセージで読み込めるようにしました。 qcop QPE/KeyHelper "reload(QString)" xmlfile の様に実行します。 xmlfile が フルパスで指定された場合には指定されたファイル、 フルパスでは無い場合には $HOME/Settings/ 以下の指定されたファイルを 読み込みます。 ■ keyhelper.conf 任意文字コード対応(UTF-8,SJIS,EUC,JIS) keyhelper.conf の [Global]セクションで CharSet = 文字コード の様に指定する事でkeyhelper.confを任意の文字コードで書けるようにしました。 例) EUCの場合 CharSet = eucJP SJISの場合 CharSet = ShiftJIS JISの場合 CharSet = JIS UTF-8の場合 無指定でUTF-8ですが、 CharSet = utf8 と書いても大丈夫です。 ■ ランチャーメニュー任意アイコン表示機能 ランチャー機能を拡張したので、アイコンを任意に指定できるようにしました。 A = アプリケーション引数アイコンファイル の様な形式で指定します。 アイコンファイルは$(QTDIR)/pics/から読み込みます。 # 厳密には Resource::loadImage() で読み込めるファイルです。 拡張子無しで指定しても大丈夫です。 例) $(QTDIR)/pics/icon1.png というファイルがあるとする。 A = Applications/textedit memo.txt icon1 or A = Applications/textedit memo.txt icon1.png ■ コマンド/シェル実行機能 ランチャー機能で、コマンド/シェルの実行を可能にしました。 A = @execコマンド(フルパス)アイコンファイル の様な形式で指定します。 コマンドの引数はスペースで区切って指定します。 例) A = @exec /usr/bin/sudo /etc/rc.d/init.d/samba start ■ qcopメッセージ送信機能 ランチャー機能で、qcopメッセージの送信を可能にしました。 A = @qcopチャンネル コマンド 引数アイコンファイル の様な形式で指定します。 チャンネル、コマンド、引数をスペースで区切って指定します。 コマンドをダブルクォーテーション(")やシングルクォーテーション(') で括る必要はありません。 例) A = @qcop QPE/KeyHelper reload() B = @qcop QPE/KeyHelper load(QString) keyhelper2.xml ■ テキスト貼り付け機能 ランチャー機能で、任意テキストの貼り付けを可能にしました。 A = @text任意テキストアイコンファイル の様な形式で指定します。 クリップボード経由でCtrl+Vでのペーストをエミュレートしているので ターミナル等では使用できません。 (Fn+Vでペースト出来るアプリでのみ使用できます) 例) A = @text abcdefghi B = @text あいうえお ■ 日付書式展開機能 ランチャー機能の設定で日付書式を展開するようにしました。 テキスト貼り付けだけでなく、エディタ起動の引数として使っても 便利かも知れません。 日付変換書式はstrftime()関数の日付変換書式に準じます。 http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strftime.3.html 主要な書式を挙げておきます。 %Y 世紀部分を含めた ( 4 桁の) 西暦年。 %y 西暦の下2桁 (世紀部分を含まない年) (00-99)。 %m 月 (10 進数表記)。 (01-12) %d 日 (10 進数表記) (01-31)。 %H 24 時間表記での時 (hour)。 (00-23) %M 分 (10 進数表記) (00-59) %S 秒 (10 進数表記) (00-61) %t タブ %n 改行 例) NOW(&N) = @text %Y/%m/%d %H:%M:%S ■ キーワード展開機能 ランチャー機能の設定でキーワード展開が出来るようにしました。 以下のキーワードをサポートしています。 %clipboard% クリップボード文字列 例) LINK(&L) = @text %clipboard% とか定義しておいて、URL文字列をカットしてテキスト貼り付け機能で 貼り付けたりしたら便利かな?とか。 ■ 任意.confファイル読み込み機能 任意の.confファイルを読み込めるようにしました。 qcop QPE/KeyHelper "config(QString)" configname 上記の qcop メッセージで任意の.confファイルを読み込む事が出来ます。 configname の指定は 拡張子(.conf)無しで指定します。 例) qcop QPE/KeyHelper "config(QString)" keyhelper qcop QPE/KeyHelper "config(QString)" keyhelper2 デフォルトの設定ファイルに戻したい場合には qcop QPE/KeyHelper "config()" で戻す事が出来ます。 ■ の指定方法追加 従来の指定方法ではちょっと分かりづらかったので 指定方法を追加しました。 (こちらの設定方法に移行する予定です) または という形式で指定する事ができるようになりました。 (shiftとかctrlとか意識する必要が無くなりました) 従来の指定方法ではASCII文字しか指定できませんでしたが コード指定(16進数)で指定する事により非ASCII文字 も指定できるようになりました。 ■ 階層型メニュー ランチャーメニューにサブメニューを持たせられるようにしました。 設定方法は下記の通り。 例) [Menu1] 1 = @menu sub1 2 = @menu sub2 [Sub1] A = Applications/textedit B = Applications/todo 3 = @menu sub3 [Sub2] C = @qcop QPE/KeyHelper reload() D = @qcop QPE/KeyHelper version() [Sub3] E = @exec /etc/rc.d/init.d/samba start F = @exec /etc/rc.d/init.d/samba stop 上記の設定で Menu1 |- Sub1(&1) | |- textedit(&A) | |- todo(&B) | |- Sub3(&3) | |- start(&E) | |- stop(&F) |- Sub2(&2) |- reload(&C) |- version(&D) の様な構造の階層型メニューが作成されます。 (ツリー表示のタイトルは実際に表示されるものとは異なります。 分かりやすいように書いているだけです) 設定の書式は下記の通りです。 A = @menu[TAB]メニュー名[TAB]アイコンファイル メニュー名は任意の文字列を指定できます。 ここで指定したメニュー名の先頭を大文字にしたセクションに サブメニューの内容を記述します。 サブメニューのポップアップはタイマーで自動的に 行うようにしています。 デフォルトでは選択されてから500ミリ秒で自動的に サブメニューをポップアップするようにしています。 変更したい場合にはkeyhelper.confで下記の様な設定をして下さい。 (1000ミリ秒に変更する場合) また、0に設定すると自動ポップアップを無効に出来ます。 [Global] SubMenuTimeout = 1000 ■ タスクセレクターの最小表示項目数設定 keyhelper.confの[Global]セクションで SelectMenuMin = 3 の様に指定すると、メニューを表示する最少の 起動アプリケーション数を指定できます。 (これ未満だとメニューを表示せずに自動的に切り替えます) デフォルトは 2 です。 (実用的なのは2か3くらいだと思います。4以上にするとうまく動きません)