読者です 読者をやめる 読者になる 読者になる

AutoHotKeyのススメ

さて、以前こんな記事を書いたのですが、
実はそれ以来WindowsマシンよりもLinuxマシンの方が使う機会が多くなり、
しばらくキーバインドの変更を諦めていた日々が続いていました。


しかし2012年10月にWindows8マシンをサブマシンとして多用するようになり、
メモ帳代わりにUltrabookを使い始めて早8ヶ月。
今ではWin8AutoHotKeyなしではろくにメモも取れないくらいにWin8マシンが重宝しています。


今週金曜日(2013年6月7日)にはSurface Proも日本国内で発売されることですし、
特に書くこともないことですし、自分のAutoHotKeyスクリプトを公開してみることにします。


とりあえずコメントを付けながら貼り付けてみます。

#Include lib/IME.ahk  ;IMEを取り扱うためのライブラリ

まず先頭で他の方が作られた便利なライブラリを読み込みます。
http://lukewarm.s101.xrea.com/up/index.php から 089.zip を拝借しています。
IMEのON/OFFを関数ひとつで制御できたりなど、とても便利です。


その後は以下のように自作のスクリプトが続きます。

;------------------------------------------------------------------------------
;   Cursor Keys
;------------------------------------------------------------------------------

vk1Dsc07B & H::Send,{Blind}{Left}   ;無変換 + H = 左カーソルキー
vk1Dsc07B & J::Send,{Blind}{Down}   ;無変換 + J = 下カーソルキー
vk1Dsc07B & K::Send,{Blind}{Up}     ;無変換 + K = 上カーソルキー
vk1Dsc07B & L::Send,{Blind}{Right}  ;無変換 + L = 右カーソルキー

;------------------------------------------------------------------------------
;   with 無変換キー
;------------------------------------------------------------------------------

