hakeの日記

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

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が起動することになります。このキーを押して起動する手順を書くと

  1. [Address](F10)キーを押す
  2. [I]キーを押して離す
  3. [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が起動します。



この機能について活用の用途がイマイチ思いつきませんが、このような機能があるということでメモメモ。