⌨️

ホームポジションをキープするAutoHotkey(v2)設定

2024/05/16に公開

はじめに

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 形式でデータをダウンロードします。

https://github.com/tigrig29/AutoHotkeyBaseRemaps

ルートに置いてある AutoHotkey.exe を実行することで起動します。

スクリプトの解説

多重起動不可

#SingleInstance Force

#SingleInstance
このスクリプトは常に一つしか動かないように強制しています。

プロセス優先度

ProcessSetPriority("Realtime")

ProcessSetPriority

プロセス優先度を最大に設定しています(キーボード操作が遅くなったりするとストレスなので最大にしています)

変換キーの無効化

vk1C:: Return

変換キーは仮想キーコードでの指定が必要なキーとなっています。(変換キーの仮想キーコード = vk1C

変換キー単体押下を無効化して、完全にリマップ修飾キー用にしています。[2]

変換キーを修飾キーとして扱う

#HotIf GetKeyState("vk1C", "P")

#HotIf
GetKeyState

変換キーが押下中の場合のみブロック内のリマップが作動するようにしています。

単にリマップで 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を使ったことがない方は、ぜひ一度使ってみてください!

脚注
  1. カスタマイズ可能なキーボードを買うという手段もあるかと思うのですが、当時の私には高価過ぎて買えませんでした……😭 AutoHotkey は無料(OSS)で、どんなキーボードにも適用できるのが素晴らしいですね! ↩︎

  2. 筆者は文字変換をスペースキーで行っています。そのため押しやすい位置かつ使っていない変換キーを修飾キーとして活用することにしました。 ↩︎

  3. 稀に変換キー押下状態が残ってしまうことがあります。そのような場合は再度変換キーを押すことで解消します。根本解決法は今のところ見つかっておりません……。 ↩︎

Thinkingsテックブログ

Discussion