hakeの日記

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

KeyHelper Applet

KeyHelperの導入に挑戦、キー操作でアプリケーションの起動や切り替えができるみたい。できるだけペンを使いたくない自分的にはうってつけのアプリ。

を眺めてみる。
むむむ、ちょと本腰を入れて読まないと大変そうな予感。とりあえず/home/zaurus/Settings/以下に置いたkeyhelper.confとkeyhelper.xmlというファイルで設定を行うみたい。


文市さんのところにも設定例が載っているのを発見(http://www.ayati.com/kobako/c3key.htm)

ランチャーキー+定義キーだけでなく、定義キー単体だけでも登録できるようだ、またInputHelper Appletを使用するとペン操作もキー登録可能。

KeyHelper Appletの設定−keyhelper.xml

英数字キー以外のキーはKeyHelperConfで確認、例えば「Fn」はF22、「Address」はF10

<?xml version="1.0"?>
<keyhelper>
	<modifiers>
		<define key="F10" type="User1" Mapping="True">
		</define>
		<define key="Shift" type="Shift" toggle="True"/>
	</modifiers>
	<mappings>
		<define code="2015">
			<map key="Less"/>
			<map_modifier Shift="On" Control="On"/>
			<map_unicode char="{"/>
		</define>
		<define code="2016">
			<map key="Greater"/>
			<map_modifier Shift="On" Control="On"/>
			<map_unicode char="}"/>
		</define>
	</mappings>
	<repeater>
		<repeat delay="500" period="60"/>
	</repeater>
	<extensions>
		<define key="F10" kind="menu">
			<modifier Shift="On"/>
		</define>
		<define key="F12" kind="select">
			<modifier Shift="On"/>
		</define>
		<define key="All" kind="launch">
			<modifier User1="On"/>
		</define> 
		<define key="All" kind="launch2"/>
	</extensions>
</keyhelper>

Launcher(2key)

	<modifiers>
		<define key="F10" type="User1" Mapping="True">
		</define>
	</modifiers>

	<extensions>
		<define key="All" kind="launch">
			<modifier User1="On"/>
		</define> 
	</extensions>

「Address」キー(F10)をLauncherキーに設定する。F10をUser1に定義、更にUser1がOnの時に全キーに対してLaunch機能を定義。これでkeyhelper.confのLaunchおよびLaunch_appセクションに記述したキーを「Address」キーと同時に押すことで定義された動作が起動する。


Launcher(1key)

	<extensions>
		<define key="All" kind="launch2"/>
	</extensions>

keyhelper.confのLaunch2およびLaunch2_appセクションに記述したキーのみを押すことで定義された動作が起動する。


Menu Launcher

	<extensions>
		<define key="F10" kind="menu">
			<modifier Shift="On"/>
		</define>
	</extensions>

「Shift」+ F10(Address)で画面中央にメニュー表示される。表示される内容はkeyhelper.confのMenuセクションに記述した内容


Task Selector

	<extensions>
		<define key="F12" kind="select">
			<modifier Shift="On"/>
		</define>
	</extensions>

複数のアプリを起動している場合に、「Shift」+ F12(Home)で画面中央にメニュー表示され、タスクの切替が可能。WindowsのALT+TAB機能と同様。


Key Mapping

	<mappings>
		<define code="2015">
			<map key="Less"/>
			<map_modifier Shift="On" Control="On"/>
			<map_unicode char="{"/>
		</define>
		<define code="2016">
			<map key="Greater"/>
			<map_modifier Shift="On" Control="On"/>
			<map_unicode char="}"/>
		</define>
	</mappings>

「Fn」+「O」で「{」を定義、「Fn」+「P」で「}」を定義、いずれもKeyHelperConfで生成した記述をペースト。


Key Repeat

	<repeater>
		<repeat delay="500" period="60"/>
	</repeater>

任意のキーを500ミリ秒押し続けると、60ミリ秒間隔でキーリピートが発生

KeyHelper Appletの設定−keyhelper.conf

InputHelper Appletもインストールされていることが前提
Launch
  「I」でネットフロント起動
  「Cancel」で電源オフ
Launch_netfront3 (ネットフロント使用時)
  「O」でブックマークアイコンクリック
  「R」でリロードアイコンクリック
  「↑」「↓」でスクロールバー部分クリック
Menu 上から
  ネットワーク切断
  ネットワーク接続
  KeyHelper設定変更時のリロード
  InputHelper設定変更時のタスクバーリロード
  CF取り出し

[Global]
UseFilterApps = 
XmlFile = 

[Launch]
I = Applications/netfront3
Escape = __9quit
#H = @qcop(TAB)QPE/InputHelper 'handle()'
#G = @qcop(TAB)QPE/InputHelper 'position(QString)' ""

[Launch2]

[Launch_netfront3]
O = @qcop(TAB)QPE/InputHelper mouse(QString) "click 512 56"
R = @qcop(TAB)QPE/InputHelper mouse(QString) "click 480 56"
Up = @qcop(TAB)QPE/InputHelper mouse(QString) "click 620 186"
Down = @qcop(TAB)QPE/InputHelper mouse(QString) "click 620 380"

[Menu]
01_切断 = @qcop(TAB)QPE/Network stop()
02_接続 = @qcop(TAB)QPE/Network connectRequest()
03_kh_reload = @qcop(TAB)QPE/KeyHelper reload()
04_In_reload = @qcop(TAB)QPE/TaskBar reloadApplets()
05_CF_eject = @exec(TAB)/sbin/cardctl eject

[Style]

(注意)メニューで日本語を使用する場合は文字コードはUTF8


アプリケーションの起動

key = xxx/yyy

アプリケーションを起動させるキーの定義。xxxおよびyyyは、/home/QtPalmtop/apps/xxx/yyy.desktopのxxxとyyyを記述する。ホーム画面のアプリケーションタブの場合は、xxxはApplications、設定タブの場合xxxはSettingsになる。


Linuxコマンドの実行

key = @exec(TAB)command


qcopメッセージ

key = @qcop(TAB)message


キーおよびマウスイベント

key = @qcop(TAB)QPE/InputHelper key(QString) "click A" "click B"……
key = @qcop(TAB)QPE/InputHelper mouse(QString) "click X1,Y1" "click X2,Y2"……

キーイベントではキー名を、マウスイベントでは座標を記述する。必要に応じて間にwait nn(数字)を挿入してタイミング調整。


座標取得方法(例)

H = @qcop(TAB)QPE/InputHelper 'handle()'
G = @qcop(TAB)QPE/InputHelper 'position(QString)' ""

Hキーで十字カーソル表示、カーソルキーで任意の場所に移動後Gキーで座標をクリップボードにコピー、再度Hキーで十字カーソル消去。

マウスイベントで十字カーソル表示期間が長いので短く修正(inputhelper.conf)

[Cursor]
timeout = 50

KeyHelper雑感

とりあえずKeyHekperの最低限の設定をしてみたけど、ドキュメントを読みこめばもっといろいろ便利なことが出来そうですね。PIM関係の定義は本格移行してから考えよう、たくさんのキーに定義すると覚えきれないのでメニューに登録したほうが良いかな。

Menuキーが中央に配置されていて、ちょっと押しにくいので設定タブのキー設定でCalendarキーに割り当て。