setting up my keyboards (wip)

i used to be a mac user and apple keyboards are mostly the same as pc keyboards except the placement of the alt key. i’ve gotten very used to having the alt key there and since i am a linux user, i had made use of the command key as the super key and made it my mod4 key. also, i make the caps lock key a control key. so, when i got a new keyboard, i had to make things the way i like them.

linux console

starting with the linux console, i had to figure out how to make the caps lock key a control key before i went insane. also, it would be nice to have the alt key (which is actually the super key, but i swapped the pieces) function as well. this was actually really easy.

--- us.map
+++ my-kbd.map
@@ -49,6 +49,7 @@
 keycode  56 = Alt
 keycode  57 = space
   control keycode  57 = nul
-keycode  58 = Caps_Lock
+keycode  58 = Control
 keycode  86 = less             greater          bar
 keycode  97 = Control
+keycode 125 = Alt

x11 keys

where i got into trouble was trying to figure out how to make the alt key behave like a super and make the super key behave like an alt key in x11. i already had some Xmodmap rules in place to make the caps lock key a control key, they are in a file that is called when x11 starts with a command like xmodmap ~/.Xmodmap:

!! make caps lock a control key
remove Lock             = Caps_Lock
keysym Caps_Lock        = Control_L
add Control             = Control_L

!! make right alt a multi key
keycode 108             = Multi_key

then to get the alt and super keys switched, i found that the file /usr/share/X11/xkb/keycodes/evdev was the file read, so i just made the change there

--- evdev-backup
+++ evdev
@@ -65,13 +65,14 @@
  <AB10> = 61;
  <RTSH> = 62;
 
- <LALT> = 64;
+  // Swapped LALT and LWIN on keyboard, so need to change codes
+ <LALT> = 133;
  <LCTL> = 37;
  <SPCE> = 65;
  <RCTL> = 105;
  <RALT> = 108;
  // Microsoft keyboard extra keys
- <LWIN> = 133;
+ <LWIN> = 64;
  <RWIN> = 134;
  <COMP> = 135;
  alias <MENU> = <COMP>;

since this file is automatically loaded for my keyboard, i didn’t have to add anything to my xorg.conf which was convenient.

debugging tools

for the linux console, using showkey, dumpkeys, and loadkeys made this really simple to find the codes needed.

in x11, using xev and xmodmap -pke to get a dump of the keys worked well, too.

actually figuring out i needed to change /usr/share/X11/xkb/keycodes/evdev was the result of a few greps looking for where keycode 133 was handled.