Windows

Windows10でCaps LockキーをCtrlキーに変更する

更新日:

すっかりシリーズ化した変態シリーズ(笑)ですが、今回はWindows10でCaps LockキーをCtrlキーに変更する方法を紹介します。

私はテキストエディタとしてEmacsを愛用しているので、Caps Lockキーの位置にCtrlキーがある方が操作に便利です。EmacsはCtrlキーを多用しますからね。他にも間違えてCaps Lockキー押してしまってイラっとすることも多いし、そもそものCaps Lockは使いません。なのでCaps LockキーをCtrlキーに替えてしまいます。

Caps LockキーをCtrlキーに変更すると、Caps Lockの機能はキーボードからは使えなくなります(マウスでCaps LockのON/OFFはできる)。それでは嫌だという人は、Caps LockキーとCtrlキーを入れ替える方法も簡単に説明しますので、そちらを参照してください。

ちなみに最近、Mac(MacBook。もちろん英語キーボード)を使い始めましたが、Caps LockキーとCtrlキーを簡単に入れ替えられたので感心しました。確かMacBookの日本語キーボードは、デフォルトでCaps Lockキー位置がCtrlキーだったと思います(Macえらい!)。私の好きなキーボードのHHK(Happy Hacking Keyboard。もちろん英語キーボード)も、ディップスイッチで簡単にCaps LockキーとCtrlキーを入れ替えられます(HHK万歳!!ちなみに東プレのキーボードもディップスイッチで入れ替えられます)。

前置きがだいぶ長くなりましたが、今回も例によってレジストリを修正しますので、実施は自己責任でお願いします。直接レジストリを修正するのがどうしても嫌な人は、キーを入れ替えるフリーソフトがたくさんありますのでそれを使っても良いでしょう。Caps LockキーとCtrlキーを入れ替えるだけなら、Windows謹製の「Ctrl2cap」というツールもあります(Windows10で動作するのかな?)。私の場合、これまた例によって仕事で支給されたノートPCをここで紹介した方法で変更しました(フリーソフトを勝手にいれらないのでしょうがない!)。

なお、ここで紹介する方法はMicrosoftのドキュメントのKeyboard and mouse class driversScan code mapper for keyboards(英語)で詳しく説明されています。このドキュメントはWindows 2000とWindows XPを対象にしたものになっていますが、Windows 7やWindows 10でも(少なくともこの記事の変更は)動作することは確認しています。

スキャンコードのマッピングの概要

実際に変更する前に、仕組みについて最初に説明します(直ぐにでも変更したいという方はこちらにお進みください)。

今回実施する変更は、簡単にいうと、あるキーが押された時に送られるスキャンコードをマッピング(つまり別のスキャンコードに変換)して、別のキーが押されたとシステムに認識させます。

スキャンコードとは、キーボードのキーが押されたり離されたりしたときに、キーボードからシステムに送られるコード(走査コードともいう)のことです。スキャンコードは物理的なキーを識別するためのコードで、たとえばキーボードで「A」と印字されたキーを押すと、そのキーの位置のスキャンコードが送ら、受け取るシステム側はそのスキャンコードのキーは「A」キーであると認識して、押されたときの動作(印字するなど)を実行します。

したがって、Caps LockキーをCtrlキーとして機能するようにするには、Caps Lockキーが押されたときのスキャンコードをCtrlキーのスキャンコードに変換してシステムに渡してやれば良いということになります。

Windowsでこれを行うには、スキャンコードをマッピングするためのデータをレジストリに追加してあげます。どんなデータを追加するかというとは、Scan code mapper for keyboardsで詳しく説明されていますが、おさらいしてみましょう。わかりやすいように少し文言を変えていますので、正確なものはドキュメントを参照してください。

スキャンコードをマッピングするためのデータは次のような形式のものです。

マッピングデータの形式
開始オフセット
(単位:バイト)
サイズ
(単位:バイト)
データ
04ヘッダー:バージョン情報
44ヘッダー:フラグ
84ヘッダー:マッピングデータの数
124個々のマッピングデータ
.........
最後の4バイト4Nullターミネーター(0x00000000)

開始オフセットは先頭からのバイト数を表し、サイズはそれぞれのデータのバイト数です。

