Xmodmap is a utility for modifying keymaps and pointer button mappings in Xorg.
The Linux kernel generates a code each time a key is pressed on a keyboard. That code is compared to a table of keycodes defining a figure that is then displayed.
This process is complicated by Xorg, which starts its own table of keycodes. Each keycode can belong to a keysym. A keysym is like a function, started by typing a key. Xmodmap allows you to edit these keycode-keysym relations.
Print the current keymap table formatted into expressions: Template:Command
Each keymap is followed by the keysyms it is mapped to. The above example indicates that the keycode Template:Codeline is mapped to the lowercase n keysym, while the uppercase N keysym is mapped to keycode 57 and shift.
Each keysym column in the table corresponds to a particular key combination:
- shift + key
- mode_switch + key
- mode_switch + shift + key
- AltGr + key
- AltGr + shift + key
Not all keysyms have to be set, but if you want to assign a later keysym without assigning earlier ones set the earlier keysyms to Template:Codeline.
You can create your own map and store it in your home directory (i.e. Template:Filename). Print the current keymap table into a configuration file:
xmodmap -pke > ~/.Xmodmap
Make the desired changes to Template:Filename and then test the new configuration with:
To activate your custom table when starting Xorg add the following: Template:File
Alternatively, edit the global startup script: Template:Filename.
Within a shell, you can make changes for the current session. For example:
xmodmap -e "keycode 46 = l L l L lstroke Lstroke lstroke" xmodmap -e "keysym a = e E"
You can also also edit the keys: shift, ctrl alt and super (there always exists a left and a right one (Alt_R=AltGr))
At first you have to delete/clear the signals that should be edited. Write at the beginning of your Xmodmap file (here: ~/.xmod) :
!clear Shift !clear Lock clear Control !clear Mod1 !clear Mod2 !clear Mod3 clear Mod4 !clear Mod5 keycode 8 = ...
Remember: ! is a comment. So only Control and Mod4 (Standard: Super_L Super_R) get cleared.
Write the new signals at the end of ~/.xmod:
keycode 255 = !add Shift = Shift_L Shift_R !add Lock = Caps_Lock add Control = Super_L Super_R !add Mod1 = Alt_L Alt_R !add Mod2 = Mode_switch !add Mod3 = add Mod4 = Control_L Control_R !add Mod5 =
Here: We exchanged the Super-keys with the ctrl-keys. My lil' finger likes that really ;).