🐥note.

小鳥とMicrosoft <3 なエンジニアの技術Blog📚

AutoHotKeyでキーボード操作を超快適にする

昔からノートPCのキーボードって苦手です。

↑と↓のカーソルキーが普通のキーの半分の大きさしかなかったり、
↑の左右にPageUp, PageDownがあって押し間違いが多発したり。
かといって外付けキーボードは持ち歩きたくないですし。

AutoHotKeyを導入してからは超快適でキーボードに消耗することもなくなりました。
なもんで、AutoHotKeyの紹介です。

AutoHotKeyとは

キーの割り当てを変更したり、マクロを組んだり色々できちゃうスゴイやつ。

普段あまり使わない"変換"キーを所謂"Fn"キー相当にBindして

  • "変換" + E/S/D/Fでカーソル移動をする。

  • "変換"キーを2連打することでTerminalを起動または起動済みTerminalをアクティブにする。

  • "変換"キー + Enterで右クリックメニューを開く。

といったカスタマイズを加えると、ホームポジションから大きく手を動かす必要もなくストレスフリーな操作が可能となる。
ファイルをExplorerで操作する際も右クリックメニューが簡単に開けるのも非常に楽です。

オレオレキー配列

筆者の設定は以下の通り

カーソルキー

入力 マッピングされるキー
"変換" + E ↑
"変換" + S ←
"変換" + D ↓
"変換" + F →
"変換" + W Ctrl + ←
"変換" + R Ctrl + →

Delete, Home, PageUpç³»

入力 マッピングされるキー
"変換" + J BackSpace
"変換" + M Delete
"変換" + K Home
"変換" + , End
"変換" + l PageUp
"変換" + . PageDown
"変換" + ; BackSpace

Functionキー

入力 マッピングされるキー
"変換" + 1 F1
"変換" + 2 F2
途中省略 途中省略
"変換" + 0 F10
"変換" + - F11
"変換" + ^ F12

その他

入力 マッピングされるキー
"変換" + Enter 右クリックメニュー
"変換" + T 仮想デスクトップ一覧(※1)
"変換" + G 仮想デスクトップ左移動(※2)
"変換" + H 仮想デスクトップ右移動
"変換" + O 作業用ディレクトリを開く
"変換"を2連打 Terminalを開く(※3)

※1. "Ctrl + Win + ←"のやつ。
 事前に"Win + Tab"を押下し画面上部から仮想デスクトップを追加する必要あり。
※2. "Win + Tab"のやつ。
※3. 既にHyper(Terminal)が開かれている場合、Hyper(Terminal)のウィンドウをアクティブ化する。

実際のAutoHotKeyファイル

実際の定義は私の開発環境用リポジトリにUpしてあります。

github.com

vk1Cは環境によっては異なるのでAutoHotKeyのツールで確認してください。
詳細はAHKのWikiが参考になると思います。

; カーソルキー
vk1C & e::Send, {Blind}{up}
vk1C & s::Send, {Blind}{left}
vk1C & d::Send, {Blind}{down}
vk1C & f::Send, {Blind}{right}
vk1C & w::Send, {Blind}^{left}
vk1C & r::Send, {Blind}^{right}

; Delete, Home, PageUpç³»
vk1C & j::Send, {Blind}{Backspace}
vk1C & m::Send, {Blind}{Delete}
vk1C & k::Send, {Blind}{Home}
vk1C & ,::Send, {Blind}{End}
vk1C & l::Send, {Blind}{PgUp}
vk1C & .::Send, {Blind}{PgDn}
vk1C & `;::Send, {Blind}{Backspace}

; Functionキー
vk1C & 1::Send, {Blind}{F1}
vk1C & 2::Send, {Blind}{F2}
vk1C & 3::Send, {Blind}{F3}
vk1C & 4::Send, {Blind}{F4}
vk1C & 5::Send, {Blind}{F5}
vk1C & 6::Send, {Blind}{F6}
vk1C & 7::Send, {Blind}{F7}
vk1C & 8::Send, {Blind}{F8}
vk1C & 9::Send, {Blind}{F9}
vk1C & 0::Send, {Blind}{F10}
vk1C & -::Send, {Blind}{F11}
vk1C & ^::Send, {Blind}{F12}

; その他
vk1C & Enter::Send, {Blind}{AppsKey}
vk1C & t::Send, {Blind}#{Tab}
vk1C & g::Send, {Blind}^#{left}
vk1C & h::Send, {Blind}^#{RIGHT}
vk1C & o::Run, C:\Users\%USERNAME%\work
vk1C & x::Send, !{F4}

; 変換を2連続押下するとTerminalを起動する
; Terminalが起動済みの場合、TerminalのWindowをアクティブ化する
$vk1C::
    KeyWait, vk1C, T0.4   ; 0,4秒
    if ErrorLevel
    {
        return
    }
    if A_TickCount < %HenkanDouble%
    {
        BashHandle = Hyper
        WinGet, mx, MinMax, %BashHandle%

        if (mx = -1)
        {
            WinRestore, %BashHandle%
        }
        else if(mx = "")
        {
            Run, "C:\Users\%USERNAME%\AppData\Local\hyper\Hyper.exe"
        }
        else
        {
            WinMinimize, %BashHandle%
        }
        HenkanDouble = 0
    }
    else
    {
        HenkanDouble = %A_TickCount%
        HenkanDouble += 400
    }
return

おわり

これがないと開発できない体になってしまいました。。