hakeの日記

Windows環境でプログラミングの勉強をしています。

画面切り替えの検出(続き)- KeyHelper

画面の回転の方法についていろいろ試したところ、「縦横表示切替」のdesktopファイル内の実行コマンドをQCopで実行させれば良いことが判りました。
ターミナルから実行したところインプットスタイルで「横長画面」→「縦長画面」の切り替えしかできませんでしたけれども、KeyHelperに登録して実行したところ両スタイルにで双方向の切り替えができました。

qcop QPE/System 'execute(QString)' "__rotate"

従ってスタイルの切り替え時に、例えばZEditorを起動させたいとする場合にはZEditorの起動コマンドと、このQCopコマンドを実行させれば良いことになります。具体的な方法として2つのコマンドをkeyhelper.confの2キーランチャーセクション[Launch]に登録しておいて、1キーランチャーセクション[Launch2]において0x2009のキーコード取得時にInputHelperのローレベルキーイベントを用いて2つキーイベントを発生させます。

[Launch]
R = @qcop(TAB)QPE/System 'execute(QString)' "__rotate"
E = @qcop(TAB)Applications/zeditor

[Launch2]
0x2009 = @qcop(TAB)QPE/InputHelper key(QString) "press F10 0 1" "click e 0 1" "release F10 0 1"
   "press F10 0 1" "click r 0 1" "release F10 0 1"

ここでF10(address)は、2キーランチャー機能を使用するときの修飾キー(User1)です。
これでスタイル切り替えで画面の回転とZEditorの起動が行われるかを試したところ見事に行われました、ただし[Launch2]セクションの記述においてZEditorの起動を画面回転より前に記述することと、ZEditorは高速起動にしておくことが必要みたいです。これをしておかなかった場合にはZEdiorが起動しませんでした。



スタイル切り替え時のコマンド実行が上手くいったので、6月24日の日記で欠点としてあげたポイントが改善できそうなので試してみました。
インプットスタイル用のconfファイルkeyhelper.confとビュースタイル用のkeyhelper2.confを用意し、上記のZEditorの起動部分をconfファイルロードコマンドに書き換えます。
keyhelper.conf(インプットスタイル用)

[Launch]
E = @qcop(TAB)QPE/KeyHelper "config(QString)" keyhelper2

keyhelper2.conf(ビュースタイル用)

[Launch]
E = @qcop(TAB)QPE/KeyHelper "config(QString)" keyhelper

[Launch2_app]
Escape = @qcop(TAB)QPE/InputHelper key(QString) "click A+CTRL+SHIFT 0 1"

これで画面切り替え時(0x2009発生時)に対応したconfファイルがKeyHelperにロードさせることになります。
実際に試したところ、[Cancel]キーはインプットスタイルでは本来の機能を持ち、ビュースタイルではメニュー表示が行われるようになりました。