2010/08/10

マルチストローク対応ホットキー定義機能「Hotstrokes」

NILScriptの機能の中でも比較的初期に実装され、代表的な機能であると思われている感があるのが「Hotstrokes」ですが、実はドラゴンボールの技に例えると「太陽拳」くらいの、たまに活躍するけどそれほど重要ではないという感じのポジションにあったりします。
しかし、せっかく作ったのですから、主な特徴について紹介しようと思います。
実際の使用例や詳細な仕様については、NILScriptのアーカイブに同梱されている「sample\Hotstrokes.ng」や「doc\Hotstrokes.txt」を参照してください。

Hotstrokesの基本的な機能は、特定のキー操作が行われた時にスクリプトで定義された処理を実行する「ホットキー」的なものですが、複数のキー操作からなるストローク列に対する動作割り当てを簡単に記述できるようになっているのが特徴です。
複数のキー操作というのは、例えばEmacsなどで見られる「C-x C-c」のような2ストロークキーや、「Ctrlキーの2連打」などのようなものです。また、あるキーを押してから他のキーを押さずに放すタップ操作なども、「押す」と「放す」の2つの操作からなる複数ストローク操作と言えます。(通常のホットキーは、押し下げた瞬間に発動するのが一般的です。)
その他、各ストロークを一定時間内に行ったり、「長押し」など一定時間待機してから続きの操作を行うなどの操作も、"Ctrl+C"のような基本的なホットキー定義と同じように、一つの定義文字列で指定できます。

また、既存のキーをCtrlやShiftのようなモディファイアキーとして再定義することも可能です。「mod1」のような同名のキーをいくつでも定義できる他、単に押してからすぐ放した時は本来のキーの動作を発生させる「ワンショットモディファイア」などと呼ばれる機能も簡単に定義可能です。

操作が行われた時に実行される動作の定義には、NILScriptの関数を指定できるので、ウィンドウを閉じるなどの操作をしたり別のキー操作を発生させるだけでなく、様々な動作を定義可能です。
また、アクティブウィンドウの種類などの条件に応じて動作を変える条件別割り当ても可能です。条件もNILScriptの関数で柔軟に定義可能です。

「谺の隠れ家(http://echokoda.y0r.net/archives/category/soft/nilscript)」というサイトでは、Hotstrokesを利用して「下駄配列」や「月配列」などの仮名入力を定義するスクリプトが公開されているので、Hotstrokesの応用例に興味がある人は是非参照してみてください。

0 件のコメント:

コメントを投稿