hakeの日記

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

ビュースタイル - ペンを使わずに閲覧 - KeyHelper

ビュースタイルでの使用時にペンを使用しないでアプリの操作や情報の閲覧ができないか実験してみました。
ビュースタイルで使用できるキーは、[OK][Cancel]とシャトルキーによる[Up][Down]だけです。これでいろいろな機能を実現させるにはどうしたらよいでしょうか? 思いつくのはKeyHelperのメニューランチャーを呼び出して項目を選択する方法です。そこで[Cancel]でメニューを呼び出すようにしてみました(ただし欠点あり) 設定にはKeyHelperとInputHelperを使用します。
今回はNetFrontで実験しましたが、どのアプリでも可能なはずです。

keyheloer.xmlの設定

まずkeyhelper.confで[Cancel]のみの1キーでランチャーが起動する[Launch2_app]セクションが使用できるようにします。

<extensions>

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

</extensions>

次にメニューランチャーを表示させる為の仮のキーアサインを決めます。ここでは通常使用しないキーの組合せを選択する必要があります。今回は[Shift]+[Ctrl]+[A]とし、keyhelper.conf上のセクション名は[Menu50]としました。

<extensions>

	<define key="A" kind="menu50">
		<modifier Shift="On"/>
		<modifier Control="On"/>
	</define>

</extensions>

複数のアプリでそれぞれ異なるメニューランチャーを表示させたい場合は、上の"A"を"B","C"……のように、"menu50"の部分を"menu51","menu52"……の様に割り当てていけば良いと思います。
keyhelper.xmlを変更した場合はリロードする必要があります。

$ khctl reload

keyhelper.confの設定

NetFront使用時に[Cancel]でメニューランチャー[Menu50]を表示させるため、ローレベルキーイベントで[Shift]+[Ctrl]+[A]を押すように設定する。

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

実際に表示させるメニューランチャー[Menu50]の項目

[Menu50]
01_NextPage = @qcop(TAB)QPE/InputHelper key(QString) "click Right"
02_PrevPage = @qcop(TAB)QPE/InputHelper key(QString) "click Left"
03_Cancel = @qcop(TAB)QPE/InputHelper key(QString) "click Escape"
04_Home = @qcop(TAB)QPE/InputHelper key(QString) "click F12"
05_Task = @qcop(TAB)QPE/InputHelper key(QString) "click F12+SHIFT 0 1"
06_Menu = @qcop(TAB)QPE/InputHelper key(QString) "click F11"

ここでは必要最小限と思われる項目を設定してみました。

  • Next(Prev)Page:次(前)画面表示、NetFrontのブラウザ設定の基本タブでカーソルキーを“リンク選択(スクロール)”を選択、“左右キーを戻る/進むに割り当てる”にチェック有りが前提の設定です。
  • Cancel:[Cancel]をメニューランチャー表示に割り当てたので、本来のCancelを行う。
  • Home:ホーム画面を表示、他のアプリを起動するときに使用。
  • Task:複数アプリ起動時にTaskSelectorを表示させる。ここでは起動キーを[Shift]+[Menu](F12)でTaskSelector表示にしているので、これをローレベルキーイベントで実現している。
  • Menu:“ファイル”メニューを表示、ブックマークはここから選択。

実際に操作してみます。

  • ホーム画面からシャトルキーでNetFrontを選択、[OK]で起動
  • “ネットワークに接続しますか”と訊かれるのでシャトルキーで“はい”を選択、[OK]
  • 接続したら“接続中”のダイアログを[Cancel]→メニューから“Cancel”で消す。
  • [Cancel]→メニューから“Menu”選択して[OK]、さらに“ブックマーク”選択し[OK]で好きなページを開く

といった操作手順になります。
もっと実用度を上げるにはタブ切替の操作などもメニューに追加する必要があると思います。とりあえず試した感じでは思っていたよりも操作性は良いと感じました。ただしSL-C3000は図体がでかいので手の大きさによっては物理的に操作しにくいというのはありますね(^^; SL-C860以前の機種だともっと操作し易いんだろうなぁ。



最後に大きな欠点として、[Cansel]をメニュランチャー起動に割り当てているのでインプットスタイル使用時も当然メニューランチャーが表示します。この辺はconfファイルを2つ用意して適当なタイミングで切り替えるしかないですね。

$ khctl config conffile(.conf無し)

インプットスタイルとビュースタイルの切り替わりを検出できる方法があれば、そのタイミングで自動で切替できそうな気がします。
(追記)10月15日の日記にて切替検出を記述しました。



参考サイト