Windows自体の操作もLinux風にしたい…
少し前にこんな記事を書いた。
この設定でだいぶ日本語入力、英数入力の不快感とか、最低限のターミナル操作を行う上での不快感は軽減されたものの、今度は別のキーに対しての不快感が目立つようになってきた。
それは Deleteキー、BackSpaceキー、ファンクションキー、矢印キー、Homeキー、Endキーである。
これらのキーはめちゃくちゃ使うキーなのに、なぜかホームポジションから外れたところに配置してある。
Linuxとかの端末を操作していると、これらのキーはCtrlキーとの組み合わせで実現できるので大したことはないのだけれども、Windowsではそうはいかない。
そこで、WindowsでAutoHotkeyというプログラムを使ってうまく設定してみたのでその時のお話。
前提
まず、キーボードは一般的な日本語キーボードを使う。
レジストリの書き換えで以下のような機能を実現している。
- 半角全角キーとEscキーの入れ替え
- 左CtrlキーとCaps Lockキーの入れ替え
上記の設定だと、日本語入力と英数入力の切り替えが大変になるので、IMEの設定で日本語入力への切り替えを変換キー、英数入力への切り替えを無変換キーに割り当てている。
キーバインディングの設計
何はともあれまずどういうキーバインドを設定するのかを考える。
各キーをどう割り当てるか
自分が普段Emacsっぽいキーバインドを使っているので、Ctrlとは別のプレフィックスキーを設定して、そのキーとの組み合わせでDeleteキー、BackSpaceキー、矢印キー、Homeキー、Endキーを実現することにした。
また、ファンクションキーについては、プレフィックスキーと数字キーのある段の組み合わせで実現すると良さそうだ。
具体的には以下のような感じ。
<Prefix> + D : Delete <Prefix> + H : BackSpace <Prefix> + P : Up <Prefix> + N : Down <Prefix> + F : Right <Prefix> + B : Left <Prefix> + A : Home <Prefix> + E : End <Prefix> + 1 : F1 <Prefix> + 2 : F2 <Prefix> + 3 : F3 ︙ <Prefix> + 0 : F10 <Prefix> + - : F11 <Prefix> + ^ : F12
プレフィックスキーを何にするか
プレフィックスキーにCtrlを割り当てると、Windowsのキーバインドを潰してしまい困ることもあるので別のプレフィックスキーを用意する。
プレフィックスキーに何を設定するか考えてみたけど、割といいポジションにいる無変換キーあたりが良さそうである。
Ctrlキーは小指で押さないといけないけれども、無変換キーならば親指で押せてとても便利だからである。
無変換キーに割り当てていた英数入力はかなキーに割り当てる。
結局標準のキーバインドからどうなったのか
前回の記事と合わせて、どういうキーバインドにしたのかまとめる。
# レジストリを書き換えて設定 Esc : 半角全角 半角全角 : Esc 左Ctrl : CapsLock CapsLock : 左Ctrl # IMEで設定 変換 : 日本語入力 かな : 半角英数入力 # AutoHotkeyで設定 無変換 + D : Delete 無変換 + H : BackSpace 無変換 + P : Up 無変換 + N : Down 無変換 + F : Right 無変換 + B : Left 無変換 + A : Home 無変換 + E : End 無変換 + 1 : F1 無変換 + 2 : F2 無変換 + 3 : F3 ︙ 無変換 + 0 : F10 無変換 + - : F11 無変換 + ^ : F12
キーバインドの設定
レジストリを書き換えて設定する項目
前回書いた記事を参照。
IMEの設定
この辺を参考に、IMEの設定を書き換える。
AutoHotkeyの設定
ひとまずAutoHotkeyをインストールして、以下のような内容のファイルを作成する。
拡張子は.ahk
で保存しておく。
vk1D & P::Send,{Blind}{Up} vk1D & B::Send,{Blind}{Left} vk1D & N::Send,{Blind}{Down} vk1D & F::Send,{Blind}{Right} vk1D & A::Send,{Blind}{Home} vk1D & E::Send,{Blind}{End} vk1D & M::Send,{Blind}{Enter} vk1D & H::Send,{Blind}{BS} vk1D & D::Send,{Blind}{Delete} vk1D & 1::Send,{Blind}{F1} vk1D & 2::Send,{Blind}{F2} vk1D & 3::Send,{Blind}{F3} vk1D & 4::Send,{Blind}{F4} vk1D & 5::Send,{Blind}{F5} vk1D & 6::Send,{Blind}{F6} vk1D & 7::Send,{Blind}{F7} vk1D & 8::Send,{Blind}{F8} vk1D & 9::Send,{Blind}{F9} vk1D & 0::Send,{Blind}{F10} vk1D & -::Send,{Blind}{F11} vk1D & ^::Send,{Blind}{F12} return
後は保存したファイルをダブルクリックで開くと、AutoHotkeyが起動してキーバインドが有効になる。
.exe
の形式にするには、右クリックでCompile Script
を選択する。
.exe
の形式にしてスタートアップのフォルダに入れておくと、起動時には勝手にキーバインドが有効になりレジストリを変えたのとほとんど変わりなく使えるようになる。
雑記
他の方のブログとかでAutoHotkeyの設定ファイルの書き方を調べていたのだけれども、なんか違った。
自分の環境(というか最近のAutoHotkey?Windows10?)では無変換キーは「vk1D」に割り当てられているっぽくて、他のブログとかで紹介されているように「vk1Dsc07B」に設定してもAutoHotkeyが受け付けてくれなかった。
ちなみにかなきーも同様で、「vkF2sc070」を使っているブログがたくさんあるけど、「vkF2」で設定しないといけなかった。