AutoHotKey の実践

#忍法 AutoHotKey 帳！

##頂戴仕る！
まずはこちらでダウンロードします。AHKをね。
https://www.autohotkey.com/download/
![キャプチャ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501697/43042878-9b3b-365c-5fc7-a04cf6d94237.jpeg)
まあこんな具合ですよね。

すると ![キャプチャ1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501697/efd88da9-249d-56f3-08e9-7b11484ec4c5.jpeg) とまあこうよ。

でね、大切なのは OSの32Bit 64bit と、あとは ANSI UNICODE なんだけんども、
まあ10年前なら混乱もしたろうけど今となっちゃ U64 だけ有りゃ良いんだから
A32 と U32 は消しちゃって。ほんでそこに IME.ahk を置いて。

でこうね。![キャプチャ2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501697/3d3629fc-6bf6-05c1-de97-767ef91aa37f.jpeg)

ほったらね、こうね。

##伝授！狸の巻！！
これコピーしてメモ帳とかテキストエディタとかに貼り付けんの。

ここからよ。
↓

```

#InstallKeybdHook	; 修飾キーの押しっぱなし防止
#SingleInstance	; 複数起動禁止
SetStoreCapslockMode, Off ; CapsLock の自動処理を止めて手動調整可能に
#UseHook	; 送信キーの自己受信防止

;---;---
; キー設定
	ESC & q::
		Suspend, Permit
		Suspend
		Return
	ESC & e::
		Suspend, Permit
		ExitApp
		Return
	ESC & r::
		Suspend, Permit
		Reload
		Return
	*ESC::ESC

	*sc029::sc029 ; [漢字]
	*1::Send, {Blind}{1}
	*2::Send, {Blind}{2}
	*3::Send, {Blind}{3}
	*4::Send, {Blind}{4}
	*5::Send, {Blind}{5}
	
	*6::Send, {Blind}{6}
	*7::Send, {Blind}{7}
	*8::Send, {Blind}{8}
	*9::Send, {Blind}{9}
	*0::Send, {Blind}{0}
	*-::Send, {Blind}{-}
	*^::Send, {Blind}{^}
	*\::Send, {Blind}{\}
	*BS::Send, {Blind}{BS}

	*Tab::Send, {Blind}{Tab}
	*Q::Send, {Blind}{q}
	*W::Send, {Blind}{w}
	*E::Send, {Blind}{e}
	*R::Send, {Blind}{r}
	*T::Send, {Blind}{f}
	
	*Y::Send, {Blind}{y}
	*U::Send, {Blind}{u}
	*I::Send, {Blind}{i}
	*O::Send, {Blind}{o}
	*P::Send, {Blind}{p}
	*@::Send, {Blind}{@}
	*[::Send, {Blind}{[}

	*vkF0::Send, {Blind}{vkF0} ; [Caps]
	*A::Send, {Blind}{a}
	*S::Send, {Blind}{s}
	*D::Send, {Blind}{d}
	*F::Send, {Blind}{t}
	*G::Send, {Blind}{g}
	
	*H::Send, {Blind}{h}
	*J::Send, {Blind}{j}
	*K::Send, {Blind}{k}
	*L::Send, {Blind}{l}
	*vkBB::Send, {Blind}{vkBB} ; [;]
	*vkBA::Send, {Blind}{vkBA} ; [:]
	*]::Send, {Blind}{]}
	*Enter::Send, {Blind}{Enter}
	
;	*LShift::Send, {Blind}{LShift}
	*Z::Send, {Blind}{z}
	*X::Send, {Blind}{x}
	*C::Send, {Blind}{c}
	*V::Send, {Blind}{v}
	*B::Send, {Blind}{b}
	
	*N::Send, {Blind}{n}
	*M::Send, {Blind}{m}
	*vkBC::Send, {Blind}{vkBC} ; [,]
	*.::Send, {Blind}{.}
	*/::Send, {Blind}{/}
	*vkE2::Send, {Blind}{vkE2} ; [\]
;	*RShift::Send, {Blind}{RShift}
	
;	*LCtrl::Send, {Blind}{LCtrl}
;	*LWin::Send, {Blind}{LWin}
;	*LAlt::Send, {Blind}{LAlt}
	*vk1D::Send, {Blind}{vk1D} ; [無変換]
	*Space::Send, {Blind}{Space}
	*vk1C::Send, {Blind}{vk1C} ; [変換]
	*vkF2::Send, {Blind}{vkF2} ; [かな]

#UseHook off

```

↑
ここまでね。
で、これを保存します。名前は何でもおけおけおっけー。
でもま分かり易くするため「Keyboard.ahk」に決めちゃお。
さっきの AHK を蓄えたとこに一緒に置きます。

##この合言葉……忘れたらば味方であろうとも容赦せぬ！
保存する時にちょい注意、なんかね、どっかに「エンコード」とか、
 日本語(JIS) とか UTF-8(BOM付き) とかそういうの選ぶとこあると思うんだけど、
とりあえず今は UTF-8(BOM付き) にしといて。こんな風にね。
![キャプチャ3.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501697/b09c6951-3d81-e84b-2e4c-c22db8f1ba62.jpeg)
え？わからん？
うーんとエディタでね、つまり帳面ね、これ自分は Mery っての使ってんの。
まあメモ帳の一種なんだけどね、ちょっとお便利。ありがたや。
https://www.haijin-boys.com/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
「プログラミング山の山頂を征服します！」って人には向かないけどね、これ。
「砂場で泥遊びします！」って人にはちょいちょい便利なのよ。
前は帳面に OTBEDit っての使ってましたもう古くなっちゃったんだけど。
Mery さんこの OTB さんパクりまし……インスパイヤされましたじゃろ……あまりにも使いやす過ぎるぞい。

