今回は、AutoHotKeyの実用例として「無変換キーを活用したキーバインド」を紹介していきます。
とても良い立地なのにあまりに使われていない無変換キーを活用して、今回はVimっぽい操作を実現します。Vimに興味がない人でも、無変換キーを活用したキーバインド作成自体が、開発環境効率化に役立つと思います。
AutoHotKeyとはなんぞやという人やのAutoHotKeyの導入についてはこちらの記事を参照ください。キー操作環境を改善しよう:AutoHotKeyとChangeKeyの活用
無変換キーの活用
AutoHotKeyにかぎらず、キーバインド変更・ホットキー設定ソフトは便利なのですが、あまりに特殊なカスタマイズや、既存のキーマップに影響を与えるような設定はなるべく避けたいものです。理想は、既存のキーバインドに影響を与えず、便利なキーバインドを実現すること。そこで活用するのが「無変換キー」です。
無変換キーには、
- 押しやすいキー位置
- 既存キーバインドに一切組み込まれていない
という大きな特徴があります。
押しやすいキー配置であることは、こちらの記事「Windowsで英数/かな入力切替は無変換/変換キーでしよう」でも触れました。超一等地ともいえる、押しやすいキー配置にいるキーなので、余らせているのはもったいない、ガンガン活用するべきなのです。これこそがJISキーボードの最大の利点といっても過言ではありません。
また、既存キーバインドには全く組み込まれていないので、新たなモディファイアキー(ShiftやCtrlのような他のキーと組み合わせて使うキー)として活用しやすいです。いくら使い倒しても既存のキーバインドにバッティングすることがありません。
これらの特徴を活かして無変換キーを使ったキーバインドを設定していきます。
Vimノーマルモードの移動を実現するキーバインド
無変換キーは有用ですが、それを使って何を実現して便利にしていくか。僕の場合は、自分が好きなエディタVimに基づいたちょっと便利にするキーバインドを設定していきます。
Vimではモードという概念があり、ノーマルモードという、テキスト入力ではなくカーソル移動に特化したキーバインドが使えるモードがあります。その移動操作キーバインドをVimのモードという概念とは無関係に使えるような設定を目指します。これにより、「Vim以外でもちょっとVimっぽい移動操作」や、「Vimのインサートモードという移動操作ができないモードでもちょっと快適な移動操作」が実現できます。
その実際のキーバインド設定(AutoHotKeyスクリプト)が以下です。AutoHotKeyは海外製のアプリなので、JISキーボードにある無変換キーは、わかりにくいですがキーコード「vk1Dsc07B」で扱う必要があります。
;;無変換キー自体を有効化
vk1Dsc07B::
Send, {vk1Dsc07B}
return
;; 無変換+hjklでカーソル移動、Blindをつけると修飾キー組み合わせ(Shift、Ctrなど)も可能
vk1Dsc07B & h::Send, {Blind}{left}
vk1Dsc07B & j::Send, {Blind}{down}
vk1Dsc07B & k::Send, {Blind}{up}
vk1Dsc07B & l::Send, {Blind}{right}
;;無変換+w,b,でword移動
vk1Dsc07B & w::Send, {Blind}^{right}
;; bで戻るは<ctrl-b>と合わせて下に記述
;; 無変換+0,$でhome,end
vk1Dsc07B & 0::Send, {Blind}{Home}
vk1Dsc07B & 4::
If GetKeyState("shift", "P"){
Send, {Blind}{End}
}
return
;; 無変換+a,eでhome,end
vk1Dsc07B & a::Send, {Blind}{Home}
vk1Dsc07B & e::Send, {Blind}{End}
;; 無変換 + ctrl + b,fでPgUp, PgDn
vk1Dsc07B & f::
if GetKeyState("ctrl", "P")
SendPlay, {PgDn}
return
vk1Dsc07B & b::
if GetKeyState("ctrl", "P")
SendPlay, {PgUp}
else
Send, {Blind}^{left}
return
これで実現されているのが無変換キーをモディファイアキーとして(無変換キーが押下されている場合に)、以下が実現されています。
キー | 操作 |
---|---|
h,j,k,l | ←,↓,↑,→ |
w,b | 単語移動進む、戻る |
Ctrl-f, Ctrl-b | PageUp,PageDown |
0,a | Home |
$,e | End |
Vimの移動操作を知ってればほとんどおなじみのものです。ただし、Home,Endにのみ、aとeを追加しています。これは、HomeとEndは結構使いたい場面が多いのですが、無変換まで絡めるとどうしても押しにくいキーであるため追加で設定しています。そこだけEmacsっぽいキーバインドですね。
スクリプトは、AutoHotKey特有のモディファイアキーの表現(Ctrlは^など)等がありますが、あまり難しい記述ではないと思います。ちょっとしたルールと、一部APIのを把握するだけで、これくらいのことができます。実際にこのコードでスクリプトとして実行すれば、無変換キーを押しながら、ちょっと快適なキー移動ができるようになると思います。もう矢印キーに手をのばすこともほとんどなくなるでしょう。さらに詳しい文法は公式ページを参照ください。
まとめ
というわけで、AutoHotKeyを活用して、無変換キーによるVimっぽい移動操作実現例をご紹介してみました。僕はAutoHotKeyは他にも、ランチャー的なキーマップの使い方などもしています。本当に様々なことが実現できます。今回紹介した内容だけでも、自分好みの快適なキー操作が実現できそうでわくわくしないでしょうか?楽しそうだと思った方は、Vimっぽさに限らず、AutoHotKeyと無変換キーで遊んでみてはいかがでしょう。
コメント