シェアする

【Windows】USキーボードのCapsLockキーを無効化してホームポジションのままでいろいろできるようにした

シェアする

何がしたいのか

とにかくホームポジションからの移動を最小化したい。

具体的にはCapsLockキーと他のキーの組み合わせにホームポジションから離れたキーの機能を割り当てたい。

USキーボード独特のCapsLock問題

JISキーボードだとそんなに難しいことをしなくても、AutoHotKeyだけでどうにかなりました。Shiftと同時押ししないとCapsLockがかからないので。

しかしUSキーボードはCapsLock単押しでも切り替わってしまうので、単純に同時押しのスクリプトを設定すると一応動作はするんですが、そのたびにCapsLockがオン・オフされてしまうという問題があります。

単押しでのCapsLockオンオフを無効化しつつ、AutoHotKeyでも使えるようにするというのがこの記事の目的です。

レジストリで架空のF21キーに割り当て

なぜF13じゃなくてF21なのかは適当です。13だと縁起悪い気がしたからっていうだけです。別にF13~F24の間ならなんでも良いと思う。

別にキーボードにないキーなら何でも良いんですが、USキーボードにないからといって変換キーや無変換キー、かなカナキーだとアプリケーションによっては余計な動作をしそうだったので、そもそも架空のキーに割り当てます。

まずはキーコードを調べる

私はAutohotkeyを使っているので、下の記事を参考に一時的にキーコードを調べるスクリプトを設定。

ChangeKeyを使用してWindowsキーをF13キーに変更する方法 - 情報科学屋さんを目指す人のメモ(FC2ブログ版)
ChangeKey 今回は、ChangeKeyを使用して、Wi...

F21キーのスキャンコードは6Cということがわかったので、CapsLockの3Aと入れ替えるようにレジストリをいじります。

レジストリに書き込む

下の記事を参考に、実際にレジストリを書き換えます。

Win7でレジストリをいじってキー配列を変える - "Simple" is "Best"
今の時期にWin7の話をするというのも時代遅れなきがするが メモとして書いておく 最初に 当然の事ながら、レジストリをいじるので自己責任のもとで バックアップは必須 これからすることによってパソコンがどうにかなったとしても 私は責任を取れない 今回は「Caps Lock」を「Alt」としてみる 参考サイトはこちら Ho...

レジストリエディタを使って、HKEYLOCALMACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layoutのディレクトリに新しいバイナリ値を作成します。

参考記事で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