キーボード割付の変更:AutoHotKeyの紹介

## ＄センチュリーBLACK PAWN(グレー軸)
　最近getしたセンチュリーのミニキーボードBLACK PAWNですが，Shiftキーが矢印キーの外側にあって，かなり使いづらいです．

![使いづらい右シフト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441159/aa675d26-a2b0-7514-48c9-62c34af6ce42.png)

　このキー配置はコンパクトキーボードにちょくちょく見られるものです．FILCOのMajestouch MINILAも同じです．

![FFBT68MNB_01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441159/9a5fb130-ed64-6fe9-2573-bb66ef53bc10.jpeg)
　
　**いただけない．**
　
　なぜ右シフトは冷遇されるのか，不当な差別に憤りを感じます．
憤りの理由は明白です．おいらがかな入力だからです．かな入力は左右のシフトキーをたくさん使うのです．
　しょうがないので右シフトと上矢印を入れ替えました．
　
![BLACKPAWN-changed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441159/3347bc02-2461-1eae-1860-f9c70a8d68b3.jpeg)

　これはこれで上矢印と下矢印が斜めの位置なんで，結構やりにくいんですが，**Vimんちゅは矢印キー使わないから気にしない**．
　
## ＄キーバインドを変更する: AutoHotKey
　キーバインドを変える方法ですが，今までは　 [changekey](https://forest.watch.impress.co.jp/library/software/ch
angekey/) 　というツールを使っていました．

![change-key-51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441159/562d063b-3292-fac6-7db7-f0a0ed2323db.png)

　しかし，ChangeKeyはいちいち再起動が必要です．BLACK PAWNを使わない時には元に戻したい．BLACK PAWN のようなミニキーボードは持ち歩いて，他のPCにつなげてマイ入力環境として利用したいんだけど，いちいち変更するのは面倒です．

　で，ぜひ紹介したいのは，Windows用のツール，[AutoHotkey](https://www.autohotkey.com/)です．
　※日本語の専用Wikiもあります．⇨ [AutoHotkey Wiki](http://ahkwiki.net/Top)

　これを使えば，**管理者権限がなくても，レジストリを変更しなくても，キーの交換が自由自在**です．

　USBメモリにAutoHotKey本体と，BLACK PAWN用のAutoHotKey設定ファイルを入れておき，BLACK PAWNを使うときだけ実行する．これで快適なマイキーボード生活が可能になります．
　設定ファイルの記述はキーの入れ替えだけなら簡単です．例えば，右シフトと上矢印を入れ替えるなら，こうです．

```plain
Up::RShift
RShift::Up
```
たったこれだけです．

　AutoHotKeyはWindows用の常駐ソフトなので，ほかのOSでは使えません．ものすごく残念です．だれか移植してください．

で，AutoHotKeyの設定ですが，詳しくは上のWikiで理解できると思います．

利用方法をざっくりいうと，こういう感じです．

1. 設定ファイルを記述する．ファイル名はなんでもいい．拡張子は"ahk"
2. ahkファイルからAutoHotKeyを起動する．もちろん関連付けしておく．
3. ahkファイルは複数起動可能．外部キーボードをつなげた時にそのキーボード用のahkファイルを実行できる．
4. ahkは常駐しているので動作がおかしければ，メニューを開いて動作確認したりahkファイルを編集することができる．

　AutoHotKeyはキーバインドの変更だけでなく，キー操作を割り当てたり，特定のアプリを起動することもできます．探せばいろいろな応用例があります．

　以下，おいらが愛用しているThinkPad T440p用の設定ファイルです．

```plain
;;; 無変換にいろいろバインド
!q::Send,!{F4}
vk1D & Q::Send,!{F4} ; 無変換+q = Alt+F4(Window閉じる)
vk1D & C::Send,^{c}  ; 無変換+c = C-c(Copy)
vk1D & V::Send,^{v}  ; 無変換+v = C-v(Paste)
vk1D & X::Send,^{x}  ; 無変換+x = C-x(Cut)
vk1D & K::Send,{pgup}; 無変換+k = PageUp
vk1D & J::Send,{pgdn}; 無変換+j = PageDown
vk1D & H::Send,{Home}; 無変換+h = Home
vk1D & L::Send,{End}; 無変換+l = End
vk1D & M::Send,{Enter}; 無変換+M = Enter
vk1D & N::Send,{Blind}{F3}; 無変換+n = F3
vk1D & B::Send,{Blind}+{F3}; 無変換+b = Shift F3
vk1D & 2::Send,{Blind}{F2}; 無変換+2 = F2
vk1D & R::Reload ; 無変換+r = AutoHotKeyファイルリロード
vk1D & Enter::MouseClick,Left; 無変換+Enter = マウス左クリック
;; ↓Chrome起動
vk1D & P::Run,"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --profile-directory="Profile 1" https://keep.google.com/u/0/
;; ↓Vim起動
vk1D & E::Run,"C:\bin\vim\gvim.exe" "C:\Users\user\AutoHotKey\altq_TPT430.ahk"

$vk1D::	;無変換2連打 = DF起動
 KeyWait, vk1D
 if (A_PriorHotkey == A_ThisHotkey) && (400 > A_TimeSincePriorHotkey){
  Run, C:\bin\df198\DF.EXE, C:\Users\user\Documents
  WinActivate, ahk_class DoubleWindowedFiler
}
return

;; Vim用設定
#IfWinActive ahk_class Vim
;;; 無変換+kでC-b，+jでC-d(半画面スクロール)
vk1D & K::Send,^{b}
vk1D & J::Send,^{d}
#IfWinActive
```

みなさんも快適なキーバインドライフを試してみませんか．