blog.ryunix.net

Gentoo Linux で Caps Lock を Ctrl にリマップする

はじめに

Gentoo Linux で Caps Lock を Ctrl にリマップする方法について書きます。

Gentoo wiki の Keyboard layout switching のページを参考にしました。

Keyboard layout switching - Gentoo wiki

コンソール用の設定

まず、Caps Lock を Ctrl にリマップするためのカスタムキーマップファイルを作成します。

/usr/share/keymaps ディレクトリで提供されている、左 Ctrl と Caps Lock を入れ替えるためのキーマップファイルを参考にしました。

user $ zcat /usr/share/keymaps/i386/include/ctrl.map.gz
keycode  29 = Caps_Lock
keycode  58 = Control
keycode  97 = Compose

このキーマップファイルには、左 Ctrl を Caps Lock にリマップする定義や、Caps Lock を Ctrl にリマップする定義が含まれています。 これから作成するカスタムキーマップファイルでは、Caps Lock を Ctrl にリマップする定義をそのまま使用します。 ただし、キーコードはシステムによって異なる可能性があるため、dumpkeys コマンドや showkey コマンドを使用して、実際のキーコードを確認しておくとよいでしょう。

次のコマンドを実行してカスタムキーマップファイルを作成します。 カスタムキーマップファイルには任意のファイル名を指定できます。

user $ echo 'keycode  58 = Control' > nocaps.map
user $ gzip nocaps.map

次に、作成したカスタムキーマップファイルを /usr/share/keymaps ディレクトリ以下の任意のディレクトリに移動します。 ここでは、参考にしたキーマップファイルと同じディレクトリにカスタムキーマップファイルを移動しました。

root # mv nocaps.map.gz /usr/share/keymaps/i386/include/

最後に、/etc/conf.d/keymaps ファイルを編集して extended_keymaps 変数に作成したカスタムキーマップ名を設定します。

root # vim /etc/conf.d/keymaps
--- a/keymaps
+++ b/keymaps
@@ -9,7 +9,7 @@ keymap="us"
 windowkeys="YES"
 
 # The maps to load for extended keyboards.  Most users will leave this as is.
-extended_keymaps=""
+extended_keymaps="nocaps"
 #extended_keymaps="backspace keypad euro2"
 
 # Tell dumpkeys(1) to interpret character action codes to be

これにより、次回以降のシステム起動時にカスタムキーマップファイルが読み込まれて、Caps Lock が Ctrl にリマップされます。

設定の変更をすぐに適用したい場合は、keymaps サービスを再起動します。

root # rc-service keymaps restart

X.Org Server 用の設定

X.Org Server 環境で Caps Lock を Ctrl にリマップする方法はいくつかありますが、ここでは X.Org Server の設定ファイルを使用します。 この方法は、デスクトップ環境を使用せず、ウィンドウマネージャーのみを使用する場合に推奨されています。

まず、設定ファイルを格納するためのディレクトリを作成します。

root # mkdir /etc/X11/xorg.conf.d

次に、Caps Lock を Ctrl にリマップするための設定ファイルを作成します。 設定ファイルには任意のファイル名を指定できますが、ファイル名は .conf で終わる必要があります。

root # vim /etc/X11/xorg.conf.d/10-keyboard.conf
Section "InputClass"
	Identifier "keyboard-all"
	MatchIsKeyboard "on"
	Option "XkbOptions" "ctrl:nocaps"
EndSection

これにより、次回以降の X.Org Server 起動時に設定ファイルが読み込まれて、Caps Lock が Ctrl にリマップされます。