Ubuntu – How to remap “special” keys in xkb

configurationkeyboardkeyboard-layoutxkbxorg

I've been trying to migrate my keyboard mapping from xmodmap to xkb, but I'm having some trouble. I can see where to modify the "normal" keys, in /usr/share/X11/xkb/symbol/us for me, but this file seems devoid of "special" keys, including modifiers.

The full remapping that I wish to achieve is:

  • Swap Left Ctrl and Shift
  • Replace Right Ctrl with Shift
  • Replace Right Shift with '
  • Replace ' with /
  • Right blank key (keycode 97) to Menu
  • Left blank key (keycode 92) to AltGr
  • AltGr encodings:
    • keycode 20 = minus underscore minus underscore endash emdash
    • keycode 60 = period greater period greater ellipsis
    • Fn+F5 and Fn+F6 control brightness
    • keycode 148 = XF86MonBrightnessDown NoSymbol XF86MonBrightnessDown
    • keycode 179 = XF86MonBrightnessUp NoSymbol XF86MonBrightnessUp

How can I achieve this?

Best Answer

The solution is to create AltGr encodings in /usr/share/X11/xkb/symbol/us, but swap most keys using /usr/share/X11/xkb/keycodes/evdev instead.

(However, I haven't worked out how to map Fn+F5 and Fn+F6 to XF86MonBrightnessDown and XF86MonBrightnessUp yet.)

Related Question