##忍術！「鼠引き」！！
ほんでま保存しましたらね、さっきの名付けて保存した「Keyboard.ahk」(という名前がついた手習いテキスト)をね。
マウスでぴょぴょっと AutoHotkeyU64.exe っちゅう名前の緑の [H] へドラッグ……なんちゅうんだっけ？渡して。
ほんでね、凄いことがおきますよ。

f 押して。
えへへ、t になったっしょ。
さっきの手習いの f と t んところもっかいよく見てくんろ。

このやりかたでね、もう貴方はだいたい自分のキーボードを、好きなよーに作り変えられちゃうんですよ。
六つかしい話をしようと思えばもっとできるんだけどね。
これ簡単で直感的にわかりやすいわりに効果は、まあ限定的とはいえ、結構大きいでしょ？
ところでネットを見ますと数万円で、キーを入れかえて自分好みのキーボードを作れる、そういうキーボード売ってますね……？
あの、もし宜しければ、私に数万円渡してくれても、良いのよ……？

##神出鬼没！雲に乗ったか地へ潜ったか！？
飽きたらね、これ手習いの上っかわしになんか
    ・ESC & q:: Suspend
    ・ESC & e:: ExitApp
    ・ESC & r:: Reload
って書いてあるっしょ。いやまあ本当文字通りそれだけなんだけど。
キーボードの左上に目をやると、なんか、「ESC」っちゅう目立たんキーがあるねえ。
これエスケープ(脱出)って言って、昔のハードディスク(めっちゃくちゃ大昔、原始時代である)で
電源を切るときレコード針がレコードを傷付けないよう針を横っちょへ退けるための鈕だったらしいんだけど。
まあ使わんよね今は。レコード針無いもんね。
で、この ESC(エスケープキー)と q キーを同時に一回だけ押してごらんよ。

f 押して。
えへへ、f になったっしょ。
つまりサスペンドというのは暖簾を下ろして一服ということです。
暇を取らす！あっ御堪忍下せえ！ならぬならぬ！もはや当家に手前の関りは無うなった！出よ出よ！なんだとこの！ごうつく旦那！ちくしょう見てろい…
そういう藪入りの風景、美しいですねえ。これがサスペンド。
じゃあエグジットとリロードはなーんだ？これは宿題です。
というわけで飽きたりまた要り用になったら、止めたり終わらせたり再読み込みできます。

##我ら一同目にしたあれは、一体何だったので御座ろう……？
えーここまでやって「はいそうですか」ってなりますよね。
そうなんだ山。そうなんだ山のさねかづら。
これねえ、私、すごいことやってるんですよ。
あの、普通のキーは普通のキーで A とか B とか C とか普通にあるじゃないですか。
でも [,] とか [漢字] とか [かな] とかは、これなんか変な……いかにもコンピュータっぽい感じになってますよね、{vk1D}!{sc029}!
これねえ、今までの教材だとね、指導役の鬼軍曹が髭面でね、
なんかいきなりキーボードと仮想キーコード(Virtul Keycord → Vk)・スキャンコード(Scancord → sc) の暗号帳を渡されて
(コード=暗号だからこれ比喩でも冗談でもなく暗号なのだ)
「よし貴様ら！暗号帳を渡したからには俺の教育の責任は終わった！あとは貴様らがこの対応と実装を勝手に調べろ！それで解散！落伍したものは脱走と見なし銃殺！」
って言われておっぽり出されてたの。
あのね、[,] を [,] で書くと、キーボードの [,] だか文章の区切りだかプログラムの変数指定だかわかんなくなって、
そんでプログラムがエラー！パソコン強制終了！っていうの、10年前はあるあるネタだったのよ？ごめんね昔話ばっかりで？
ほんで泣きながら全部のキーの仮想キーコードとスキャンコードを覚えて、ほんでそれを通常の文字、仮想、スキャン、の3種類で実際に全部試して
どのキーがどのコード指定すると上手くいくかどうか試してたの。

馬鹿か！！

だからね、もうこれこんな不毛な作業しながら、「最初っから各キーを一番適切な指定コードにしてずらっと一列に並べとけよばかあ」って
なんでこんな困難をお前等鬼軍曹ども、人任せにするんだよって思ってたの！
で、一生懸命頑張って頑張って自分の力で一覧にまとめると、ほら！これめっちゃ便利！
暗号帳なんかにしないで最初っからこれを作っとけやお前等！
それをこの、お前ら！貴様ら読者どももだぞ！人任せにしやがって！もう怒った！貴様ら！暗号帳を渡してやる！もうこれで俺の教育の責任は終わった！落伍したものは銃殺！
ほんとうに読者というのはなんという怠け者だろう……わしら鬼軍曹が根性を叩き直してやらにゃすぐぐにゃぐにゃにへたり込むと来る！弛んぢょる！！怪しからんよ全く！あっあそこに倒れた怠け者が居るぢゃあないか！これ！まだ拳骨が欲しいか！これでもか！ガッハッハッハ……！