ヘッダーのバージョン情報とフラグにはすべて0を設定します。次のマッピングデータの数には、その後に続くマッピングデータの合計数を設定します。これには最後のNullターミネーターの分も含めます。数え方は4バイトごと(DWORDごと)に1カウントします。個々のマッピングデータは長さが4バイト(DWORD)で、上位2バイト(WORD)が置き換えられるキーのスキャンコード、下位2バイト(WORD)が置き換えるキーのスキャンコードになります。個々のマッピングデータは複数あっても構いません。

したがって、Caps LockキーをCtrlキーに変更するマッピングデータは次のようになります(16進数表記)。

00000000 ← ヘッダー情報
00000000 ← フラグ
00000002 ← マッピングデータの数
003A001D ← マッピングデータ
00000000 ← Nullターミネーター

Caps Lockキーのスキャンコードは16進数で3A、左のCtrlキーは1Dですので、マッピングデータは16進数表記で003A001Dになります。マッピングデータの数は、個々のマッピングデータが1つ、それとNullターミネーターの分をあわせて2を設定します。

このマッピングデータをWindowsのレジストリに追加します。具体的には次のレジストリキーに追加します。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout

Caps LockキーをCtrlキーに変更する

それでは実際に変更してみましょう。手順は次の通りです。

  1. [Windowsキー]+[r]キーで[ファイル名を指定して実行]ダイアログを起動します。

  2. [名前]にregedit.exeを入力し、Enter キーを押します。

  3. レジストリ エディターで、次のキーまで辿ってKeyboard Layoutをクリックします(Keyboard Layoutsというキーもあるので注意)。

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
    Scancode Mapを追加する前のレジストリの状態
    レジストリのイメージ
  4. [ファイル] > [エクスポート]をクリックして、任意のファイル名でエクスポートしてバックアップを取ります。

  5. [編集] > [新規] > [バイナリ値]をクリック、名前を「Scancode Map」とします。

    Scancode Mapを追加した後のレジストリの状態
    Scancode Mapを追加した後のイメージ
  6. 右クリックして、コンテキストメニューから[修正]をクリックします。すると[バイナリ値の編集]ダイアログボックスを立ち上がります。

  7. 次のデータを16進数で入力します。

    00 00 00 00 00 00 00 00
    02 00 00 00 1D 00 3A 00
    00 00 00 00
    Scancode Mapの設定値を入力する
    データ入力のイメージ
  8. 修正が完了したら[OK]ボタンをクリックします。

  9. 最後に、レジストリエディタを終了して、設定を反映させるためにシステムを再起動します。

左CtrlキーとCaps Lockキーを入れ替える

左CtrlキーとCaps Lockキーを入れ替えるには、左CtrlキーのスキャンコードをCaps Lockキーのものに変換し、左CtrlキーのものをCaps Lockキーに変換します。Scan code mapper for keyboardsに、左CtrlキーとCaps Lockキーを入れ替えるときのマッピングデータの具体的な例があります。それは次のようなものです。

手順は先程と同じです。マッピングデータだけ次のように変更します。

00000000
00000000
00000003
001D003A
003A001D
00000000

4行目と5行目が左CtrlキーをCaps Lockキーを入れ替える設定です。Caps Lockキーのコードは0x3A、左Ctrlキーのコードは0x1Dなので、左CtrlキーをCaps Lockキーにするのは4行目の001D003Aの設定です。5行目の設定は先ほどと同じです。マッピングデータの数はNullターミネーターを含めて3行分(1行が4バイト)なので00000003を設定します。

実際にレジストリに入力するイメージにすると次のようになります。

00 00 00 00 00 00 00 00
03 00 00 00 3A 00 1D 00
1D 00 3A 00 00 00 00 00
左CtrlキーとCaps Lockキーを入れ替えたイメージ
データ入力のイメージ

レジストリの設定を復元する

最後にレジストリの設定を復元する方法をみておきましょう。復元するのは簡単で、手順4でエクスポートしたバックアップしたファイル(拡張子.reg)をダブルクリックするします。これだけで設定は元に戻ります。

復元したあとは念のためレジストリエディタで設定が戻っているか確認しましょう。あとはシステムを再起動すれば設定が反映されます。

おわりに

ここで説明したことからわかる通り、キーのスキャンコードさえ分かっていれば、どのようなキーでも置き換えることができるはずです。不満があればそれを受け入れず、どんどん変えていきましょう。なの、キーのスキャンコードを調べるなら、Keymillのようなツールを使えば調べることができます。

最後までお読みいただいてありがとうございます。

-Windows

Copyright© アナグマのモノローグ , 2021 All Rights Reserved Powered by STINGER.