キーボードの中で、あまり使われないキーとしてよく挙げられるのがCapsLock、NumLock、Scroll Lock、そしてPauseキーです。Scroll LockやPauseキーはキーボードの端に配置されているため、誤って押してしまうことはほとんどありません。しかし、CapsLockキーは左Shiftキーの近くに位置しており、誤って押してしまうことが少なくありません。
ブラインドタッチが得意な方でも、頻繁にキーを打っていると、うっかりCapsLockキーを押してしまい、入力がすべて大文字になってしまうことにイラっとする経験があるかもしれません。
NumLockキーも、テンキーを使用している際に、例えば「7」や「/」を入力するつもりで間違えて押してしまうと、その後の入力がうまくいかなくなり、これもまたストレスになります。しかし今回はNumLockキーについては割愛します。
CapsLockキーを他のキー、たとえばEscapeキーやControlキーと入れ替えるというカスタマイズは、比較的多くの人が実践している方法です。しかし、「がとらぼ」の中の人は、Ctrlキーはキーボードの左下に配置されている方が好みで、さらにEscキーはvimエディタで頻繁に使うため、左上の遠い場所で操作するのにすっかり慣れています。そのため、これらのキーを入れ替えるのはあまり好ましく感じません。
EscキーやCtrlキーに慣れていると、CapsLockをどちらかに置き換えることでかえって不便になることもあります。特にプログラミングやテキスト編集で頻繁に特定のキーを使用する場合、そのキーの場所に慣れるのが重要です。
そこで、キー自体を入れ替えるのではなく、CapsLockの機能を無効化して、そのキーに左Shiftキーの役割を割り当てるという方法を取ることにしました。つまり、CapsLockキーをもう一つの左Shiftキーとして使うということです。これにより、左手で操作するShiftキーが2つになるというわけです。「え~?」と思うかもしれませんが、実際に試してみるとこれが意外にも快適です。
特に、左手でのShiftキー操作を頻繁に行う人にとっては、雑にShiftを押せるようになるため、キー操作の効率が上がります。このように、CapsLockを無効にしても使い勝手を損なうことなく、むしろ快適に感じる場面が増えるかもしれません。
Linuxの場合
Linuxでは、多くのディストリビューションにおいて「xmodmap」がデフォルトでインストールされています。このツールを使用して簡単にCapsLockの機能を変更することができます。最近では、xmodmapは非推奨とされることもありますが、2023年現在、問題なく動作しています。
一部の情報では、インプットメソッドフレームワークであるFcitxを使用して日本語入力を行う際に、キーの割り当てによって不具合が発生する可能性があるとされていますが、今回の変更に関してはその影響はないと考えられます。
以下では、具体的な手順に進みます。これから紹介する方法で、簡単にCapsLockの機能を無効化して左Shiftキーとして機能させることができます。
CapsLockのキーコードは「66番」です。これを「Shift_L」、つまり左Shiftキーに割り当てます。この設定を行うことで、CapsLockキーがShiftキーとして機能するようになります。
この変更は、システム全体ではなくユーザー単位で適用するので、管理者権限を必要としません。つまり、sudoコマンドを使う必要がなく、以下のコマンドを実行するだけで十分です。
$ xmodmap -e "keycode 66 = Shift_L"
実行したら、実際に英数字を入力してみます。通常の英数字入力、Shiftキーを押しながらの入力、そしてCapsLockを押しながらの入力をそれぞれ試してみて、CapsLockキーがShiftキーと同じ動作をするか確認します。CapsLockキーを押しながらの入力がShiftキーを押しながらの入力と同じなら、成功です。
これで、CapsLockがShiftキーとして動作しますが、システムを再起動した際には元に戻ってしまいます。そこで、ログインするたびに自動的にこの設定が適用されるようにするためには、以下の手順を追加で行う必要があります。
ユーザーのホームディレクトリに、以下の2つのファイルを作成します。
xmodmapの設定ファイル.Xmodmap (追記、または無ければ新規作成 内容は1行)
keycode 66 = Shift_L
ユーザーがログインした際に xmodmap を自動的に実行するには、.xinitrc ファイルに必要な設定を記述します。
.xinitrc はユーザー環境の初期化を行うためのスクリプトファイルで、内容は1行追加するだけで十分です。既にファイルが存在する場合は追記し、もし存在しない場合は新規作成します。
xmodmap ~/.Xmodmap
~ はUnix系OSにおいて、ユーザーのホームディレクトリを指します。例えば、ユーザー名が "foobar" であれば、そのホームディレクトリは /home/foobar や /usr/home/foobar となります。ファイル名の先頭に .(ドット) が付いているファイルは非表示ファイルとなり、通常のファイル一覧には表示されません。ls -l ~ ではこれらの非表示ファイルは確認できませんが、ls -al ~ コマンドを使うと表示することが可能です。
システムを再起動するか、再ログインすることで、以降の入力においてCapsLockキーが左シフトキーと同様の機能を果たすようになります。これが期待通りに動作すれば、設定は成功です。
Windowsの場合
設定を行う方法はいくつかありますが、一番手軽なのはレジストリを使用する方法です。
レジストリエディタを直接操作するのは、初心者にとってやや難解で、誤操作によるリスクも高いです。しかし、レジストリファイルを使う場合は、ファイルをダブルクリックするだけで設定を反映できるので簡便です。操作中に確認ダイアログが表示されるため、それに従って承認すれば適用されます。
キーのスキャンコードを変更する場合、CapsLockキーのLinuxにおけるスキャンコードは「66番」ですが、Windowsでは異なり、CapsLockは「30番」(16進数で 0x003A) です。同様に、左Shiftは「44番」(16進数で 0x002A)、右Shiftは「57番」(16進数で 0x0036) です。また、CapsLockキーと入れ替えることが多い左Ctrlキーは「58番」(16進数で 0x001D) に割り当てられています。これらの情報は、キーをカスタマイズする際に重要となります。
設定すべきレジストリのパスは、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout です。
ここで、Scancode Map という名前のバイナリ値を作成しますが、新たにキーを作成するのではなく、既存の設定を修正する形で行います。初期値として、00,00,00,00,00,00,00,00 と記述します。
今回はCapsLockキーだけを左Shiftに書き換えるので、マッピング数は1つですが、終端にNULLを加えるため、合計で2とします。したがって、値は 02,00,00,00 となります。次に、何に書き換えるかを指定します。左Shiftのスキャンコードである「0x002A」を先に記述し、その次に書き換える元のCapsLockのスキャンコード「0x003A」を記述します。
書き換え対象が他にもある場合は、さらに追加記述することが可能です。
最後にNULLとして00,00,00,00を追加して完了です。
つまり、値は 00,00,00,00,00,00,00,00,02,00,00,00,2A,00,3A,00,00,00,00,00 になります。
CapsLock_to_Shift_Left.reg CapsLockを左Shiftキーにするレジストリ1 2 3 4 | Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] "Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,2a,00,3a,00,00,00,00,00 |
1 2 3 4 | Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] "Scancode Map"=- |
CapsLock_to_Shift_Left.regは、CapsLockキーを左Shiftに変更するためのレジストリファイルです。また、Retrieve_CapsLock.reg は、CapsLockキーの機能を元に戻すためのレジストリファイルで、Scancode Mapの値を削除し、キーマッピングのカスタム設定を初期化します。これらのファイルはリンクからダウンロードでき、ダウンロード後はダブルクリックするだけで簡単に適用できます。
レジストリファイルによっては即時に反映されるものもありますが、今回のキーマップカスタムは即時反映されず、システムの再起動が必要です。
ご注意
上の2つのレジストリファイルは、既にScancode Map値が存在する場合、その設定を上書きまたは削除することになります。そのため、他のキー設定が既に行われている場合は注意が必要です。
また、セキュリティツールによっては、レジストリファイルのダウンロードに警告が表示されたり、ダウンロードがブロックされる場合もあります。
ファイルをダブルクリックする前に、メモ帳やテキストエディタで中身を確認し、内容が不適切でないか、意味不明でないかを確認してから適用することをおすすめします。
CapsLockを左Shiftにすることで発生する日本語変換への影響
LinuxのFcitxやWindowsのIMEでは、CapsLockキーは英数字変換モードの切り替えキーとして利用されています。CapsLockを左Shiftに変更した場合、この機能は失われるため、他のキーに英数字変換モードの切り替えを割り当てる必要があります。これはFcitxやIMEの設定画面から簡単に行うことができます。ただし、英数字入力後に該当部分を選択し、「かな/カナ」キーを押して「変換」キーで変換する方法でも代用可能であり、必ずしも再設定する必要はありません。