InputHelper Applet - ローレベルキーイベント
InputHelperのローレベルキーイベントについて実験してみました。
ところで、ローレベルってlow levelで良いのでしょうかね?
keyhelper.confにて
[Launch2] X = @text(TAB)abcd Y = @text(TAB)efgh Z = @qcop(TAB)QPE/InputHelper key(QString) "click x" "click y"
と定義した場合、エディタなどを開いて各キーを押すと
- [X]キーを押した場合、“abcd”の書き込み
- [Y]キーを押した場合、“efgh”の書き込み
- [Z]キーを押した場合、“xy”の書き込み
が行われます。
ちなみに[Launch2]セクションはkeyhelper.xmlにて
<extensions> <define key="All" kind="launch2"/> </extensions>
と定義している、ランチャー起動キーを使用しない1キー起動の定義を記述するセクションです。
ここで、[Z]キーの定義を
Z = @qcop(TAB)QPE/InputHelper key(QString) "click x 0 1" "click y 0 1"
と変更してみます。
この状態で[Z]キーを押してみると、先ほどの“xy”ではなく、“abcdefgh”と書き込まれます。つまり[Z]キーが押されたことで[X]キーと[Y]キーを押されるキーイベントが発生して、更に[X]キーと[Y]キーに定義された機能(この場合は“abcd”と“efgh”の書き込み)が起動しているわけです。ここでポイントは“Z=”の行で記述されている“x”と“y"が小文字ということです。
次にkeyhepker.confにて
[Launch] I = Applications/netfront3
定義しているとします。自分の場合、ランチャー起動キー(User1)を[Address](F10)キーにしているので、[Address]+[I]でNetfrontが起動することになります。このキーを押して起動する手順を書くと
- [Address](F10)キーを押す
- [I]キーを押して離す
- [Address](F10)キーを離す
という手順になります、これをローレベルイベントを用いて[Z]キーに定義してみます。
[Launch2] Z = @qcop(TAB)QPE/InputHelper key(QString) "press F10 0 1" "click i 0 1" "release F10 0 1"
この状態で[Z]キーを押してみると、[Address]+[I]キーを押したことと等価になり、Netfrontが起動します。
この機能について活用の用途がイマイチ思いつきませんが、このような機能があるということでメモメモ。