LoginSignup
9
10

More than 5 years have passed since last update.

CentOS7 で Caps Lock に Ctrl を割り当てる

Last updated at Posted at 2016-12-09

はじめに

GUIのない最小構成のCentOS7でCaps LockにControlを割り当てようとしたらつまづいたのでメモを残しておきます.

CentOSのバージョンは 7.1.1503 です.

cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)

Linuxにあまり詳しくないため,間違いがある場合やより良い方法をご存知の方はコメントをお願いいたします.

変更方法

変更方法ですが,Caps_LockにControlを割り当てたkeymapを用意し,loadkeysコマンドで変更を反映します.

使用するコマンドの一覧は次の通りです.

showkey    #keycodeの確認
dumpkeys   #現在のkeymapを出力する
loadkeys   #keymapをloadする

keycodeを調べる

まずは showkey コマンドによって現在しようしているキーボードのkeycodeを取得します.
showkey コマンドは押した(離した)キーのkeycodeを出力するコマンドです.
また,最後にキーを押した10秒後にコマンドが終了します.

$ showkey
kb mode was UNICODE
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]

press any key (program terminates 10s after last keypress)...
keycode  28 release    #showkeyコマンド実行時に押したEnterを離した
keycode  58 press      #Caps Lockを押した
keycode  58 release    #Caps Lockを離した
keycode  29 press      #左下のControlを押した
keycode  29 release    #左下のControlを離した

以上により,Caps Lockは58,Controlは29であることがわかりました.

keymapをダンプする

dumpkeysコマンドで現在使用しているkeymapの情報をダンプすることができます.

まずはバックアップをとります.

$ dumpkeys > backup.kmap

ダンプされたkeymapには

keymaps 0-127
keycode    1 = Escape
...

のように keycode 128個の割り当てが設定されています.

keyshowコマンドによってCaps_Lockのkeycodeが58であることが分かったため,keycode 58を変更すれば良いことがわかります.

それでは Caps Lock に Control を割り当てたkeymapを作成します.

$ cp backup.kmap caps_to_ctrl.kmap
$ vim caps_to_ctrl.kmap

caps_to_ctrl.kmap の keycode 58 の項目を見てみると次のように書いてあります.

keycode  58 = CtrlL_Lock

keyshowコマンドでは Control のkeycodeが29であることも分かったため,そちらも確認します.

keycode  29 = Control

以上より、keycode 58を次のように変更します.

keycode  58 = Control

あとは変更したkeymapであるcaps_to_ctrl.kmapを読み込むだけです.

keymapの読み込み

keymapの読み込みは loadkeys で行います.

$ sudo loadkeys caps_to_ctrl.kmap

以上で割り当ての変更は完了です.

実行時に自動的に割り当てを変更する

ログイン時に毎回 sudo loadkeys を実行するのは面倒なので,自動的に実行するように設定します.

まずは caps_to_ctrl.kmap を次のディレクトリに移動します.
(任意のディレクトリで問題ありませんが,ユーザのディレクトリ以下に配置するとroot権限でなくても簡単に削除等ができてしまうため,以下が無難だと思います.)

$ sudo mkdir /usr/share/keymaps
$ sudo mv caps_to_ctrl.kmap /usr/share/keymaps

次に,/etc/rc.local に次の一文を追記します.
rc.local は boot 時に実行されます.

/usr/bin/loadkeys /usr/share/keymaps/caps_to_ctrl.kmap

ここで注意ですが,rc.localを良く見ると次のような記述があります.

# Please note that you must run 'chmod +x/etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

/etc/rc.d/rc.local に実行権限を与えないと rc.localが実行されず,loadkeysも実行されません.

したがって,次のコマンドを実行します.

$ sudo chmod +x /etc/rc.d/rc.local

これで設定は完了です.

まとめ

CentOS7 で Caps Lock に Ctrl を割り当てました.

rc.local に loadkeys を記述したことによって,起動時に自動的に変更が適用されます.

もし変更の際に予想外のミスをしてしまった場合は,最初に作成したバックアップ backup.kmap を loadkeys することで元の keymap に変更することができます.

参考

以下のサイトが大変参考になりました.

http://lambdalisue.hatenablog.com/entry/2013/09/27/212118
http://superuser.com/questions/290115/how-to-change-console-keymap-in-linux

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10