自分のブログからの転載です→【Windows】USキーボードのCapsLockキーを無効化してホームポジションのままでいろいろできるようにした | 東京消息
ブログでこの記事を書いた時にTwitterでそこそこの反応があったのでQiitaにも投稿してみました。__Qiita初投稿__やったね!
環境
PC: Lenovo Thinkpad X270 US配列
OS: Windows10 Pro 64bit
※CapsLockを無効または他のキーに割り当てるだけなら不要ですが、いろいろできるようにするためにはAutoHotKey必須です。
何がしたいのか
とにかくホームポジションからの移動を最小化したい。
具体的にはCapsLockキーと他のキーの組み合わせにホームポジションから離れたキーの機能を割り当てたい。
USキーボード独特のCapsLock問題
JISキーボードだとそんなに難しいことをしなくても、AutoHotKeyだけでどうにかなりました。Shiftと同時押ししないとCapsLockがかからないので。
しかし__USキーボードはCapsLock単押しでも切り替わってしまう__ので、単純に同時押しのスクリプトを設定すると一応動作はするんですが、そのたびにCapsLockがオン・オフされてしまうという問題があります。
単押しでのCapsLockオンオフを無効化しつつ、AutoHotKeyでも使えるようにするというのがこの記事の目的です。
レジストリで架空のF21キーに割り当て
なぜF13じゃなくてF21なのかは適当です。
13だと縁起悪い気がしたからっていうだけです。別にF13~F24の間ならなんでも良いと思う。
別にキーボードにないキーなら何でも良いんですが、USキーボードにないからといって変換キーや無変換キー、かなカナキーだとアプリケーションによっては余計な動作をしそうだったので、そもそも架空のキーに割り当てます。
まずはキーコードを調べる
私はAutohotkeyを使っているので、下の記事を参考に一時的にキーコードを調べるスクリプトを設定。
F21キーのスキャンコードは6Cということがわかったので、CapsLockの3Aと入れ替えるようにレジストリをいじります。
レジストリに書き込む
下の記事を参考に、実際にレジストリを書き換えます。
レジストリエディタを使って、
のディレクトリに新しいバイナリ値を作成します。
参考記事でCtrlのスキャンコードを入力している部分にF21キーのコード6Cを入れるだけ。
再起動後、CapsLockキーを押しても無効化されていることを確認。
念の為もう一度Autohotkeyのキー履歴を見てみると、ちゃんとF21キーとして認識されていました。
AutoHotKeyでキーバインドを設定する
レジストリでリマップしたので、CapsLock単押しでもCapsLockは発動しません。
下記は実際に私が使っているAHKのスクリプトのうち、CapsLockキー関係のものです。TabやEnter、BackSpaceすら設定して、徹底的にホームポジションからの動きを最小限にするように考えました。
;CapsLock(sc03A)はF21(sc06C)にリマップ済み
;CapsLock+FでTabの動作
sc06C & f::Send,{Tab}
;CapsLock+;でDEL、+:でBSの動作
sc06C & sc028::Del
sc06C & sc027::BS
;CapsLock+SpaceでEnterの動作
sc06C & Space::Send,{Enter}
;CapsLock+hjklで上下左右の動作
sc06C & h::Send,{Blind}{Left}
sc06C & j::Send,{Blind}{Down}
sc06C & k::Send,{Blind}{Up}
sc06C & l::Send,{Blind}{Right}
;CapsLockでコピペ等の動作
sc06C & c::Send,^c
sc06C & v::Send,^v
sc06C & a::Send,^a
sc06C & s::Send,^s
sc06C & z::Send,^z
sc06C & x::Send,^x