Tutorial
The following tutorial session demonstrates the operation of XmetaX the Keymap
XmetaX must be installed totally (Installation).
You must be logged into an X Window environment with XmetaX proxy and the Keymap option must be configured (Options).
You will have to start a terminal emulator like xterm, cmdtool, dtterm, etc. from the command line.
First, change the command path so that the shell can find the XmetaX proxy and the xxmodmap program in the installation directory /opt/XSOXmetaX (Installation directories). Modify the command path accordingly, for instance using the Bourne shell:
PATH="$PATH:/opt/XSOXmetaX/bin"
export PATH
or with the C shell:
set path=($path /opt/XSOXmetaX/bin)
Then choose a free X Window display number, for instance :1, and set the $DISPLAY environment variable accordingly, using the Bourne shell:
DISPLAY=:1
export DISPLAY
or with the C shell:
setenv DISPLAY :1
Now you can start the XmetaX proxy in the background:
xmetax $DISPLAY display :0 accessControl off &
You will change different keyboard mappings affecting already running clients. First store the current mapping into a file, so that you may reset the mapping at any time:
xxmodmap -pke > Reset
You may apply this mapping using one of the following commands:
xxmodmap Reset
xmodmap Reset
Then create two files each containing xmodmap expressions:
echo keysym q = w > Xqw
echo keysym w = q >> Xqw
echo keysym y = z > Xyz
echo keysym z = y >> Xyz
Each pair of expressions exchanges the mapping of two keys.
You may check the effect of a mapping modification by simply typing into a terminal emulator window. Start two terminal emulators from the command line:
xterm -name one &
xterm -name two &
For changing the global mapping execute the command
xxmodmap -global Xqw
This exchanges the (meanings of the) keys q and w for all X Window clients. Applying the same command again restores the normal mapping:
xxmodmap -global Xqw
The command
xxmodmap -name one Xqw
modifies the keyboard mapping of the first of the previously started terminal emulators only. Changing the global mapping again (now exchanging the keys y and z)
xxmodmap -global Xyz
has no effect on this terminal emulator. Restore the global mapping and the client mapping:
xxmodmap -global Xyz
xxmodmap -name one Xqw
Even though the terminal emulator has the normal mapping, its client mapping is defined. Therefore it does not react to a modification of the global mapping:
xxmodmap -global Xyz
Restore the global mapping:
xxmodmap -global Xyz
The client does not respect a global modification until you disable its client mapping:
xxmodmap -name one
xxmodmap -global Xyz
Now the keys y and z are exchanged for all clients, including the first terminal emulator. Restore the normal mappings:
xxmodmap -global Xyz
Changing the default mapping does not affect already running clients:
xxmodmap -default Xqw
Only newly started clients get the modified mapping:
xterm -name three &
Disabling the default mapping does not affect the third terminal emulator:
xxmodmap -default
The third terminal emulator gets the exchanged keys. A newly started client gets the normal mapping:
xterm -name four &
Close the terminal emulator windows and restore the global mapping:
xmodmap Reset
Finally terminate the XmetaX proxy process:
xmetaxtool -terminat