概要
多くのゲーマーが使うWASDキー配置ですが、実際のところ D
キーと間違えて、F
キーを押した経験ありませんか?本記事では、そんな悩みを解決するため、CapsLockキーを押している間だけ自動でキー配置を右に一つずつシフトする、革新的なAutoHotKeyスクリプトをご紹介します。
なぜWASD配置は不便なのか?
WASD配置はゲームの標準として広く普及していますが、必ずしも人間工学に最適な配置とは言えません。
WASD配置は、タッチタイピングの基本であるホームポジションと大きく異なる配置になっています。ホームポジションでは左手人差し指が F
キーに置かれるのに対し、WASD配置では同じ指が D
キーを担当することになります。日常的にタイピング作業をする人ほど、無意識のうちに左手人差し指が F
キーの位置に向かってしまい、意図せず D
キーの代わりに F
キーを押してしまうことがあります。このような muscle memory との不一致が、操作ミスやストレスの原因となっています。
ESDF配置のメリットと導入のハードル
実際、理想的なキーボード配置としては「ESDF」の方が、手の自然な位置で操作できると言われています。しかし、以下の理由からすべてのゲームでESDF配置に変更するのは難しいのが現状です。
-
各ゲームごとにキーバインドの再設定が必要
ゲームごとに設定が異なるため、毎回変更するのは手間がかかります。 -
キーバインド変更が不可能なゲームも存在
一部のタイトルではカスタマイズができず、設定変更が行えません。 -
一括での調整が困難
キー配置を変更すると、他のキーとのバランスも変わるため、全体の再調整が必要になります。
解決策:AutoHotKeyによる一括シフト
そこで提案するのが、AutoHotKeyを利用した一括シフト方式です。
このスクリプトでは、CapsLockキーを押している間のみ、すべてのキー入力を右に一つずつシフトさせるため、普段はWASD配置を維持しつつ、必要なときだけESDF配置の快適さを実現できます。
セットアップ手順
- AutoHotKey公式サイトからソフトウェアをダウンロード&インストール
- CapsLockキーの機能を無効化(下記「CapsLockの無効化について」を参照)
- 下記のスクリプト全文をテキストファイルに保存し、.ahkファイルとして実行
CapsLockの無効化について
-
Google日本語入力ユーザーの場合
→ 設定手順はこちらをご参照ください。 -
その他のキーボードレイアウトの場合
→ 各OSの設定でCapsLockキーの機能を無効化してください。
スクリプト全文
以下が、今回ご紹介するキーボードシフト用のAutoHotKeyスクリプトです。
#HotIf GetKeyState("CapsLock", "T")
; 数字キー
$*1::Send "{Blind}0"
$*2::Send "{Blind}1"
$*3::Send "{Blind}2"
$*4::Send "{Blind}3"
$*5::Send "{Blind}4"
$*6::Send "{Blind}5"
$*7::Send "{Blind}6"
$*8::Send "{Blind}7"
$*9::Send "{Blind}8"
$*0::Send "{Blind}9"
; 上段キー
$*q::Send "{Blind}p"
$*w::Send "{Blind}q"
$*e::Send "{Blind}w"
$*r::Send "{Blind}e"
$*t::Send "{Blind}r"
$*y::Send "{Blind}t"
$*u::Send "{Blind}y"
$*i::Send "{Blind}u"
$*o::Send "{Blind}i"
$*p::Send "{Blind}o"
; 中段キー
$*a::Send "{Blind};"
$*s::Send "{Blind}a"
$*d::Send "{Blind}s"
$*f::Send "{Blind}d"
$*g::Send "{Blind}f"
$*h::Send "{Blind}g"
$*j::Send "{Blind}h"
$*k::Send "{Blind}j"
$*l::Send "{Blind}k"
$*;::Send "{Blind}l"
; 下段キー
$*z::Send "{Blind}/"
$*x::Send "{Blind}z"
$*c::Send "{Blind}x"
$*v::Send "{Blind}c"
$*b::Send "{Blind}v"
$*n::Send "{Blind}b"
$*m::Send "{Blind}n"
$*,::Send "{Blind}m"
$*.::Send "{Blind},"
$*/::Send "{Blind}."
#HotIf
各AutoHotKeyコマンドの解説
1. $
修飾子
$
修飾子は、ホットキーの再帰呼び出しを防止するために使用されます。
たとえば、以下の例では、 d
キーに $
を付けることで、a
キー入力時に d
キーのキーバインドが誤って連鎖的に発動するのを防いでいます。
a::Send "bcd"
$d::Send "efg"
; $がない場合、aを押すと「bcefg」と出力される
参考:$
の効果検証
2. *
ワイルドカード修飾子
*
修飾子を使用すると、Shift、Ctrl、Altなどの修飾キーが押されている状態でもホットキーが確実に発動します。
*#c::Run "calc.exe" ; Win+C、Shift+Win+C、Ctrl+Win+Cなど、すべての組み合わせで有効
3. {Blind}
モード
{Blind}
を指定することで、既に押されている修飾キーの状態をそのまま維持しながら新たなキー入力を送信できます。
これにより、CapsLockの状態やその他の特殊キーの影響を受けずにキーシフトが可能です。
+s::Send "{Blind}abc" ; Shiftを押しながらsを押すと「ABC」と出力される
4. #HotIf
条件分岐
#HotIf
ディレクティブは、指定した条件が成立した場合のみホットキーを有効にします。
本スクリプトでは、GetKeyState("CapsLock", "T")
により、CapsLockキーがオンの時だけシフト動作が実行されるようになっています。
#HotIf GetKeyState("CapsLock", "T")
; このセクション内のホットキーはCapsLockがオンの時のみ有効
#HotIf
5. GetKeyState()
関数
GetKeyState()
関数は、指定したキーの状態(オン/オフ)を取得します。
第二引数に "T"
を指定すると、トグル状態(例:CapsLock)が取得され、戻り値はオンなら 1、オフなら 0 となります。
GetKeyState("CapsLock", "T") ; CapsLockのトグル状態を確認
おすすめの使い方
-
ゲーム起動前にスクリプトを実行
常駐させることで、いつでも簡単に切り替えが可能です。 -
必要なときだけCapsLockキーを押下
普段はWASDのまま、快適なタイミングでESDF配置に切り替えられます。
最後に
このAutoHotKeyスクリプトを使えば、普段の操作に支障をきたすことなく、従来のWASD配置を維持しながら、必要なときだけESDF配置の快適さを享受できます。長時間のプレイによる疲労を軽減し、ゲーム環境をより洗練されたものにしましょう。