vk1Dsc07B::Send,{Blind}{sc029}      ;無変換単独 = 全角/半角キー
vk1Dsc07B & F::Send,{Blind}{Enter}  ;無変換 + F = Enter
vk1Dsc07B & A::Send,{Blind}{BS}     ;無変換 + A = BackSpace
vk1Dsc07B & S::Send,{Blind}{Del}    ;無変換 + S = Delete
vk1Dsc07B & W::Send,{Blind}{Esc}    ;無変換 + W = Escape
vk1Dsc07B & E::Send,{Blind}{PgUp}   ;無変換 + E = PageUp
vk1Dsc07B & D::Send,{Blind}{PgDn}   ;無変換 + D = PageDown
vk1Dsc07B & N::Send,{Blind}{Home}   ;無変換 + N = Home
vk1Dsc07B & M::Send,{Blind}{End}    ;無変換 + M = End
vk1Dsc07B & Z::Send,^z              ;無変換 + Z = CTRL + Z
vk1Dsc07B & Y::Send,^y              ;無変換 + Y = CTRL + Y
vk1Dsc07B & X::Send,^x              ;無変換 + X = CTRL + X
vk1Dsc07B & C::Send,^c              ;無変換 + C = CTRL + C
vk1Dsc07B & V::Send,^v              ;無変換 + V = CTRL + V
vk1Dsc07B & `;::Send,{F2}           ;無変換 + セミコロン(;) = F2
vk1Dsc07B & .::Send,{Blind}{F3}     ;無変換 + ドット(.) = F3
vk1Dsc07B & U::Send,{Blind}^+{Tab}  ;無変換 + U = CTRL + SHIFT + Tab
vk1Dsc07B & P::Send,{Blind}^{Tab}   ;無変換 + P = CTRL + Tab
vk1Dsc07B & vk1Csc079::Reload       ;無変換 + 変換 = AutoHotKeyスクリプトのリロード
vk1Dsc07B & @::Send,{Blind}{Ins}    ;無変換 + アットマーク(@) = Insert
vk1Dsc07B & Tab::                   ;無変換 + Tab = 行頭に半角スペース2個を挿入
    ime_mode := IME_GET()
    IME_SET(0)
    Send,{Blind}{Home}{Space}{Space}{Home}{Down}
    IME_SET(ime_mode)
Return
vk1Dsc07B & 8::                     ;無変換 + 8 = 左向きの簡易矢印を入力
    ime_mode := IME_GET()
    IME_SET(0)
    Send,{Blind}<={Space}
    IME_SET(ime_mode)
Return
vk1Dsc07B & 9::                     ;無変換 + 9 = 右向きの簡易矢印を入力
    ime_mode := IME_GET()
    IME_SET(0)
    Send,{Blind}=>{Space}
    IME_SET(ime_mode)
Return

;------------------------------------------------------------------------------
;   with 変換キー
;------------------------------------------------------------------------------

vk1Csc079::Send,{Blind}{Esc}        ;変換単独 = Escape
vk1Csc079 & X::Send,{Blind}!{F4}    ;変換 + X = ALT + F4 (つまりアプリの終了)
vk1Csc079 & Q::Send,{Blind}{F5}     ;変換 + Q = F5 (ブラウザの更新やコンパイルなど)
vk1Csc079 & Tab::                   ;変換 + Tab = 行頭に半角スペースを4つ入力
    ime_mode := IME_GET()
    IME_SET(0)
    Send,{Blind}{Home}{Space}{Space}{Space}{Space}{Home}{Down}
    IME_SET(ime_mode)
Return
vk1Csc079 & 3::                     ;変換 + 3 = 行頭にシャープ(#)と半角スペースを入力
    ime_mode := IME_GET()
    IME_SET(0)
    Send,{Blind}{Home}{#}{Space}{Home}{Down}
    IME_SET(ime_mode)
Return

;------------------------------------------------------------------------------
;   環境依存ショートカット
;------------------------------------------------------------------------------

vk1Csc079 & K::Run,"C:/kawasaki/"                       ;よく使うフォルダをエクスプローラで開く
vk1Csc079 & W::Run,"C:/kawasaki/work/"                  ;よく使うフォルダをエクスプローラで開く
vk1Csc079 & O::Run,"C:/AutoHotKey/"                     ;よく使うフォルダをエクスプローラで開く
vk1Csc079 & D::Run,"C:/Users/yasuhiro/Downloads/"       ;よく使うフォルダをエクスプローラで開く
vk1Csc079 & R::Run,"C:/DropBox/"                        ;よく使うフォルダをエクスプローラで開く
vk1Csc079 & S::Run,"C:/Users/yasuhiro/SkyDrive/"        ;よく使うフォルダをエクスプローラで開く
vk1Csc079 & I::Run,"C:/kawasaki/work/memo.txt"          ;よく使うファイルを開く
vk1Csc079 & T::Run,"C:/kawasaki/test.py"                ;よく使うファイルを開く
vk1Csc079 & E::Run,"C:/tools/EmEditor/EmEditor.exe"     ;よく使うアプリを立ち上げる
vk1Csc079 & P::Run,"C:/tools/putty/putty.exe"           ;よく使うアプリを立ち上げる
vk1Csc079 & F::Run,"C:/tools/FileZilla/filezilla.exe"   ;よく使うアプリを立ち上げる

;------------------------------------------------------------------------------
;   EmEditorでのショートカット
;------------------------------------------------------------------------------

;それぞれEmEditorでショートカットを用意しないと全く意味がいないので、
;「あぁこんなこともやってるんだ気持ち悪いなぁ」と思っていただければそれで十分です。

vk1Dsc07B & -::Send,{Blind}^+!{F7}      ;ハイフンを79列まで入力するマクロを実行
vk1Csc079 & J::Send,{Blind}^+!{F8}      ;PEP8チェックするマクロを実行
vk1Csc079 & C::Send,{Blind}^+!{F9}      ;選択範囲をコメントアウトするマクロを実行
vk1Csc079 & Z::Send,{Blind}^+!{F10}     ;選択範囲をコメントインするマクロを実行
vk1Csc079 & A::Send,{Blind}^+!{F11}     ;ALC検索するマクロを実行
vk1Csc079 & G::Send,{Blind}^+!{F12}     ;Google検索するマクロを実行

;------------------------------------------------------------------------------
;   メッセージのショートカット
;------------------------------------------------------------------------------

:O:`;sl::/                 ;セミコロン(;)に続けてSL<Enter>と入力すると全角スラッシュが入力される
:O:`;bsl::\                ;セミコロン(;)に続けてBSL<Enter>と入力すると全角バックスラッシュが入力される
:O:`;kome::※               ;セミコロン(;)に続けてKOME<Enter>と入力すると※が入力される
:O:`;koko::                 ;セミコロン(;)に続けてKOKO<Enter>と入力すると
                            ;   ==== ここから ====
                            ;   
                            ;   ==== ここまで ====
                            ;という3行が入力される。
    Send,==== ここから ====`n`n==== ここまで ====
    Send,{Blind}{Home}{Up}
Return
:O:`;s::■{Space}           ;セミコロン(;)に続けてS<Enter>と入力すると■と半角スペースが入力される
:O:`;Mon::(月)            ;セミコロン(;)に続けてMON<Enter>と入力すると"(月)"が入力される
:O:`;Tue::(火)            ;セミコロン(;)に続けてTUE<Enter>と入力すると"(火)"が入力される
:O:`;Wed::(水)            ;セミコロン(;)に続けてWED<Enter>と入力すると"(水)"が入力される
:O:`;Thu::(木)            ;セミコロン(;)に続けてTHU<Enter>と入力すると"(木)"が入力される
:O:`;Fri::(金)            ;セミコロン(;)に続けてFRI<Enter>と入力すると"(金)"が入力される
:O:`;Sat::(土)            ;セミコロン(;)に続けてSAT<Enter>と入力すると"(土)"が入力される
:O:`;Sun::(日)            ;セミコロン(;)に続けてSUN<Enter>と入力すると"(日)"が入力される

;------------------------------------------------------------------------------
;   カラーピッカー
;------------------------------------------------------------------------------

; マウスカーソルの位置の色を取得し、結果をクリップボードにコピー
vk1Csc079 & L::             ;変換 + L = マウスカーソルの位置の色を #RRGGBB 形式でクリップボードに貼り付ける
    MouseGetPos, x, y
    PixelGetColor, color, %x%, %y%
    R := mod(color, 0x100)
    G := mod(color >> 8, 0x100)
    B := color >> 16
    msg := "(R, G, B) = (" . R . ", " . G . ", " . B . ")"

    SetFormat Integer, H
    R := SubStr(R + 0, 3)
    if (StrLen(R) < 2) {
        R := "0" . R
    }
    G := SubStr(G + 0, 3)
    if (StrLen(G) < 2) {
        G := "0" . G
    }
    B := SubStr(B + 0, 3)
    if (StrLen(B) < 2) {
        B := "0" . B
    }
    CLIPBOARD = #%R%%G%%B%
Return


他にもいくつか設定してあるのですが、今のところ公開できるのはざっとこんなものです。


もしAutoHotKeyフリークの方がいらっしゃったら、オススメの設定を是非コメント欄に書いてくだs…そんな人あまりいないか。