ホームポジションをキープするAutoHotkey(v2)設定
はじめに
Thinkings株式会社 で sonar ATS 開発エンジニアとして従事しています TigRig です。
エンジニア業をしていると当然ながら日々のタイピング量が多いため、キーボード操作の速度は作業効率に直結する と感じます。
キーボード操作高速化の基礎となるのがブラインドタッチかと思いますが、たとえブラインドタッチが出来ても、
- 矢印キー
- Backspace キー
- Delete キー
- ファンクションキー ... etc
と、ホームポジションそのままでは指が届かないキーを触るために、視線を落とさざるを得なかったり、誤入力してしまったり……という課題感がありました。
そこで 「できるだけホームポジションから手を動かさずに操作したい!」 と考え、キーボードカスタマイズが可能な AutoHotkey を導入 しました。[1]
……というのが少し前の話になるのですが、それから約1年が経ち、私にとってはもう絶対に手放せないツールとなっています!
ということで、本記事では私が使っている AutoHotkey 設定のうち最も使用頻度の高い 『ホームポジションをキープする』ための設定 を紹介したいと思います。
AutoHotkeyの紹介
AutoHotkey は独自のスクリプト言語によって、様々な自動処理の実現、およびキーボードショートカットの設定等が出来る Windows 向けのツールです。
本記事では詳しい紹介を省略します。
AutoHotkeyについて詳しく知りたい方は、公式サイトや以下の紹介記事等を御覧ください。
AutoHotkey紹介記事リンク
ホームポジションをキープするキーマップ
上図のようなキーマップを実現します。(『変換キー』押下している間、上図のキーマップになるよう AutoHotkey を設定します)
矢印キー、Home/Endキー、Backspace/Delete キー……等々、よく使うキーを出来るだけ触りやすい位置に配置しています。
スクリプト全文と導入手順
ひとまず使ってみたい方向けに、スクリプト全文と導入手順を紹介します。
スクリプト全文
長いので折りたたみ
; 各種設定 ===========================================================================
; 多重起動不可
#SingleInstance Force
; プロセス優先度
ProcessSetPriority("Realtime")
; リマップ ===========================================================================
; 変換キーを修飾キーとして使うため、無効化しておく
vk1C:: Return
; vk1C ( 変換キー ) を修飾キーとしたリマップ
#HotIf GetKeyState("vk1C", "P")
i::Up
j::Left
k::Down
l::Right
m::Home
.::End
y::PgUp
h::PgDn
u::BackSpace
o::Delete
vkBB::Enter ;※vkBBはセミコロン
q::Esc
1::F1
2::F2
3::F3
4::F4
5::F5
6::F6
7::F7
8::F8
9::F9
0::F10
#HotIf
導入手順
以下の GitHub ページから ZIP 形式でデータをダウンロードします。
ルートに置いてある AutoHotkey.exe を実行することで起動します。
スクリプトの解説
多重起動不可
#SingleInstance Force
#SingleInstance
このスクリプトは常に一つしか動かないように強制しています。
プロセス優先度
ProcessSetPriority("Realtime")
プロセス優先度を最大に設定しています(キーボード操作が遅くなったりするとストレスなので最大にしています)
変換キーの無効化
vk1C:: Return
変換キーは仮想キーコードでの指定が必要なキーとなっています。(変換キーの仮想キーコード = vk1C
)
変換キー単体押下を無効化して、完全にリマップ修飾キー用にしています。[2]
変換キーを修飾キーとして扱う
#HotIf GetKeyState("vk1C", "P")
変換キーが押下中の場合のみブロック内のリマップが作動するようにしています。
単にリマップで vk1C & i:: Up
と書いてもOKです。
ただ全てに vk1C &
を記載するのが面倒だった、かつ筆者のPCでは #HotIf
方式のほうが処理が安定した[3]ためこのようにしています。
リマップ
i::Up
j::Left
k::Down
l::Right
m::Home
.::End
y::PgUp
h::PgDn
u::BackSpace
o::Delete
vkBB::Enter ;※vkBBはセミコロン
q::Esc
1::F1
2::F2
3::F3
4::F4
5::F5
6::F6
7::F7
8::F8
9::F9
0::F10
このリマップと 変換キーを修飾キーとして扱う によって、下図のキーマップが実現されています。
その他おすすめ設定
他にもAutoHotkeyにはホットキー、ホットストリングといった機能があったり、リマップだけにしても便利な活用法が様々ありますので、気になる方はぜひ調べてみてください。
一部実際筆者が利用している便利設定を以下に紹介します。
日時入力
vk1C & F1::
{
dateStr := FormatTime(, "yyyy/MM/dd")
Send("{vkF2}{vkF3}" dateStr)
}
vk1C & F2::
{
dateStr := FormatTime(, "yyyyMMdd")
Send("{vkF2}{vkF3}" dateStr)
}
vk1C & F3::
{
dateStr := FormatTime(, "HH:mm")
Send("{vkF2}{vkF3}" dateStr)
}
vk1C & F4::
{
dateStr := FormatTime(, "HHmm")
Send("{vkF2}{vkF3}" dateStr)
}
しばしば日時を入力することがありますが、手打ちだと「今何日?」となったり、ミス入力してしまうことがあるので、ショートカット設定しています。
- 変換キー + F1 → "yyyy/MM/dd" 形式で現在の日付を入力
- 変換キー + F2 → "yyyyMMdd" 形式で現在の日付を入力
- 変換キー + F3 → "HH:mm" 形式で現在の時刻を入力
- 変換キー + F4 → "HHmm" 形式で現在の時刻を入力
AutoHotkeyのリロード
vk1C & Esc:: Reload()
AutoHotkeyのスクリプトを更新した時はリロードする必要があり、ショートカット設定しておくと便利です。
Excelの改行リマップ
#HotIf WinActive("ahk_exe EXCEL.EXE", )
; ※+はShift, !はAltを示す
+Enter:: !Enter
+NumpadEnter:: !Enter
#HotIf
Excelのセル内改行は Alt + Enter ですが、普段使っている他のツールでは Shift + Enter を使うことが多いです。
そのためExcelのセル内改行も Shift + Enter で出来るように変換しています。
おわりに
AutoHotkeyで上記の設定をしてから、ほぼほぼホームポジションから手を動かさずに開発業務が出来るようになり、とても快適になりました。
AutoHotkeyを使ったことがない方は、ぜひ一度使ってみてください!
Discussion