Difference between revisions of "Xmodmap"
(→xmodmap within a shell) |
(→Keysym: error in syntax) |
||
Line 42: | Line 42: | ||
It is also possible, to change the keysym. I.e: | It is also possible, to change the keysym. I.e: | ||
− | + | keysym a = e E | |
− | keysym a = e E | + | * a -> e |
− | + | * shift+a -> E | |
− | |||
− | |||
It has the same effect as editting the corresponding keycode. | It has the same effect as editting the corresponding keycode. | ||
Revision as of 13:31, 11 March 2010
Contents
Xmodmap
If you're typing a key on your keyboard, the kernel is generating a code. This code will be compared to a table of keycodes defining a figure. And it will be displayed i.e. the letter a.
With X, it's a bit more comlicated, because it's starting its own table of keycodes. Each keycode can belong to a keysym. A keysym is like a function, started by typing a key. You can edit these keycode-keysym relations with xmodmap.
Structure
keycode n = keysym1 keysym2 keysym3 keysym4 keysym5 keysym6
n is representing a number. The keysymX stands for:
1 only the key 2 shift + key 3 mode_switch + key 4 mode_switch + shift + key 5 AltGr + key 6 AltGr + shift + key
Not all keysyms have to be set. But if you want i.e. keysym5, you have to set keysym1 till keysym5. Therefore, you can use NoSymbol which is doing nothing.
Comments start with a !
Editing
Extract your actual table of keycodes in a file (here: .xmod)
xmodmap -pke > ~/.xmod
Now you can edit .xmod. The new .xmod get loaded by
xmodmap ~/.xmod
This has be done after each start of X! So put it in your autostart...
You can get the keycode (and more information) of a key with xev (or xkeycaps). If you start xev within a shell, a window will be opened and if you type a key, there will be some informations about it in the shell. Among others you get the keycode.
Example
If I'ld to get an 'e' if I type 'l' and an 'E' if I type 'L', I'ld have to change
keycode 46 = l L l L lstroke Lstroke lstroke
to
keycode 46 = e E l L lstroke Lstroke lstroke
(Maybe my standard keycode differs from yours. This will be an result of using different keyboard layouts)
Keysym
It is also possible, to change the keysym. I.e:
keysym a = e E
- a -> e
- shift+a -> E
It has the same effect as editting the corresponding keycode.
xmodmap within a shell
Within a shell, you can type make changes for this session. It's useful for testing. Examples:
xmodmap -e "keycode 46 = l L l L lstroke Lstroke lstroke" xmodmap -e "keysym a = e E"
Special keys/signals
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 changed the Super-keys with the ctrl-keys. My lil' finger likes that really ;).