ロゴ ロゴ

AutoHotKeyのすゝめ

はじめに

どうも、部会の曜日をどうしても覚えられないWhiteShirtです。

日々プログラミングしているものにとって、タイピング速度は命です。
まぁ当然ですね。タイピングが速い分プログラムも速くかけます。

速くタイピングするには、指をホームポジションからなるべくずらしたくないです。しかし、JISキーボードはEnterキーが隅に寄っていて押しにくいですよね……。他にもBackSpace、Delete、Esc、PgUp、Arrow Key 等々。よりによってプログラミングでよく使うキーがあまりにも押しにく過ぎる!!

その割には、変換、無変換キーがいいところに陣取ってて嫌な感じです。

keyboard

AutoHotkeyの基本

そこで登場するのがAutoHotkeyです。これを使うと、任意のキーに様々な設定(ホットキー)をすることができます。Windows限定なのが残念ですが、Macでも探せば同じようなものはあると思います。

拡張子を.ahkにして実行することで設定を適応できます。
今回は一番簡単なものを紹介します。

[任意のキーA]::send, [任意のキーB]

とすると、Aを押すとBのキーとして動作します。

例えば、

vk1D & i::Send, {Blind}{Up}
vk1D & j::Send, {Blind}{Left}
vk1D & k::Send, {Blind}{Down}
vk1D & l::Send, {Blind}{Right}

と書くと無変換キーとiキーで上キー、jで左キー、kで下キー、lで右キーとなります。vk1Dは無変換キーのキーコードです(詳しくはこちら)。また、{Blind}を付けると、同時押しに対応します。Vim使ってる人は、h j k l に設定してもいいかもしれませんね。

サンプルコード

私が使っている設定置いておきますね。自由に使って貰って構いませんが、何かあったら自己責任でお願いします。

;----------Setting----------

#NoEnv
#Warn
SendMode Input

;---------- vk1D key ----------

vk1D & q::Send, {vk1D}
vk1D & w::Send, {vk1C}

vk1D & Space::Send, {Blind}{Enter}

vk1D & g::Send, {Blind}{BS}
vk1D & h::Send, {Blind}{Delete}

vk1D & i::Send, {Blind}{Up}
vk1D & j::Send, {Blind}{Left}
vk1D & k::Send, {Blind}{Down}
vk1D & l::Send, {Blind}{Right}

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}

vk1D & a::Send, {Blind}{Home}
vk1D & e::Send, {Blind}{End}

vk1D & u::Send, {Blind}{PgUp}

vk1D & d::Send, {Blind}{PgDn}

vk1D & v::Send, {Blind}{LButton}

vk1D & n::Send, #{Left}
vk1D & .::Send, #{Right}
vk1D & ,::Send, #{Up}
vk1D & m::Send, #{Down}

;---------- vk1C key ----------

vk1C & a::Send, {Blind}+{1}
vk1C & s::Send, {Blind}+{2}
vk1C & d::Send, {Blind}+{3}
vk1C & f::Send, {Blind}+{4}
vk1C & g::Send, {Blind}+{5}
vk1C & h::Send, {Blind}+{6}
vk1C & j::Send, {Blind}+{7}
vk1C & k::Send, {Blind}+{8}
vk1C & l::Send, {Blind}+{9}
vk1C & q::Send, {Blind}+{-}
vk1C & w::Send, {Blind}{-}
vk1C & e::Send, {Blind}+{^}
vk1C & r::Send, {Blind}{^}
vk1C & t::Send, {Blind}+{\}
vk1C & y::Send, {Blind}{\}
vk1C & u::Send, {Blind}+{/}
vk1C & i::Send, {Blind}{/}
vk1C & o::Send, {Blind}{_}
vk1C & p::Send, {Blind}{\}


vk1C & Space::Send, {LWin}

vk1C & n::Send,{RButton}

;---------- Ctrl ----------

^[::Send, {Esc}

Ctrl & Tab::AltTab

;minimize window
^q::PostMessage, 274, 61472, 0, , A

+^]::Send,^{Tab}
+^[::Send,+^{Tab}

Ctrl & 9::Send, #{x}

;---------- Win ----------

#e::Run "C:\Users\[user_name]"

変換、無変換キーをふんだんに使っています。

最後に

AutoHotkeyはホットキーを設定する以外にも、作業を自動化したり、簡単なGUIアプリを作ったりと、色々なことができます。興味を持ったら、調べてみると面白いかもしれません。

コメント入力

関連サイト