CapsをCtrlに入れ替える
Emacsを使おう!と使い始めたものの,Ctrl押したつもりがCapsを押してしまってがっくりすることがしばしば.
そこでCapsをCtrlに入れ替えることにした.ついでに,Windows Keyなどの割り当ても変更する.
CapsをCtrlにする
Section "InputDevice" Identifier "Generic Keyboard" Driver "kbd" Option "CoreKeyboard" Option "XkbRules" "xorg" Option "XkbModel" "jp106" Option "XkbLayout" "jp" Option "XkbVariant" "jp106" EndSection
となっているところに以下を追加.個人的には,capsは使用しないのでctrlと入れ替えるのではなく両方ともctrlにする.入れ替えたい場合は,ctrl:swapcapsとすればOK.
Option "XkbOptions" "ctrl:nocaps"
keycodeを調べる
まず入れ替える予定のキーコードを調べる必要がある.調べるにはxevを使用する.xevを起動後,何かキーを叩けばkeycodeがわかる.
以下のは右のwin keyを叩いた例.この場合,keycode は116となる.
KeyPress event, serial 32, synthetic NO, window 0x1600001, root 0x3f, subw 0x0, time 2016149084, (128,103), root:(166,566), state 0x0, keycode 116 (keysym 0xffea, Super_R), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False
割り当てられているものを調べる.
xmodmapを使用する.
$xmodmap -pke
pkeオプションの意味は man xmodmap より転載.キーマップテーブルを標準出力に出力するとかそんなんかな?
This option indicates that the current keymap table should be printed on the standard output in the form of expressions that can be fed back to xmodmap
.Xmodmap
~/.Xmodmapを作成する.
!NumLock を押さなくてもテンキー使用可能に keycode 112 = slash keycode 63 = asterisk keycode 82 = minus keycode 79 = 7 keycode 80 = 8 keycode 81 = 9 keycode 86 = plus keycode 83 = 4 keycode 84 = 5 keycode 85 = 6 keycode 87 = 1 keycode 88 = 2 keycode 89 = 3 keycode 108 = Return keycode 90 = 0 keycode 91 = period !NumLock key には何も割り当てない keycode 77 = !Windows key を Alt key に keycode 115 = Alt_L Meta_L keycode 116 = Alt_R Meta_R
あとはxmodmapで読み込む.
$xmodmap ~/.Xmodmap
これらはX前提なのでコンソール上では効かない.コンソールで効かせる場合は,KubuntuでCtrlとCapsLockの入れ換え - 猫大好き、ネットワーク大好き。を参考にやってみる.(まだ試してない)