keyhac を使ってキー配列をいじるスクリプトを紹介してきたが(その 1、その 2)このソフトではキーボードやマウスを使ったマクロを書くこともできる。今回は簡単な例として、Putty + GNU Screen での例を書いてみる。
Putty + GNU Screen でウィンドウを簡単に切り替える
GNU Screen で複数のウィンドウを切り替える場合は“コントロールキャラクタを押した後に数字キー”という操作を行う。具体的には、
- Control + Z を押す1。
- Control + Z を離す。
- 3 を押す。
これで 3 番のウィンドウに切り替わる。毎回 Control を離す動作が面倒なのだ。これを、単に Control + 3 だけで切り替わるようにしたい。
config.py
(部分)
def configure( km ): km_putty = km.defineWindowKeymap( exe_name = u"PUTTY.EXE" ) for i in xrange( 10 ): km_putty[ "C-" + str( i ) ] = km.command_InputKey( "C-Z", str( i ) )
2 行目では特定のプログラム(PUTTY.EXE
)でのみ有効なキーマップ(km_putty
)を得ている。そして 4 行目がキモ。command_InputKey
メソッドは引数に並べたキーを順に押した場合と同じ効果を得るための関数を返す。
このスクリプトを使うと、Putty + GNU Screen な環境で Control + 0 ~ 9 を押すと、0 番~ 9 番のウィンドウに切り替わるだろう。
特定の文字列を入力するマクロ
command_InputKey
と似たメソッドに command_Input**Text**
がある。こちらはキーを連続して押すのではなく、文字列を実際に入力してくれる。
config.py
(部分)
def configure( km ): km_notepad = km.defineWindowKeymap( exe_name = u"Notepad.exe" ) km_notepad[ "C-A" ] = km.command_InputText( "aiueo" )
このスクリプトを有効にした上で、メモ帳を起動して Control + A を押してみると……
このように IME の未確定状態で止まってしまう2。この後、確定のために毎回 Enter を押さないといけない。ちょっと使いどころが難しいかなあ。