LDP/LDP/howto/docbook/Intkeyb.sgml

5507 lines
96 KiB
Plaintext
Raw Blame History

<!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
<article>
<artheader>
<title>How to setup international keyboard in X Window with Xmodmap and XKB</title>
<AUTHOR>
<firstname>by Juraj Sipos, <ulink
url="mailto:xvudpapc@savba.sk">xvudpapc@savba.sk</ulink></firstname>
</AUTHOR>
<pubdate>v1.3, 01 December 2001</pubdate>
<abstract>
<para>
How to setup international keyboard in Linux or Unix with Xmodmap and XKB written by (c) Juraj Sipos. The Xmodmap is a file that XFree86 reads in order to give you a keyboard
layout. This solution will work for you in setting up any international keyboard for (Debian, RedHat, Mandrake, CorelLinux) Linux, FreeBSD, OpenBSD, NetBSD and possibly every Unix that uses XFree86. The advantage of this howto is that it is not architecture specific and will work on all other systems. However, it is a little experimental in that that it bypasses some standardized XFree86 solutions (with respect to its older versions), although a standard form of internationalization is included too.
</para>
</abstract>
</artheader>
<sect1>
<title>Introduction</title>
<sect2>
<title>Copyright</title>
<para>
This documentation is free documentation; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
</para>
<para>
This documentation is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
</para>
</sect2>
<sect2>
<title>Revision history</title>
<para>
<variablelist>
<varlistentry>
<term>Version 1.0.0</term>
<listitem>
<para>
Initial version Summer 1999
</para>
</LISTITEM>
</varlistentry>
<varlistentry>
<term>Version 1.1</term>
<listitem>
<para>
Added copyright information and slight modifications pertaining to newer systems
</para>
</LISTITEM>
</varlistentry>
<varlistentry>
<term>Version 1.2</term>
<listitem>
<para>
Completely rebuilt, added the possibility to force the system to read Xmodmap; some national Xmodmap files added, more information included on building up the standard Xmodmap files
</para>
</LISTITEM>
</varlistentry>
<varlistentry>
<term>Version 1.3</term>
<listitem>
<para>
Minor corrections, spell checking and editation made, few more Xmodmap files added; list of what all ISO8859* specifications mean
</para>
</LISTITEM>
</varlistentry>
<varlistentry>
<term>Version 1.4</term>
<listitem>
<para>
Correction of script for including X Window fonts to StarOffice
5.2
</para>
</LISTITEM>
</varlistentry>
<varlistentry>
<term>Version 1.5</term>
<listitem>
<para>
December 2001, Links on internationalization added, info on XKB, troubleshooting, info on newer Linux versions, StarOffice 6
</para>
</LISTITEM>
</varlistentry>
</variablelist>
</para>
</sect2>
<sect2>
<title>Introduction</title>
<para>
The international keyboard Xmodmap HOWTO. Copyright (C) 1999, 2001 Juraj Sipos
(xvudpapc@savba.sk). Imagine you use a Linux or a BSD OS and want to write
a business letter to a person that has a foreign name with a slash or
idiaresis. Danish language uses signs like <20> and Spanish like <20>.
</para>
<para>
This is the Xmodmap Howto, but some info on XKB is included, too.
With this information you can make your own international keyboard
layout without installing any additional packages. The following
information will help you set up German, Spanish, Italian,
Slovak, Czech, Polish, Slovenian, Croatian, Danish,
Dutch, French, Finnish, Norwegian, Estonian, Latvian, Swedish and
other keyboards. You can also alternatively look at my hompage
at <ulink
url="http://www.freebsd.nfo.sk/">http://www.freebsd.nfo.sk</ulink>
to see layouts of various keyboards. In case you want to install
Greek, Hebrew or Russian language, follow my information and apply
changes pertinent to these languages also with respect to other
documentation (e.g., install Greek fonts, etc., see the Cyrilic,
Hebrew, or Danish howto).
</para>
</sect2>
</sect1>
<sect1>
<title>Setting up international keyboard in X Window System with Xmodmap and XKB</title>
<sect2>
<title>Quick start</title>
<sect3>
<title>Xmodmap</title>
<para>
Make your own .Xmodmap file according to information in this file.
</para>
<para>
Write the following to your .bash&lowbar;profile in your home directory:
</para>
<para>
export LANG=language
</para>
<para>
where "language" is the language you want to use. The languages can be
found in the file locale.alias in /usr/X11R6/lib/X11/locale.
Note: some programs, like Mozilla, won't care about these user's locale settings.
Run "exit" command on the console and log in again for bash to read
the statement from its .bash&lowbar;profile.
</para>
<para>
Install fonts (best are ISO8859-2 Type1 fonts for Eastern Europe, Czech
or Slovak), put them in your font path in the /etc/X11/XF86Config file
(on some newer systems this is not necessary). Start X Server.
Run the command "xmodmap &nbsp;/.Xmodmap" from an X terminal window to force
the system to read the .Xmodmap file.
</para>
</sect3>
<sect3>
<title>XKB</title>
<para>
Provided you have your fonts installed, just open the X Terminal window
and issue a command: setxkbmap kb, where "kb" is the keyboard layout you
want to use, for example:
setxkbmap si
</para>
<para>
for the Slovenian language
</para>
<para>
setxkbmap de
</para>
<para>
for the German language
</para>
<para>
All the language names you may use are located in /usr/X11R6/lib/X11/xkb/symbols
directory.
</para>
<para>
If you are using KDE, open the KDE Start button, click on Preferences,
Personalization, Country &#38; Language and choose ISO8859-2 charset. Note that
this may be slightly different depending on the Linux distribution.
</para>
<para>
Switch the keyboard (my xmodmap definition uses Scroll Lock for switching,
other xmodmap files use Right Alt) and enjoy.
</para>
<para>
You may alternatively edit the /etc/X11/Xf86Config file as explained in
the Danish Howto, or issue this command in an X terminal window for
the Slovak keyboard:
</para>
<para>
setxkbmap -model pc102 -symbols 'czsk(us&lowbar;sk&lowbar;qwertz)'
setxkbmap cs -option grp:shift&lowbar;toggle
</para>
<para>
In RedHat 7.2 and Mandrake 8.1, it is enough to run the following
setxkbmap command from an X Terminal Window (assuming you have correct
fonts installed):
setxkbmap sk
setxkbmap si
setxkbmap de
</para>
<para>
qwerty or qwertz means that the letter z Z and y Y are swapped.
</para>
<para>
To see a variety of language maps (symbols), look in the file symbols.dir
in /usr/X11R6/lib/X11/xkb directory.
</para>
<para>
Some X Window managers override .Xmodmap setting. If .Xmodmap isn't
read by X automatically after starting the X Window System, a good way
is to force the system to read it from your root (home) directory.
You will do this by issuing the following command from an X terminal window:
</para>
<para>
xmodmap &nbsp;/.Xmodmap
</para>
<para>
After I installed the Slovak keyboard in KDE with Xmodmap file that used
the standard definitions for ISO8859-2 keycode entities (lcaron, scaron, etc.),
I couldn't write in Slovak or Czech, so I made few changes to the Xmodmap file
explained later in this file. After applying these changes, no other
changes were necessary.
</para>
</sect3>
</sect2>
<sect2>
<title>How to do it - this experimental or nonstandard solution is not necessary for newer versions of XFree86. Skip this if not interested</title>
<para>
Put the following in your .bash&lowbar;profile:
</para>
<para>
export LANG=language
</para>
<para>
OR
</para>
<para>
OR for csh shell
</para>
<para>
setenv LANG=langauge
</para>
<para>
and have the standard Xmodmap file in your home directory. If you ask me
where you may obtain such "standard" Xmodmap files, go to GNOME
../share directory. The file /usr/X11R6/lib/X11/locale/locale.alias
contains the aliases for langauges, so look there in order to find out
what is ca&lowbar;ES or br&lowbar;FR (the exact syntax for your language to use -
you cannot write "croatia" but you must write "croatian", not "Croatian";
this is very important, as Unix is case sensitive).
</para>
<para>
Now you must install the pertinent language fonts and put path
in XF86Config file to these fonts. If you want to internationalize your
keyboard, use the standard Xmodmap definitions first and use right alt
to switch between keyboards (if you use GNOME Xmodmap files).
If it does not work, do the following:
</para>
<para>
a) Copy the "Compose"
file from: /usr/X11R6/lib/X11/locale/iso8859-2
to: /usr/X11R6/lib/X11/locale/iso8859-1 directory (yes, iso8859-1,
not iso8859-2). Back up the original "Compose" file if you want
</para>
<para>
b) Put the included .Xmodmap file to your root directory (Slovak
language, or make your own .Xmodmap file, or choose from the ones
listed here).
</para>
<para>
c) Install ISO8859-2 fonts (or other pertinent fonts).
</para>
<para>
You may try to issue the command:
</para>
<para>
xset q
</para>
<para>
to see which fonts are in your path.
</para>
<para>
If you want to add fonts in your path from the X Window System,
issue the command:
</para>
<para>
xset fp+ /usr/fonts&lowbar;path
</para>
<para>
xset fp rehash
</para>
<para>
d) Disable every "Scroll Lock" uncommented line in your XF86Config,
because our .Xmodmap file for the Slovak language uses the Scroll Lock to
switch between keyboards.
</para>
<para>
e) Put the appropriate fontpath for your newly installed fonts
in the XF86Config file, if necessary (Mandrake 7.2 and other OS's may not
require this). The Xmodmap solution may be applied to all X keyboards
of your choice.
</para>
<para>
First, I must say that in my solution (in older XFree86 versions),
different mapping is used for Xmodmap keycodes for some ISO8859-2
keycode entities. ISO8859-2 definitions (keycode entities) like lcaron,
zcaron actually do not work. This means that the ISO8859-1 definitions
must be used instead and they will either give you what they say they
are (aacute &lsqb;<3B>], eacute &lsqb;<3B>], etc.), or they will not give you
what they say they are (using ISO8859-2 fonts, putting "threequarters"
in your .Xmodmap file will not give you "3/4" but "z" with a caron,
a reversed &circ; above it). For example, "mu" will give lcaron, "oslash"
rcaron, etc.
</para>
<para>
However, other key definitions, for example, adieresis (a with two
dots above it), uacute (u with a slash above it), as well as dead&lowbar;diaeresis
do not require a substitution of other definitions and work pretty well,
as they're defined everywhere (a dead key is a key you press, hold
it, yet nothing happens, but after pressing another key you will get
a special letter).
</para>
<para>
The original "Compose" file in ../iso8859-1 directory can be fully
utilized for English, Slovak or Czech keyboard layouts (Polish, Hungarian,
Slovenian, Croatian) in some older XFree86 distributions, but there is
only one problem - dead keys do not work. That's why you have to copy
the "Compose" file from the iso8859-2 directory to iso8859-1 directory,
or alternatively, you can edit the "Compose" file in iso8859-1 directory.
</para>
<para>
You can leave the Keyboard section in your XF86Config file without
much change. Put (if it's not already there) the following in the
"Keyboard" section:
</para>
<para>
Section "Keyboard"
</para>
<para>
Protocol "Standard"
</para>
<para>
XkbRules "xfree86"
</para>
<para>
XkbModel "pc101"
</para>
<para>
XkbLayout "us"
</para>
<para>
Force the system to read the xmodmap map by issuing the command:
"xmodmap &nbsp;/.Xmodmap". Alternatively, you can have 60 .Xmodmap files
like .Xmo1, .Xmo2, .Xmo3, .Xmo4, etc., and you may force the system
to read them (xmodmap &nbsp;/.Xmo1). The dot means it is a hidden file and
it is not necessary. You may also have xmo1, xmo2, or xmo3 Xmodmap files.
</para>
<para>
StarOffice 6.0 handles well conversion to win1250 and vice versa, so you
can transport documents to a M$ platform. In my Mandrake 8.0, StarOffice 6.0
was internationalized immediately after using my standard Xmodmap solution.
All the fonts worked. However, with StarOffice 5.2 this is not the case.
In StarOffice 5.2, you must add X fonts to StarOffice's fonts directory.
Here is a script that will do it for you. Cut it, name it "so52", make
it executable (chmod +x so52), copy it to the StarOffice5.2/share/xp3
directory and execute it there.
</para>
<para>
-------------------------------cut&lowbar;here-----------------------------------
</para>
<para>
&num;!/bin/sh
</para>
<para>
&num; Put path to your StarOffice here
</para>
<para>
STAR&lowbar;OFFICE&lowbar;ROOT=/mnt/StarOffice5.2
</para>
<para>
FONTS&lowbar;DIR=/usr/X11R6/lib/X11/fonts/ISO8859-2/Type1
</para>
<para>
&num; -----------------------------------------------------------------------
</para>
<para>
&num; Don't edit the script here
</para>
<para>
&num; -----------------------------------------------------------------------
</para>
<para>
XP3&lowbar;DIR=$STAR&lowbar;OFFICE&lowbar;ROOT/share/xp3
</para>
<para>
if &lsqb; -e $XP3&lowbar;DIR/psstd.fonts.il2 ]; then
</para>
<para>
echo "Changes were already done!"
</para>
<para>
echo "If there's a problem, delete the file"
</para>
<para>
echo " $XP3&lowbar;DIR/psstd.fonts.il2"
</para>
<para>
exit 1
</para>
<para>
fi
</para>
<para>
if &lsqb; -e $FONTS&lowbar;DIR/afm ]; then
</para>
<para>
AFM&lowbar;DIR=$FONTS&lowbar;DIR/afm
</para>
<para>
else
</para>
<para>
AFM&lowbar;DIR=$FONTS&lowbar;DIR
</para>
<para>
fi
</para>
<para>
&num; Link AFM files.
</para>
<para>
ln -sf $AFM&lowbar;DIR/*.&lsqb;aA]&lsqb;fF]&lsqb;mM] $XP3&lowbar;DIR/fontmetrics/afm
</para>
<para>
&num; Link PFB files.
</para>
<para>
ln -sf $FONTS&lowbar;DIR/*.&lsqb;pP]&lsqb;fF]&lsqb;bB] $XP3&lowbar;DIR/pssoftfonts
</para>
<para>
grep "\.pf" $FONTS&lowbar;DIR/fonts.dir \
</para>
<para>
&verbar; sed -e 's/\.pfb /, /g' -e 's/-0-0-0-0-/-&percnt;d-&percnt;d-&percnt;d-&percnt;d-/g' \
</para>
<para>
&#62; $XP3&lowbar;DIR/psstd.fonts.il2
</para>
<para>
cat $XP3&lowbar;DIR/psstd.fonts.il2 &#62;&#62; $XP3&lowbar;DIR/psstd.fonts
</para>
<para>
------------------------------------cut&lowbar;here-----------------------------
</para>
<para>
StarOffice 5.2 fully recognizes Word97 documents even written in other
languages, but a converter from iso8859-2 to win1250 encoding is necessary
in order to transport ISO8859-2 documents to M$ platform. For html documents
this is not necessary.
</para>
<para>
StarOffice 5.2 can be thus used by professional translators
</para>
</sect2>
<sect2>
<title>Xmodmap theory and standard Xmodmap solution</title>
<para>
If you want to edit and make your own .Xmodmap keyboard layout definitions,
I'll explain one line of the .Xmodmap file to make clear what you should do.
</para>
<para>
This explanation can be used for all keycodes. For example, the line:
</para>
<para>
keycode 0x11 = 8 asterisk aacute 8
</para>
<para>
(note: keycode 0x11 is derived from the "xkeycaps" utility; you can also use
the X Window "xev" utility to explore keyboard puzzles.)
</para>
<para>
says that the first pair, the default one, (number "8" and "asterisk")
will display number "8" when you press keycode 0x11 ("8"), will display
asterisk when a "shift" key is pressed. After pressing the Scroll Lock,
there's another definition: ISO&lowbar;NEXT&lowbar;GROUP, which means that when you
press the default "8" key, no "8" will be displayed, but aacute ("<22>");
when you press the "shift" key, number "8" will be displayed. So if
you change "aacute" and "8", anything you put instead of "aacute" and
"8" will be displayed, for example:
</para>
<para>
keycode 0x11 = 8 asterisk semicolon colon
</para>
<para>
will give you "semicolon" and "colon" in your 0x11 keycode after
pressing the Scroll Lock.
</para>
<para>
The ISO&lowbar;NEXT&lowbar;GROUP is defined by another line. If this line is not defined,
you will be able to use only two definitions ("8" and "asterisk") - look at
my .Xmodmap file. If you delete the ISO&lowbar;NEXT&lowbar;GROUP (the next pair of
definitions on the right), you will have only one group of keyboard
definitions ("8" and "asterisk"). Be careful when editing the .Xmodmap
file. You mustn't delete definitions that enable utilization of the
Scroll Lock unless you know what you are doing (or you map the second keyboard
by right Alt). These are the lines such as:
</para>
<para>
keycode 0x4e = ISO&lowbar;Next&lowbar;Group
</para>
<para>
add mod5 = ISO&lowbar;Next&lowbar;Group,
</para>
<para>
etc. You must also keep in mind that Unixes are case sensitive. If you want
to find out more about keycodes, install the package "xkeycaps" or use "xev".
</para>
</sect2>
<sect2>
<title>Experimental .Xmodmap sample file for the Slovak language typewriter layout</title>
<para>
&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;cut&lowbar;here&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;
</para>
<para>
keycode 0x09 = Escape
</para>
<para>
keycode 0x43 = F1 F11 F1 Multi&lowbar;key
</para>
<para>
keycode 0x44 = F2 F12 F2 F12
</para>
<para>
keycode 0x45 = F3 F13 F3 F13 idiaeresis
</para>
<para>
keycode 0x46 = F4 F14 F4 F14 mu yen
</para>
<para>
keycode 0x47 = F5 F15 F5 F15 guillemotright guillemotleft
</para>
<para>
keycode 0x48 = F6 F16 F6 F16 ograve
</para>
<para>
keycode 0x49 = F7 F17 F7 dead&lowbar;abovedot oacute
</para>
<para>
keycode 0x4A = F8 F18 F8 dead&lowbar;breve acute
</para>
<para>
keycode 0x4B = F9 F19 F9 dead&lowbar;cedilla ugrave
</para>
<para>
keycode 0x4C = F10 F20 F10 dead&lowbar;ogonek
</para>
<para>
keycode 0x5F = F11 F21 dead&lowbar;acute dead&lowbar;caron
</para>
<para>
keycode 0x60 = F12 F22 dead&lowbar;abovering dead&lowbar;diaeresis
</para>
<para>
keycode 0x6F = Print Execute dead&lowbar;iota
</para>
<para>
keycode 0x4E = ISO&lowbar;Next&lowbar;Group
</para>
<para>
keycode 0x6E = Pause
</para>
<para>
keycode 0x31 = grave asciitilde semicolon dead&lowbar;diaeresis
</para>
<para>
keycode 0x0A = 1 exclam plus 1
</para>
<para>
keycode 0x0B = 2 at mu 2
</para>
<para>
keycode 0x0C = 3 numbersign onesuperior 3
</para>
<para>
keycode 0x0D = 4 dollar egrave 4
</para>
<para>
keycode 0x0E = 5 percent 0x0bb 5
</para>
<para>
keycode 0x0F = 6 asciicircum threequarters 6
</para>
<para>
keycode 0x10 = 7 ampersand yacute 7
</para>
<para>
keycode 0x11 = 8 asterisk aacute 8
</para>
<para>
keycode 0x12 = 9 parenleft iacute 9
</para>
<para>
keycode 0x13 = 0 parenright eacute 0
</para>
<para>
keycode 0x14 = minus underscore equal percent
</para>
<para>
keycode 0x15 = equal plus dead&lowbar;acute dead&lowbar;caron
</para>
<para>
keycode 0x33 = backslash bar ograve parenright
</para>
<para>
keycode 0x16 = BackSpace
</para>
<para>
keycode 0x6A = Insert
</para>
<para>
keycode 0x61 = Home
</para>
<para>
keycode 0x63 = Prior
</para>
<para>
keycode 0x4D = Num&lowbar;Lock Pointer&lowbar;EnableKeys
</para>
<para>
keycode 0x70 = KP&lowbar;Divide slash
</para>
<para>
keycode 0x3F = KP&lowbar;Multiply asterisk
</para>
<para>
keycode 0x52 = KP&lowbar;Subtract minus
</para>
<para>
keycode 0x17 = Tab ISO&lowbar;Left&lowbar;Tab
</para>
<para>
keycode 0x18 = q Q
</para>
<para>
keycode 0x19 = w W
</para>
<para>
keycode 0x1A = e E
</para>
<para>
keycode 0x1B = r R
</para>
<para>
keycode 0x1C = t T
</para>
<para>
keycode 0x1D = y Y z Z
</para>
<para>
keycode 0x1E = u U
</para>
<para>
keycode 0x1F = i I
</para>
<para>
keycode 0x20 = o O
</para>
<para>
keycode 0x21 = p P
</para>
<para>
keycode 0x22 = bracketleft braceleft acute slash
</para>
<para>
keycode 0x23 = bracketright braceright diaeresis parenleft
</para>
<para>
keycode 0x24 = Return
</para>
<para>
keycode 0x6B = Delete
</para>
<para>
keycode 0x67 = End
</para>
<para>
keycode 0x69 = Next
</para>
<para>
keycode 0x4F = KP&lowbar;Home 7 KP&lowbar;Home
</para>
<para>
keycode 0x50 = KP&lowbar;Up 8
</para>
<para>
keycode 0x51 = KP&lowbar;Prior 9
</para>
<para>
keycode 0x56 = KP&lowbar;Add plus
</para>
<para>
keycode 0x42 = Caps&lowbar;Lock
</para>
<para>
keycode 0x26 = a A
</para>
<para>
keycode 0x27 = s S
</para>
<para>
keycode 0x28 = d D
</para>
<para>
keycode 0x29 = f F
</para>
<para>
keycode 0x2A = g G
</para>
<para>
keycode 0x2B = h H
</para>
<para>
keycode 0x2C = j J
</para>
<para>
keycode 0x2D = k K
</para>
<para>
keycode 0x2E = l L
</para>
<para>
keycode 0x2F = semicolon colon ocircumflex quotedbl
</para>
<para>
keycode 0x30 = apostrophe quotedbl section exclam
</para>
<para>
keycode 0x53 = KP&lowbar;Left 4
</para>
<para>
keycode 0x54 = KP&lowbar;Begin 5
</para>
<para>
keycode 0x55 = KP&lowbar;Right 6
</para>
<para>
keycode 0x32 = Shift&lowbar;L ISO&lowbar;Next&lowbar;Group
</para>
<para>
keycode 0x34 = z Z y Y
</para>
<para>
keycode 0x35 = x X
</para>
<para>
keycode 0x36 = c C
</para>
<para>
keycode 0x37 = v V
</para>
<para>
keycode 0x38 = b B
</para>
<para>
keycode 0x39 = n N
</para>
<para>
keycode 0x3A = m M
</para>
<para>
keycode 0x3B = comma less comma question
</para>
<para>
keycode 0x3C = period greater period colon
</para>
<para>
keycode 0x3D = slash question minus underscore
</para>
<para>
keycode 0x3E = Shift&lowbar;R
</para>
<para>
keycode 0x62 = Up
</para>
<para>
keycode 0x57 = KP&lowbar;End 1
</para>
<para>
keycode 0x58 = KP&lowbar;Down 2
</para>
<para>
keycode 0x59 = KP&lowbar;Next 3
</para>
<para>
keycode 0x6C = KP&lowbar;Enter Return
</para>
<para>
keycode 0x25 = Control&lowbar;L ISO&lowbar;Next&lowbar;Group
</para>
<para>
!keycode 0x40 = Alt&lowbar;L Meta&lowbar;L
</para>
<para>
keycode 0x40 = Meta&lowbar;L Alt&lowbar;L
</para>
<para>
keycode 0x41 = space
</para>
<para>
keycode 0x71 = Alt&lowbar;R Meta&lowbar;R
</para>
<para>
keycode 0x6D = Control&lowbar;R
</para>
<para>
keycode 0x64 = Left
</para>
<para>
keycode 0x68 = Down
</para>
<para>
keycode 0x66 = Right
</para>
<para>
keycode 0x5A = KP&lowbar;Insert 0
</para>
<para>
keycode 0x5B = KP&lowbar;Delete period
</para>
<para>
!keysym Alt&lowbar;L = Meta&lowbar;L
</para>
<para>
!keysym F12 = Multi&lowbar;key
</para>
<para>
clear Shift
</para>
<para>
!clear Lock
</para>
<para>
clear Control
</para>
<para>
clear Mod1
</para>
<para>
clear Mod2
</para>
<para>
clear Mod3
</para>
<para>
clear Mod4
</para>
<para>
clear Mod5
</para>
<para>
add Shift = Shift&lowbar;L Shift&lowbar;R
</para>
<para>
add Control = Control&lowbar;L Control&lowbar;R
</para>
<para>
!add Mod1 = Alt&lowbar;L Alt&lowbar;R
</para>
<para>
add Mod1 = Meta&lowbar;L Alt&lowbar;R
</para>
<para>
add Mod2 = Num&lowbar;Lock
</para>
<para>
add Mod5 = ISO&lowbar;Next&lowbar;Group
</para>
<para>
!add Mod1 =
</para>
<para>
!add Mod2 = Alt&lowbar;R Alt&lowbar;L Mode&lowbar;switch
</para>
<para>
keycode 0x73 = ISO&lowbar;Next&lowbar;Group
</para>
<para>
keycode 0x74 = dead&lowbar;acute dead&lowbar;diaeresis
</para>
<para>
keycode 0x75 = dead&lowbar;caron dead&lowbar;abovering
</para>
<para>
&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;cut&lowbar;here&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;&lowbar;
</para>
<para>
You may find almost any xmodmap file in the GNOME directory in
(SuSE) /opt/gnome/share/xmodmap (with standard ISO8859-1,2 and other
definitions). To switch between the keyboards, use right Alt.
</para>
</sect2>
<sect2>
<title>Character sets</title>
<para>
The purpose of the following info is to help you build any .Xmodmap
keyboard layout with ISO8859-2 or other fonts. The ISO8859-2 Character
Set file is included here for you to know which names are used for
pertinent keys. You should not bother about the numbers, but notice
how keys are named. Much of this information is useful to build a keyboard
with ISO8859-1 characters only, or a combination of East European
characters and Western characters. If you're going to use other languages
than the Central European or Western European ones, find a pertinent table
for your ISO*** character set on Internet. The gdkkeysyms.h file, that contains
all the crazy names for keycode entities including hexcodes, is in (older
versions of RedHat) /usr/include/gdk/ directory. If no gdkkeysyms.h file is
on your sustem, see the file /usr/X11R6/include/X11/keysymdef.h, or try to
look in /lib/perl5/site&lowbar;perl/5.6.0/i386-linux/GTK/keysyms.pm (it also
contains names of keycode entities including hex codes). If you have a newer
version of PERL, the "5.6.0" may differ. The similar should apply to other
systems (FreeBSD), as all these use PERL.
</para>
</sect2>
<sect2>
<title>ISO-8859-2 (ISO Latin2) character set </title>
<para>
Xmodmap entity Visually
</para>
<para>
----------------------------------------------------------------------
</para>
<para>
space
</para>
<para>
exclam !
</para>
<para>
quotedbl "
</para>
<para>
numbersign &num;
</para>
<para>
dollar $
</para>
<para>
percent
</para>
<para>
ampersand &#38;
</para>
<para>
quoteright '
</para>
<para>
parenleft (
</para>
<para>
parenright )
</para>
<para>
asterisk *
</para>
<para>
plus +
</para>
<para>
comma ,
</para>
<para>
hyphen -
</para>
<para>
period .
</para>
<para>
slash /
</para>
<para>
zero 0
</para>
<para>
one 1
</para>
<para>
two 2
</para>
<para>
three 3
</para>
<para>
four 4
</para>
<para>
five 5
</para>
<para>
six 6
</para>
<para>
seven 7
</para>
<para>
eight 8
</para>
<para>
nine 9
</para>
<para>
colon :
</para>
<para>
semicolon ;
</para>
<para>
less &lt; &#60;
</para>
<para>
equal =
</para>
<para>
greater &gt; &#62;
</para>
<para>
question ?
</para>
<para>
at @
</para>
<para>
A A
</para>
<para>
B B
</para>
<para>
C C
</para>
<para>
D D
</para>
<para>
E E
</para>
<para>
F F
</para>
<para>
G G
</para>
<para>
H H
</para>
<para>
I I
</para>
<para>
J J
</para>
<para>
K K
</para>
<para>
L L
</para>
<para>
M M
</para>
<para>
N N
</para>
<para>
O O
</para>
<para>
P P
</para>
<para>
Q Q
</para>
<para>
R R
</para>
<para>
S S
</para>
<para>
T T
</para>
<para>
U U
</para>
<para>
V V
</para>
<para>
W W
</para>
<para>
X X
</para>
<para>
Y Y
</para>
<para>
Z Z
</para>
<para>
bracketleft &lsqb;
</para>
<para>
backslash \
</para>
<para>
bracketright ]
</para>
<para>
asciicircum &circ;
</para>
<para>
underscore &lowbar;
</para>
<para>
quoteleft `
</para>
<para>
a a
</para>
<para>
b b
</para>
<para>
c c
</para>
<para>
d d
</para>
<para>
e e
</para>
<para>
f f
</para>
<para>
g g
</para>
<para>
h h
</para>
<para>
i i
</para>
<para>
j j
</para>
<para>
k k
</para>
<para>
l l
</para>
<para>
m m
</para>
<para>
n n
</para>
<para>
o o
</para>
<para>
p p
</para>
<para>
q q
</para>
<para>
r r
</para>
<para>
s s
</para>
<para>
t t
</para>
<para>
u u
</para>
<para>
v v
</para>
<para>
w w
</para>
<para>
x x
</para>
<para>
y y
</para>
<para>
z z
</para>
<para>
braceleft &lcub;
</para>
<para>
bar &verbar;
</para>
<para>
braceright &rcub;
</para>
<para>
tilde &nbsp;
</para>
<para>
space
</para>
<para>
Aogonek
</para>
<para>
breve
</para>
<para>
Lslash
</para>
<para>
currency
</para>
<para>
Lcaron
</para>
<para>
Sacute
</para>
<para>
section
</para>
<para>
dieresis
</para>
<para>
Scaron
</para>
<para>
Scedilla
</para>
<para>
Tcaron
</para>
<para>
Zacute
</para>
<para>
hyphen
</para>
<para>
Zcaron
</para>
<para>
Zdotaccent
</para>
<para>
degree
</para>
<para>
aogonek
</para>
<para>
ogonek
</para>
<para>
lslash
</para>
<para>
acute
</para>
<para>
lcaron
</para>
<para>
sacute
</para>
<para>
caron
</para>
<para>
cedilla
</para>
<para>
scaron
</para>
<para>
scedilla
</para>
<para>
tcaron
</para>
<para>
zacute
</para>
<para>
hungarumlaut
</para>
<para>
zcaron
</para>
<para>
zdotaccent
</para>
<para>
Racute
</para>
<para>
Aacute
</para>
<para>
Acircumflex
</para>
<para>
Abreve
</para>
<para>
Adieresis
</para>
<para>
Lacute
</para>
<para>
Cacute
</para>
<para>
Ccedilla
</para>
<para>
Ccaron
</para>
<para>
Eacute
</para>
<para>
Eogonek
</para>
<para>
Edieresis
</para>
<para>
Ecaron
</para>
<para>
Iacute
</para>
<para>
Icircumflex
</para>
<para>
Dcaron
</para>
<para>
Eth
</para>
<para>
Nacute
</para>
<para>
Ncaron
</para>
<para>
Oacute
</para>
<para>
Ocircumflex
</para>
<para>
Ohungarumlaut
</para>
<para>
Odieresis
</para>
<para>
multiply
</para>
<para>
Rcaron
</para>
<para>
Uring
</para>
<para>
Uacute
</para>
<para>
hungarumlaut
</para>
<para>
Udieresis
</para>
<para>
Yacute
</para>
<para>
Tcedilla
</para>
<para>
germandbls
</para>
<para>
racute
</para>
<para>
aacute
</para>
<para>
acircumflex
</para>
<para>
abreve
</para>
<para>
adieresis
</para>
<para>
lacute
</para>
<para>
cacute
</para>
<para>
ccedilla
</para>
<para>
ccaron
</para>
<para>
eacute
</para>
<para>
eogonek
</para>
<para>
edieresis
</para>
<para>
ecaron
</para>
<para>
iacute
</para>
<para>
icircumflex
</para>
<para>
dcaron
</para>
<para>
dbar
</para>
<para>
nacute
</para>
<para>
ncaron
</para>
<para>
oacute
</para>
<para>
ocircumflex
</para>
<para>
ohungarumlaut
</para>
<para>
odieresis
</para>
<para>
divide
</para>
<para>
rcaron
</para>
<para>
uring
</para>
<para>
uacute
</para>
<para>
uhungarumlaut
</para>
<para>
udieresis
</para>
<para>
yacute
</para>
<para>
tcedilla
</para>
<para>
dotaccent
</para>
<para>
----------------------------------------------------------------------
</para>
<para>
First, if you are using older systems, try to see if standard definitions
will give you (after installing pertinent fonts and building Xmodmap
with keyboard definitions for X) what they say they are. If they will
not give you what they say they are (some keycodes will be unfunctional),
then put to your bash&lowbar;profile the "export LANG=language" statement and
if you are still unsuccessful, you must make a substitution. Definitions
which will not give you what they say they are can be traced by their
visual shape in Western Latin 1 encoding. If you are a Czech, for example,
you may issue a command:
</para>
<para>
setxkbmap -model pc102 -symbols 'czsk(us&lowbar;cz&lowbar;qwertz)'
setxkbmap cs -option grp:shift&lowbar;toggle
</para>
<para>
and see what will give you an X terminal window (press both Shift keys or
press alt and hold it to see the other keyboard layout). This means that
by pressing a letter "3" you will get a real "onesuperior" key. It is good
that X terminal window does not make use of ISO8859-2 fonts now, so you
will see what you must use instead of scaron (scaron = onesuperior). By
putting "onesuperior" in an .Xmodmap file you will get a REAL "scaron", but
obviously, only with use of ISO8859-2 fonts (with use of ISO8859-1
fonts, you will get a REAL "onesuperior").
</para>
<para>
Thus, the X Terminal window will show you fonts like micron,
onesuperior, threequarters, and so on. You will see what you must
substitute. But if you don't know what "?" is called in the ISO terminology,
find and download an appropriate character set table for ISO8859-1, or
look in gdkkeysyms.h file, /lib/perl5/site&lowbar;perl/5.6.0/i386-linux/GTK/keysyms.pm
file, or ../ISO8859-1/Compose file. Alternatively, you may experiment with
all codes defined in /usr/X11R6/lib/X11/locale/ISO8859-1/Compose file.
You must use the ISO8859-1 entities when the system refuses to display
the ISO8859-2 entities correctly.
</para>
<para>
The following symbols on your right is what I found out through my research.
This is just an example. When you use a "Pound" definition in the Xmodmap
file, the X Window System will display you a Lslash instead (in relation
to using iso8859-2 fonts, of course). When you choose some easy KDE text
editor, select iso8859-2 fonts charset from the fonts menu. NOTE:
vowel *acute (uacute, eacute, etc.) signs require no substitution,
therefore I omitted iacute, aacute, etc., here.
</para>
<para>
ISO8859-1 entity will give you the: ISO8859-2 entity
</para>
<para>
in our nonstandard or experimental Xmodmap keycode definition
</para>
<para>
egrave ccaron
</para>
<para>
ugrave uring
</para>
<para>
agrave racute
</para>
<para>
ecircumflex "c" with something at the bottom of it
</para>
<para>
ucircumflex
Lslash "Pound" in Xmodmap gives you Lslash.
</para>
<para>
Lcaron Writing "yen" will give us Lcaron
</para>
<para>
Scaron copyright (will give us Scaron)
</para>
<para>
Tcaron guillemotleft (will give us Tcaron)
</para>
<para>
Zcaron registered
</para>
<para>
lcaron mu
</para>
<para>
scaron onesuperior
</para>
<para>
tcaron guillemotright
</para>
<para>
zcaron threequarters
</para>
<para>
Cacute AE
</para>
<para>
Eogonek find out yourself
</para>
<para>
Edieresis Edieresis
</para>
<para>
ecaron igrave
</para>
<para>
onequarter zacute
</para>
<para>
questiondown z with a ring above it
</para>
<para>
Dcaron find out yourself
</para>
<para>
Ooblique Rcaron
</para>
<para>
thorn t with something at the bottom of it
</para>
<para>
Sterling Lstroke
</para>
<para>
yen Lcaron
</para>
<para>
copyright Scaron
</para>
<para>
brokenbar Sacute
</para>
<para>
macron Z with something above it
</para>
<para>
paragraph sacute
</para>
<para>
periodcentered caron
</para>
<para>
masculine s with something at the bottom of it
</para>
<para>
onequarter zacute
</para>
<para>
ecircumflex d with a line above it
</para>
<para>
ETH Dstroke
</para>
<para>
Ntilde Nacute
</para>
<para>
Otilde O with two dots above it
</para>
<para>
registered Zcaron
</para>
<para>
Nacute Ograve
</para>
<para>
nacute ograve
</para>
<para>
Ocircumflex Ocircumflex
</para>
<para>
ccaron egrave
</para>
<para>
nacute ntilde
------------------------------------------------------------------------
</para>
<para>
sect1&#62;ISO* specifications
</para>
</sect2>
<sect2>
<title>The standard ISO8859-2 definitions in the Xmodmap file </title>
<para>
The example of a Standard .Xmodmap file. Use this file if X Server
correctly displays lcaron, scaron, etc., in newer versions of XFree86.
</para>
<para>
! This is an `xmodmap' input file for PC 101 key &num;2 (Linux/FreeBSD/XFree86; US/sk)
</para>
<para>
! keyboards created by XKeyCaps, modified by Juraj Sipos on 8/17/1999.
</para>
<para>
! XKeyCaps 2.38 is Copyright (c) 1997 Jamie Zawinski (jwz@netscape.com).
</para>
<para>
! http://people.netscape.com/jwz/xkeycaps/ This is an .Xmodmap solution for
</para>
<para>
! Slovak keyboard in FreeBSD. You must have ISO-8859-2 fonts installed with a
</para>
<para>
! pointer in /etc/XF86Config, for example,
</para>
<para>
! FontPath "/usr/X11R6/lib/X11/fonts/ISO8859-2/Type1". The section "Keyboard"
</para>
<para>
! in XF86Config must contain at least the following line. You don't have to
</para>
<para>
! specify any special XkbLayout.
</para>
<para>
! Section "Keyboard"
</para>
<para>
! Protocol "Standard"
</para>
<para>
! XkbRules "xfree86"
</para>
<para>
! XkbModel "pc101"
</para>
<para>
! XkbLayout "us"!
</para>
<para>
! The Slovak/English keyboard is switched to by Scroll Lock
</para>
<para>
! This file makes the following changes:
</para>
<para>
!
</para>
<para>
! The "F1" key generates F1 and F11
</para>
<para>
! The "F2" key generates F2 and F12
</para>
<para>
! The "F3" key generates F3 and F13
</para>
<para>
! The "F4" key generates F4 and F14
</para>
<para>
! The "F5" key generates F5 and F15
</para>
<para>
! The "F6" key generates F6 and F16
</para>
<para>
! The "F7" key generates F7, F17, and dead&lowbar;circumflex
</para>
<para>
! The "F8" key generates F8, F18, and dead&lowbar;doubleacute
</para>
<para>
! The "F9" key generates F9, F19, and dead&lowbar;cedilla
</para>
<para>
! The "F10" key generates F10, F20, and dead&lowbar;ogonek
</para>
<para>
! The "F11" key generates F11, F21, dead&lowbar;diaeresis, and dead&lowbar;circumflex
</para>
<para>
! The "F12" key generates F12, F22, dead&lowbar;abovering, and dead&lowbar;doubleacute
</para>
<para>
! The "Print Screen" key generates Print and Execute
</para>
<para>
! The "Scroll Lock" key generates ISO&lowbar;Next&lowbar;Group, and the Mod5 modifier
</para>
<para>
! The "&nbsp;`" key generates what you see + semicolon and dead diaeresis
</para>
<para>
! The "! 1" key generates 1, exclam, plus, 1 (the last one is with shift)
</para>
<para>
! The "@ 2" key generates 2, at, lcaron, and 2
</para>
<para>
! The "&num; 3" key generates 3, numbersign, scaron, and 3
</para>
<para>
! The "$ 4" key generates 4, dollar, ccaron, and 4
</para>
<para>
! The "&percnt; 5" key generates 5, percent, tcaron, and 5
</para>
<para>
! The "&circ; 6" key generates 6, asciicircum, zcaron, and 6
</para>
<para>
! The "&#38; 7" key generates 7, ampersand, yacute, and 7
</para>
<para>
! The "* 8" key generates 8, asterisk, aacute, and 8
</para>
<para>
! The "( 9" key generates 9, parenleft, iacute, and 9
</para>
<para>
! The ") 0" key generates 0, parenright, eacute, and 0
</para>
<para>
! The "+ =" key generates equal, plus, dead&lowbar;acute, and dead&lowbar;caron
</para>
<para>
! The "Num Lock" key generates Num&lowbar;Lock and Pointer&lowbar;EnableKeys, and the Mod2 modifier
</para>
<para>
! The "Tab" key generates Tab and ISO&lowbar;Left&lowbar;Tab
</para>
<para>
! The "Q" key generates q and Q
</para>
<para>
! The "W" key generates w and W
</para>
<para>
! The "E" key generates e and E
</para>
<para>
! The "R" key generates r and R
</para>
<para>
! The "T" key generates t and T
</para>
<para>
! The "Y" key generates y and Y
</para>
<para>
! The "U" key generates u and U
</para>
<para>
! The "I" key generates i and I
</para>
<para>
! The "O" key generates o and O
</para>
<para>
! The "P" key generates p and P
</para>
<para>
! The "7 Home" key generates KP&lowbar;Home and KP&lowbar;7
</para>
<para>
! The "8 UpArrow" key generates KP&lowbar;Up and KP&lowbar;8
</para>
<para>
! The "9 Pg Up" key generates KP&lowbar;Prior and KP&lowbar;9
</para>
<para>
! The "Caps Lock" key generates Caps&lowbar;Lock, and has no modifiers
</para>
<para>
! The "A" key generates a and A
</para>
<para>
! The "S" key generates s and S
</para>
<para>
! The "D" key generates d and D
</para>
<para>
! The "G" key generates g and G
</para>
<para>
! The "H" key generates h and H
</para>
<para>
! The "J" key generates j and J
</para>
<para>
! The "K" key generates k and K
</para>
<para>
! The "L" key generates l and L
</para>
<para>
! The "4 LeftArrow" key generates KP&lowbar;Left and KP&lowbar;4
</para>
<para>
! The "5" key generates KP&lowbar;Begin and KP&lowbar;5
</para>
<para>
! The "6 RightArrow" key generates KP&lowbar;Right and KP&lowbar;6
</para>
<para>
! The "Z" key generates z and Z
</para>
<para>
! The "X" key generates x and X
</para>
<para>
! The "C" key generates c and C
</para>
<para>
! The "V" key generates v and V
</para>
<para>
! The "B" key generates b and B
</para>
<para>
! The "N" key generates n and N
</para>
<para>
! The "M" key generates m and M
</para>
<para>
! The "1 End" key generates KP&lowbar;End and KP&lowbar;1
</para>
<para>
! The "2 DownArrow" key generates KP&lowbar;Down and KP&lowbar;2
</para>
<para>
! The "3 Pg Dn" key generates KP&lowbar;Next and KP&lowbar;3
</para>
<para>
! The "0 Ins" key generates KP&lowbar;Insert and KP&lowbar;0
</para>
<para>
! The ". Del" key generates KP&lowbar;Delete and KP&lowbar;Decimal
</para>
<para>
!&num;define XK&lowbar;dead&lowbar;semivoiced&lowbar;sound 0xFE5F
</para>
<para>
!dead&lowbar;iota, dead&lowbar;voiced&lowbar;sound, dead&lowbar;belowdot, dead&lowbar;tilde, dead&lowbar;macron
</para>
<para>
keycode 0x09 = Escape
</para>
<para>
keycode 0x43 = F1 F11 F1 Multi&lowbar;key
</para>
<para>
keycode 0x44 = F2 F12 F2 F12
</para>
<para>
keycode 0x45 = F3 F13 F3 F13 idiaeresis
</para>
<para>
keycode 0x46 = F4 F14 F4 F14 mu yen
</para>
<para>
keycode 0x47 = F5 F15 F5 F15 guillemotright guillemotleft
</para>
<para>
keycode 0x48 = F6 F16 F6 F16 ograve
</para>
<para>
keycode 0x49 = F7 F17 F7 dead&lowbar;abovedot oacute
</para>
<para>
keycode 0x4A = F8 F18 F8 dead&lowbar;breve uacute
</para>
<para>
keycode 0x4B = F9 F19 F9 dead&lowbar;cedilla ugrave
</para>
<para>
keycode 0x4C = F10 F20 F10 dead&lowbar;ogonek
</para>
<para>
keycode 0x5F = F11 F21 dead&lowbar;acute dead&lowbar;caron
</para>
<para>
keycode 0x60 = F12 F22 dead&lowbar;abovering dead&lowbar;diaeresis
</para>
<para>
!keycode 0x6F = Print Execute dead&lowbar;doubleacute dead&lowbar;circumflex
</para>
<para>
keycode 0x6F = Print Execute dead&lowbar;iota
</para>
<para>
keycode 0x4E = ISO&lowbar;Next&lowbar;Group
</para>
<para>
keycode 0x6E = Pause
</para>
<para>
keycode 0x31 = grave asciitilde semicolon dead&lowbar;diaeresis
</para>
<para>
keycode 0x0A = 1 exclam plus 1
</para>
<para>
keycode 0x0B = 2 at lcaron 2
</para>
<para>
keycode 0x0C = 3 numbersign scaron 3
</para>
<para>
keycode 0x0D = 4 dollar ccaron 4
</para>
<para>
keycode 0x0E = 5 percent tcaron 5
</para>
<para>
keycode 0x0F = 6 asciicircum zcaron 6
</para>
<para>
keycode 0x10 = 7 ampersand yacute 7
</para>
<para>
keycode 0x11 = 8 asterisk aacute 8
</para>
<para>
keycode 0x12 = 9 parenleft iacute 9
</para>
<para>
keycode 0x13 = 0 parenright eacute 0
</para>
<para>
keycode 0x14 = minus underscore equal percent
</para>
<para>
keycode 0x15 = equal plus dead&lowbar;acute dead&lowbar;caron
</para>
<para>
keycode 0x33 = backslash bar ncaron parenright
</para>
<para>
keycode 0x16 = BackSpace
</para>
<para>
keycode 0x6A = Insert
</para>
<para>
keycode 0x61 = Home
</para>
<para>
keycode 0x63 = Prior
</para>
<para>
keycode 0x4D = Num&lowbar;Lock Pointer&lowbar;EnableKeys
</para>
<para>
keycode 0x70 = KP&lowbar;Divide slash
</para>
<para>
keycode 0x3F = KP&lowbar;Multiply asterisk
</para>
<para>
keycode 0x52 = KP&lowbar;Subtract minus
</para>
<para>
keycode 0x17 = Tab ISO&lowbar;Left&lowbar;Tab
</para>
<para>
keycode 0x18 = q Q
</para>
<para>
keycode 0x19 = w W
</para>
<para>
keycode 0x1A = e E
</para>
<para>
keycode 0x1B = r R
</para>
<para>
keycode 0x1C = t T
</para>
<para>
keycode 0x1D = y Y z Z
</para>
<para>
keycode 0x1E = u U
</para>
<para>
keycode 0x1F = i I
</para>
<para>
keycode 0x20 = o O
</para>
<para>
keycode 0x21 = p P
</para>
<para>
keycode 0x22 = bracketleft braceleft uacute slash
</para>
<para>
keycode 0x23 = bracketright braceright adiaeresis parenleft
</para>
<para>
keycode 0x24 = Return
</para>
<para>
keycode 0x6B = Delete
</para>
<para>
keycode 0x67 = End
</para>
<para>
keycode 0x69 = Next
</para>
<para>
keycode 0x4F = KP&lowbar;Home 7 KP&lowbar;Home
</para>
<para>
keycode 0x50 = KP&lowbar;Up 8
</para>
<para>
keycode 0x51 = KP&lowbar;Prior 9
</para>
<para>
keycode 0x56 = KP&lowbar;Add plus
</para>
<para>
keycode 0x42 = Caps&lowbar;Lock
</para>
<para>
keycode 0x26 = a A
</para>
<para>
keycode 0x27 = s S
</para>
<para>
keycode 0x28 = d D
</para>
<para>
keycode 0x29 = f F
</para>
<para>
keycode 0x2A = g G
</para>
<para>
keycode 0x2B = h H
</para>
<para>
keycode 0x2C = j J
</para>
<para>
keycode 0x2D = k K
</para>
<para>
keycode 0x2E = l L
</para>
<para>
keycode 0x2F = semicolon colon ocircumflex quotedbl
</para>
<para>
keycode 0x30 = apostrophe quotedbl section exclam
</para>
<para>
keycode 0x53 = KP&lowbar;Left 4
</para>
<para>
keycode 0x54 = KP&lowbar;Begin 5
</para>
<para>
keycode 0x55 = KP&lowbar;Right 6
</para>
<para>
keycode 0x32 = Shift&lowbar;L ISO&lowbar;Next&lowbar;Group
</para>
<para>
keycode 0x34 = z Z y Y
</para>
<para>
keycode 0x35 = x X
</para>
<para>
keycode 0x36 = c C
</para>
<para>
keycode 0x37 = v V
</para>
<para>
keycode 0x38 = b B
</para>
<para>
keycode 0x39 = n N
</para>
<para>
keycode 0x3A = m M
</para>
<para>
keycode 0x3B = comma less comma question
</para>
<para>
keycode 0x3C = period greater period colon
</para>
<para>
keycode 0x3D = slash question minus underscore
</para>
<para>
keycode 0x3E = Shift&lowbar;R
</para>
<para>
keycode 0x62 = Up
</para>
<para>
keycode 0x57 = KP&lowbar;End 1
</para>
<para>
keycode 0x58 = KP&lowbar;Down 2
</para>
<para>
keycode 0x59 = KP&lowbar;Next 3
</para>
<para>
keycode 0x6C = KP&lowbar;Enter Return
</para>
<para>
keycode 0x25 = Control&lowbar;L ISO&lowbar;Next&lowbar;Group
</para>
<para>
!keycode 0x40 = Alt&lowbar;L Meta&lowbar;L
</para>
<para>
keycode 0x40 = Meta&lowbar;L Alt&lowbar;L
</para>
<para>
keycode 0x41 = space
</para>
<para>
keycode 0x71 = Alt&lowbar;R Meta&lowbar;R
</para>
<para>
keycode 0x6D = Control&lowbar;R
</para>
<para>
keycode 0x64 = Left
</para>
<para>
keycode 0x68 = Down
</para>
<para>
keycode 0x66 = Right
</para>
<para>
keycode 0x5A = KP&lowbar;Insert 0
</para>
<para>
keycode 0x5B = KP&lowbar;Delete period
</para>
<para>
!keysym Alt&lowbar;L = Meta&lowbar;L
</para>
<para>
!keysym F12 = Multi&lowbar;key
</para>
<para>
clear Shift
</para>
<para>
!clear Lock
</para>
<para>
clear Control
</para>
<para>
clear Mod1
</para>
<para>
clear Mod2
</para>
<para>
clear Mod3
</para>
<para>
clear Mod4
</para>
<para>
clear Mod5
</para>
<para>
add Shift = Shift&lowbar;L Shift&lowbar;R
</para>
<para>
add Control = Control&lowbar;L Control&lowbar;R
</para>
<para>
!add Mod1 = Alt&lowbar;L Alt&lowbar;R
</para>
<para>
add Mod1 = Meta&lowbar;L Alt&lowbar;R
</para>
<para>
add Mod2 = Num&lowbar;Lock
</para>
<para>
add Mod5 = ISO&lowbar;Next&lowbar;Group
</para>
<para>
!add Mod1 =
</para>
<para>
!add Mod2 = Alt&lowbar;R Alt&lowbar;L Mode&lowbar;switch
</para>
<para>
keycode 0x73 = ISO&lowbar;Next&lowbar;Group
</para>
<para>
keycode 0x74 = dead&lowbar;acute dead&lowbar;diaeresis
</para>
<para>
keycode 0x75 = dead&lowbar;caron dead&lowbar;abovering
</para>
</sect2>
</sect1>
<sect1>
<title>How this Xmodmap solution works on various systems</title>
<sect2>
<title>SuSE 6.4 and 7.0 </title>
<sect3>
<title>SuSE 7.0 with XFree86 version 3.3.6 and KDE 2.0 (this also applies to SuSE 6.4</title>
<para>
No LANG=language statement is necessary in your bash&lowbar;profile. You may use
the Xmodmap file with standard ISO8859-2 keycode definitions, the above
.Xmodmap file, (not "threequarters" but "scaron", etc.). Unfortunately,
although you may immediately start writing with ISO8859-2 keycodes, the
dead keys are not working properly and export LANG=language does not work
here in order to make these dead keys work. There's also some bug with fonts
or something - KDE 2.0 (or older XFree does not properly handle ISO8859-2
fonts together with Xmodmap. Old kedit, newest GNOME's gedit and StarOffice 5.2
work well (after applying the above script for StarOffice 5.2).
</para>
<para>
After copying the Compose file from /usr/X11R6/lib/X11/locale/iso8859-2/
to the /usr/X11R6/lib/X11/locale/iso8859-1/, you may start elegantly
working with dead keys. This was also tested on StarOffice 5.2.
The FontPath must be in /etc/XF86Config, not in /etc/X11/Xf86Config.
</para>
</sect3>
</sect2>
<sect2>
<title>SuSE 7.0 with Xfree86 version 3.3.6 and KDE 1.x</title>
<para>
Same as above.
</para>
</sect2>
<sect2>
<title>Mandrake Linux 7.2 </title>
<sect3>
<title>Mandrake Linux 7.2 - works as it should </title>
<para>
Yes, it works as it should - I used the "kcmshell Personalization/kcmlayout",
command, which is in the menu in Configuration &gt; KDE &gt; Personalization &gt;
keyboard layout and after just putting the LANG=language statement in
my .bash&lowbar;profile, StarOffice worked immediately (with ISO8859-2 fonts added to
its directory) and I only switched the keyboards. I chose Czechoslovakian as
the second language and could write in Czech with ISO8859-2 characters
on my screen. (I used the script for putting the ISO8859-2 fonts for
StarOffice). Unfortunatelly, the KDE 2.0 kedit could not visualize the
ISO8859-2 fonts and after switching the keyboard and selecting ISO8859-2
charset I saw this: ??????? instead of lcaron, scaron, etc., but *acute
symbols (uacute, aacute, etc.) displayed well.
</para>
<para>
The maps in /usr/X11R6/lib/X11/xkb/symbols can be modified on the fly,
while in X; you only have to switch keyboards from the panel (click on a
flag icon). You can edit those maps and modify them for your choice.
After changing some Czech definitions to Slovak, StarOffice displayed them well.
</para>
</sect3>
<sect3>
<title>Mandrake Linux 7.2 with XFree86 version 3.3.6</title>
<para>
Apply the standard .Xmodmap keycodes (scaron, lcaron, not "threequarters"
or "mu", etc.) and issue the command: "xmodmap &nbsp;/.Xmodmap" and you may
work by switching the keyboards by pressing Scroll Lock (if you use my
Xmodmap file; if you use other Xmodmap file, try right Alt or whatever
that is defined in the Xmodmap file).
</para>
<para>
The FontPath statement in /etc/X11/XF86Config and /etc/X11/XF86Config
does not have to be changed:
</para>
<para>
FontPath "unix/:1"
</para>
<para>
The XFree86 reads automatically your fonts, but I put the ISO8859-2 fonts to
/usr/share/fonts directory (same as in RedHat). Surprisingly, you do not
have to copy the ../ISO8859-2/Compose file to ../ISO8859-1 directory
and dead keys work nice.
</para>
</sect3>
</sect2>
<sect2>
<title>Mandrake 8.1</title>
<para>
This distribution works well as it should. In KDE, you must open the
menu: Start &gt; Preferences &gt; Personalization &gt; Country and Language,
where you will change CHARSET from ISO8859-1 to ISO8859-2 (or ISO8859-X for
any other language of your choice). Then you may either select a keyboard
layout - Peripherals, Keyboard (Slovak is included with dozens of other
keyboard XKB maps) from the menu: Start &gt; Configuration &gt; KDE &gt;
Personalisation &gt; Peripherals &gt; Keyboard, or you may choose my Standard
Xmodmap solution. No other files require editing. That's great! Alternatively,
you can set your keyboard with setxkbmap command (see section FreeBSD 4.4).
</para>
</sect2>
<sect2>
<title>RedHat 5.1, 5.2, 6.0, 6.1 and 6.2 (XFree86 3.3.6 and older)</title>
<para>
No LANG=language statement is necessary in your bash&lowbar;profile. Here the
"experimental" .Xmodmap solution works ("mu" instead of "lcaron", etc.)
and you must copy the Compose file from ../IS08859-2 to ISO8859-1 directory
in order for dead keys to work. There is only one XF86Config file in
/etc/X11 and its FontPath should be the same as in SuSE 7.0 above.
</para>
</sect2>
<sect2>
<title>RedHat 7.2</title>
<para>
Same as Mandrake 8.1.
</para>
</sect2>
<sect2>
<title>FreeBSD 3.1 and 3.2</title>
<para>
Same as with RedHat 5.1, 5.2, 6.0, 6.1, 6.2
</para>
</sect2>
<sect2>
<title>FreeBSD 4.1 </title>
<para>
No LANG=language statement is necessary in your bash&lowbar;profile. But
you must put this to /etc/profile:
LANG=cs&lowbar;CZ.ISO&lowbar;8859-2; export LANG
</para>
<para>
FreeBSD 4.1, 4.2, 4.3, 4.4 does not use Slovak locale, so we must use
the Czech one. It really does not matter. Here this depends on XFree86.
Because the FreeBSD guys are too conservative about a newer software,
they ship FreeBSD with older versions of XFree86. In FreeBSD 4.1 the
experimental .Xmodmap solution works and you have to copy the
../ISO8859-2/Compose file to ../ISO8859-1 directory to make the dead keys work.
</para>
</sect2>
<sect2>
<title>FreeBSD 4.4.</title>
<para>
The Standard xmodmap solution works well. You must put this to /etc/profile:
</para>
<para>
LANG=cs&lowbar;CZ.ISO&lowbar;8859-2; export LANG
</para>
<para>
Yes, we will use the Czech locale for the Slovak language. Other languages
require similar syntax, e.g.:
LANG=it&lowbar;IT.ISO&lowbar;8859-1; export LANG
</para>
<para>
for the Italian language. Alternatively, you may use
</para>
<para>
setxkbmap si
</para>
<para>
as a command from an X Terminal for the Slovenian language
</para>
<para>
setxkbmap se
</para>
<para>
for Swedish
</para>
<para>
setxkbmap de
</para>
<para>
for German, etc.
</para>
<para>
A brief overview of XKB maps:
</para>
<para>
am Armenian keyboard
</para>
<para>
be Belgian
</para>
<para>
de German
</para>
<para>
ca Canadian
</para>
<para>
cs Czech
</para>
<para>
dk Danish
</para>
<para>
es Spanish
</para>
<para>
fi Finnish
</para>
<para>
fr French
</para>
<para>
gb Great Britain
</para>
<para>
hu Hungarian
</para>
<para>
is Iceland
</para>
<para>
it Italian
</para>
<para>
jp Japanese
</para>
<para>
no Norwegian
</para>
<para>
pl Polish
</para>
<para>
pt Portugese
</para>
<para>
ro Romanian
</para>
<para>
ru Russian
</para>
<para>
se Swedish
</para>
<para>
si Slovenian
</para>
</sect2>
<sect2>
<title>Corel Linux 1.0 and 1.1</title>
<para>
Same as with FreeBSD 3.x - experimental Xmodmap solution.
</para>
</sect2>
<sect2>
<title>ISO* specifications</title>
<para>
-------------------------------------------------------------------
ISO8859-0
old, replaced by ISO 8859-14 and ISO 8859-15.
</para>
<para>
ISO8859-1
Western Europe: Danish, Dutch, English, Faeroese, Finnish, Flemish,
French, German, Icelandic, Irish, Italian, Norwegian, Portuguese,
Spanish, and Swedish. Many other languages can be written with this.
</para>
<para>
ISO8859-2
Eastern Europe: Czech, Slovak, English, German, Hungarian, Polish,
Romanian, Serbo-Croatian, Slovak, Slovene.
</para>
<para>
ISO8859-3
English, Esperanto, Galician, Maltese and Turkish.
</para>
<para>
ISO8859-4
English, Baltic languages - Estonian, Latvian, Lithuanian,
and Scandinavian languages - Danish, Faeroese, Icelandic, Lappish,
Norwegian, and Swedish.
</para>
<para>
ISO8859-5
Latin/Cyrillic alphabet: Bulgarian, Byelorussian, English,
Macedonian, Russian, Serbian, Ukrainian.
</para>
<para>
ISO8859-6
Latin/Arabic alphabet: English, Arabic.
</para>
<para>
ISO8859-7
Latin/Greek alphabet: English, Greek.
</para>
<para>
ISO8859-8
Latin/Hebrew alphabet: English, Hebrew.
</para>
<para>
ISO8859-9
Latin alphabet: Danish, Dutch, English, Finnish, French,
German, Irish, Italian, Norwegian, Portuguese, Spanish, Swedish,
Turkish, formed by extending ISO8859-1.
</para>
<para>
ISO8859-10
Latin alphabet: Modification of ISO8859-4
</para>
<para>
ISO8859-11
Latin/Thai alphabet.
</para>
<para>
ISO8859-12
Reserved.
</para>
<para>
ISO8859-13
Baltic.
</para>
<para>
ISO8859-14
Celtic
</para>
<para>
ISO8859-15
Similar to Latin-1
</para>
<para>
ISO8859-16
Albanian, Croatian, English, Finnish, French, German, Hungarian,
Irish Gaelic, Italian, Latin, Polish, Romanian, Slovenian, Lithuanian,
and Scandinavian languages (Danish, Faeroese, Icelandic.
</para>
</sect2>
</sect1>
<sect1>
<title>Some national Xmodmap files</title>
<para>
Please note: I'am not the author of these files and don't mail me if you
find something incorrect in them. These files were taken from the GNOME
distribution and the main focus of this howto is to tell you how to map
various keycode entities. Use right Alt to switch the keyboard.
</para>
<sect2>
<title>German</title>
<para>
clear Mod1
</para>
<para>
clear Mod2
</para>
<para>
keycode 9 = Escape Escape
</para>
<para>
keycode 10 = 1 exclam
</para>
<para>
keycode 11 = 2 quotedbl twosuperior
</para>
<para>
keycode 12 = 3 section threesuperior
</para>
<para>
keycode 13 = 4 dollar dollar
</para>
<para>
keycode 14 = 5 percent
</para>
<para>
keycode 15 = 6 ampersand
</para>
<para>
keycode 16 = 7 slash braceleft
</para>
<para>
keycode 17 = 8 parenleft bracketleft
</para>
<para>
keycode 18 = 9 parenright bracketright
</para>
<para>
keycode 19 = 0 equal braceright
</para>
<para>
keycode 20 = ssharp question backslash
</para>
<para>
keycode 21 = dead&lowbar;acute dead&lowbar;grave
</para>
<para>
keycode 22 = BackSpace Delete
</para>
<para>
keycode 23 = Tab Tab
</para>
<para>
keycode 24 = q Q at
</para>
<para>
keycode 25 = w
</para>
<para>
keycode 26 = e
</para>
<para>
keycode 27 = r
</para>
<para>
keycode 28 = t
</para>
<para>
keycode 29 = z
</para>
<para>
keycode 30 = u
</para>
<para>
keycode 31 = i
</para>
<para>
keycode 32 = o
</para>
<para>
keycode 33 = p
</para>
<para>
keycode 34 = udiaeresis Udiaeresis
</para>
<para>
keycode 35 = plus asterisk dead&lowbar;tilde
</para>
<para>
keycode 36 = Return
</para>
<para>
keycode 37 = Control&lowbar;L
</para>
<para>
keycode 38 = a
</para>
<para>
keycode 39 = s
</para>
<para>
keycode 40 = d
</para>
<para>
keycode 41 = f
</para>
<para>
keycode 42 = g
</para>
<para>
keycode 43 = h
</para>
<para>
keycode 44 = j
</para>
<para>
keycode 45 = k
</para>
<para>
keycode 46 = l
</para>
<para>
keycode 47 = odiaeresis Odiaeresis
</para>
<para>
keycode 48 = adiaeresis Adiaeresis
</para>
<para>
keycode 49 = dead&lowbar;circumflex degree
</para>
<para>
keycode 50 = Shift&lowbar;L
</para>
<para>
keycode 51 = numbersign apostrophe
</para>
<para>
keycode 52 = y
</para>
<para>
keycode 53 = x
</para>
<para>
keycode 54 = c
</para>
<para>
keycode 55 = v
</para>
<para>
keycode 56 = b
</para>
<para>
keycode 57 = n
</para>
<para>
keycode 58 = m
</para>
<para>
keycode 59 = comma semicolon
</para>
<para>
keycode 60 = period colon Multi&lowbar;key
</para>
<para>
keycode 61 = minus underscore
</para>
<para>
keycode 62 = Shift&lowbar;R
</para>
<para>
keycode 63 = KP&lowbar;Multiply
</para>
<para>
keycode 64 = Alt&lowbar;L Meta&lowbar;L
</para>
<para>
keycode 65 = space space
</para>
<para>
keycode 66 = Caps&lowbar;Lock
</para>
<para>
keycode 67 = F1 F11
</para>
<para>
keycode 68 = F2 F12
</para>
<para>
keycode 69 = F3 F13
</para>
<para>
keycode 70 = F4 F14
</para>
<para>
keycode 71 = F5 F15
</para>
<para>
keycode 72 = F6 F16
</para>
<para>
keycode 73 = F7 F17
</para>
<para>
keycode 74 = F8 F18
</para>
<para>
keycode 75 = F9 F19
</para>
<para>
keycode 76 = F10 F20
</para>
<para>
keycode 77 = Num&lowbar;Lock
</para>
<para>
keycode 78 = Scroll&lowbar;Lock
</para>
<para>
keycode 79 = KP&lowbar;7
</para>
<para>
keycode 80 = KP&lowbar;8
</para>
<para>
keycode 81 = KP&lowbar;9
</para>
<para>
keycode 82 = KP&lowbar;Subtract
</para>
<para>
keycode 83 = KP&lowbar;4
</para>
<para>
keycode 84 = KP&lowbar;5
</para>
<para>
keycode 85 = KP&lowbar;6
</para>
<para>
keycode 86 = KP&lowbar;Add
</para>
<para>
keycode 87 = KP&lowbar;1
</para>
<para>
keycode 88 = KP&lowbar;2
</para>
<para>
keycode 89 = KP&lowbar;3
</para>
<para>
keycode 90 = KP&lowbar;0
</para>
<para>
keycode 91 = KP&lowbar;Decimal
</para>
<para>
keycode 94 = less greater bar
</para>
<para>
keycode 95 = F11 F11
</para>
<para>
keycode 96 = F12 F12
</para>
<para>
keycode 108 = KP&lowbar;Enter
</para>
<para>
keycode 109 = Control&lowbar;R
</para>
<para>
keycode 112 = KP&lowbar;Divide
</para>
<para>
keycode 113 = Mode&lowbar;switch
</para>
<para>
keycode 114 = Break
</para>
<para>
keycode 110 = Find
</para>
<para>
keycode 98 = Up
</para>
<para>
keycode 99 = Prior
</para>
<para>
keycode 100 = Left
</para>
<para>
keycode 102 = Right
</para>
<para>
keycode 115 = Select
</para>
<para>
keycode 104 = Down
</para>
<para>
keycode 105 = Next
</para>
<para>
keycode 106 = Insert
</para>
<para>
! right windows-logo key
</para>
<para>
! in "windows" keyboards the postion of the key is annoying, is where AltGr
</para>
<para>
! usually resides, so go define it as AltGr
</para>
<para>
keycode 116 = Mode&lowbar;switch
</para>
<para>
! right windows-menu key
</para>
<para>
keycode 117 = Multi&lowbar;key
</para>
<para>
add Mod1 = Alt&lowbar;L
</para>
<para>
add Mod2 = Mode&lowbar;switch
</para>
</sect2>
<sect2>
<title>Hungarian</title>
<para>
clear Mod1
</para>
<para>
clear Mod2
</para>
<para>
!charset "iso-8859-2"
</para>
<para>
keycode 9 = Escape
</para>
<para>
keycode 10 = 1 apostrophe asciitilde
</para>
<para>
keycode 11 = 2 quotedbl dead&lowbar;caron
</para>
<para>
keycode 12 = 3 plus dead&lowbar;circumflex
</para>
<para>
keycode 13 = 4 exclam dead&lowbar;breve
</para>
<para>
keycode 14 = 5 percent degree
</para>
<para>
keycode 15 = 6 slash dead&lowbar;ogonek
</para>
<para>
keycode 16 = 7 equal dead&lowbar;grave
</para>
<para>
keycode 17 = 8 parenleft dead&lowbar;abovedot
</para>
<para>
keycode 18 = 9 parenright dead&lowbar;acute
</para>
<para>
keycode 19 = odiaeresis Odiaeresis dead&lowbar;doubleacute
</para>
<para>
keycode 20 = udiaeresis Udiaeresis dead&lowbar;diaeresis
</para>
<para>
keycode 21 = oacute Oacute dead&lowbar;cedilla
</para>
<para>
keycode 22 = BackSpace Delete
</para>
<para>
keycode 23 = Tab Tab
</para>
<para>
keycode 24 = q Q backslash
</para>
<para>
keycode 25 = w W bar
</para>
<para>
keycode 26 = e E currency
</para>
<para>
keycode 27 = r
</para>
<para>
keycode 28 = t
</para>
<para>
keycode 29 = z
</para>
<para>
keycode 30 = u
</para>
<para>
keycode 31 = i I iacute Iacute
</para>
<para>
keycode 32 = o
</para>
<para>
keycode 33 = p
</para>
<para>
keycode 34 = odoubleacute Odoubleacute division
</para>
<para>
keycode 35 = uacute Uacute
</para>
<para>
keycode 36 = Return
</para>
<para>
keycode 37 = Control&lowbar;L
</para>
<para>
keycode 38 = a
</para>
<para>
keycode 39 = s S dstroke
</para>
<para>
keycode 40 = d D Dstroke
</para>
<para>
keycode 41 = f F bracketleft
</para>
<para>
keycode 42 = g G bracketright
</para>
<para>
keycode 43 = h
</para>
<para>
keycode 44 = j J Iacute iacute
</para>
<para>
keycode 45 = k K lstroke Lstroke
</para>
<para>
keycode 46 = l L Lstroke lstroke
</para>
<para>
keycode 47 = eacute Eacute dollar
</para>
<para>
keycode 48 = aacute Aacute ssharp
</para>
<para>
keycode 49 = 0 section
</para>
<para>
keycode 50 = Shift&lowbar;L
</para>
<para>
keycode 51 = udoubleacute Udoubleacute currency
</para>
<para>
keycode 52 = y Y greater
</para>
<para>
keycode 53 = x X numbersign
</para>
<para>
keycode 54 = c C ampersand
</para>
<para>
keycode 55 = v V at
</para>
<para>
keycode 56 = b B braceleft
</para>
<para>
keycode 57 = n N braceright
</para>
<para>
keycode 58 = m
</para>
<para>
keycode 59 = comma question semicolon
</para>
<para>
keycode 60 = period colon Multi&lowbar;key
</para>
<para>
keycode 61 = minus underscore asterisk
</para>
<para>
keycode 62 = Shift&lowbar;R
</para>
<para>
keycode 63 = KP&lowbar;Multiply
</para>
<para>
keycode 64 = Alt&lowbar;L Meta&lowbar;L
</para>
<para>
keycode 65 = space space
</para>
<para>
keycode 66 = Caps&lowbar;Lock
</para>
<para>
keycode 67 = F1 F11
</para>
<para>
keycode 68 = F2 F12
</para>
<para>
keycode 69 = F3 F13
</para>
<para>
keycode 70 = F4 F14
</para>
<para>
keycode 71 = F5 F15
</para>
<para>
keycode 72 = F6 F16
</para>
<para>
keycode 73 = F7 F17
</para>
<para>
keycode 74 = F8 F18
</para>
<para>
keycode 75 = F9 F19
</para>
<para>
keycode 76 = F10 F20
</para>
<para>
keycode 77 = Num&lowbar;Lock
</para>
<para>
keycode 78 = Scroll&lowbar;Lock
</para>
<para>
keycode 79 = KP&lowbar;7
</para>
<para>
keycode 80 = KP&lowbar;8
</para>
<para>
keycode 81 = KP&lowbar;9
</para>
<para>
keycode 82 = KP&lowbar;Subtract
</para>
<para>
keycode 83 = KP&lowbar;4
</para>
<para>
keycode 84 = KP&lowbar;5
</para>
<para>
keycode 85 = KP&lowbar;6
</para>
<para>
keycode 86 = KP&lowbar;Add
</para>
<para>
keycode 87 = KP&lowbar;1
</para>
<para>
keycode 88 = KP&lowbar;2
</para>
<para>
keycode 89 = KP&lowbar;3
</para>
<para>
keycode 90 = KP&lowbar;0
</para>
<para>
keycode 91 = KP&lowbar;Decimal
</para>
<para>
keycode 94 = iacute Iacute less
</para>
<para>
keycode 95 = F11 F11
</para>
<para>
keycode 96 = F12 F12
</para>
<para>
keycode 108 = KP&lowbar;Enter
</para>
<para>
keycode 109 = Control&lowbar;R
</para>
<para>
keycode 112 = KP&lowbar;Divide
</para>
<para>
keycode 113 = Mode&lowbar;switch
</para>
<para>
keycode 114 = Break
</para>
<para>
keycode 110 = Find
</para>
<para>
keycode 98 = Up
</para>
<para>
keycode 99 = Prior
</para>
<para>
keycode 100 = Left
</para>
<para>
keycode 102 = Right
</para>
<para>
keycode 115 = Select
</para>
<para>
keycode 104 = Down
</para>
<para>
keycode 105 = Next
</para>
<para>
keycode 106 = Insert
</para>
<para>
keycode 107 = Delete
</para>
<para>
! as dead&lowbar;ogonek, dead&lowbar;caron, dead&lowbar;breve and dead&lowbar;doubleacute doesn't exist
</para>
<para>
! (yet), I put also compose lines for use with respectively dead&lowbar;cedilla,
</para>
<para>
! dead&lowbar;circumflex, dead&lowbar;tilde and dead&lowbar;tilde
</para>
<para>
add Mod1 = Alt&lowbar;L
</para>
<para>
add Mod2 = Mode&lowbar;switch
</para>
</sect2>
<sect2>
<title>Czech</title>
<para>
! Converted keytable file to xmodmap file
</para>
<para>
clear Mod1
</para>
<para>
clear Mod2
</para>
<para>
keycode 9 = Escape Escape
</para>
<para>
keycode 10 = plus 1 asciitilde
</para>
<para>
keycode 11 = ecaron 2 dead&lowbar;caron
</para>
<para>
keycode 12 = scaron 3 asciicircum
</para>
<para>
keycode 13 = ccaron 4 dead&lowbar;breve
</para>
<para>
keycode 14 = rcaron 5 degree
</para>
<para>
keycode 15 = zcaron 6 dead&lowbar;ogonek
</para>
<para>
keycode 16 = yacute 7 dead&lowbar;grave
</para>
<para>
keycode 17 = aacute 8 dead&lowbar;abovedot
</para>
<para>
keycode 18 = iacute 9 dead&lowbar;acute
</para>
<para>
keycode 19 = eacute 0 dead&lowbar;doubleacute
</para>
<para>
keycode 20 = equal percent dead&lowbar;diaeresis
</para>
<para>
keycode 21 = dead&lowbar;acute dead&lowbar;caron dead&lowbar;cedilla
</para>
<para>
keycode 22 = BackSpace Delete
</para>
<para>
keycode 23 = Tab Tab
</para>
<para>
keycode 24 = q Q backslash
</para>
<para>
keycode 25 = w W bar
</para>
<para>
keycode 26 = e E currency
</para>
<para>
keycode 27 = r
</para>
<para>
keycode 28 = t
</para>
<para>
keycode 29 = z
</para>
<para>
keycode 30 = u
</para>
<para>
keycode 31 = i
</para>
<para>
keycode 32 = o
</para>
<para>
keycode 33 = p
</para>
<para>
keycode 34 = uacute slash division
</para>
<para>
keycode 35 = parenright parenleft
</para>
<para>
keycode 36 = Return
</para>
<para>
keycode 37 = Control&lowbar;L
</para>
<para>
keycode 38 = a
</para>
<para>
keycode 39 = s S dstroke Dstroke
</para>
<para>
keycode 40 = d D Dstroke dstroke
</para>
<para>
keycode 41 = f F bracketleft
</para>
<para>
keycode 42 = g G bracketright
</para>
<para>
keycode 43 = h
</para>
<para>
keycode 44 = j
</para>
<para>
keycode 45 = k K lstroke Lstroke
</para>
<para>
keycode 46 = l L Lstroke lstroke
</para>
<para>
keycode 47 = uring quotedbl dollar
</para>
<para>
keycode 48 = section exclam ssharp
</para>
<para>
keycode 49 = semicolon degree
</para>
<para>
keycode 50 = Shift&lowbar;L
</para>
<para>
keycode 51 = dead&lowbar;diaeresis dead&lowbar;acute currency
</para>
<para>
keycode 52 = y Y greater
</para>
<para>
keycode 53 = x X numbersign
</para>
<para>
keycode 54 = c
</para>
<para>
keycode 55 = v V at
</para>
<para>
keycode 56 = b B braceleft
</para>
<para>
keycode 57 = n N braceright
</para>
<para>
keycode 58 = m
</para>
<para>
keycode 59 = comma question
</para>
<para>
keycode 60 = period colon Multi&lowbar;key
</para>
<para>
keycode 61 = minus underscore
</para>
<para>
keycode 62 = Shift&lowbar;R
</para>
<para>
keycode 63 = KP&lowbar;Multiply
</para>
<para>
keycode 64 = Alt&lowbar;L Meta&lowbar;L
</para>
<para>
keycode 65 = space space
</para>
<para>
keycode 66 = Caps&lowbar;Lock
</para>
<para>
keycode 67 = F1 F11
</para>
<para>
keycode 68 = F2 F12
</para>
<para>
keycode 69 = F3 F13
</para>
<para>
keycode 70 = F4 F14
</para>
<para>
keycode 71 = F5 F15
</para>
<para>
keycode 72 = F6 F16
</para>
<para>
keycode 73 = F7 F17
</para>
<para>
keycode 74 = F8 F18
</para>
<para>
keycode 75 = F9 F19
</para>
<para>
keycode 76 = F10 F20
</para>
<para>
keycode 77 = Num&lowbar;Lock
</para>
<para>
keycode 78 = Scroll&lowbar;Lock
</para>
<para>
keycode 79 = KP&lowbar;7
</para>
<para>
keycode 80 = KP&lowbar;8
</para>
<para>
keycode 81 = KP&lowbar;9
</para>
<para>
keycode 82 = KP&lowbar;Subtract
</para>
<para>
keycode 83 = KP&lowbar;4
</para>
<para>
keycode 84 = KP&lowbar;5
</para>
<para>
keycode 85 = KP&lowbar;6
</para>
<para>
keycode 86 = KP&lowbar;Add
</para>
<para>
keycode 87 = KP&lowbar;1
</para>
<para>
keycode 88 = KP&lowbar;2
</para>
<para>
keycode 89 = KP&lowbar;3
</para>
<para>
keycode 90 = KP&lowbar;0
</para>
<para>
keycode 94 = ampersand asterisk less
</para>
<para>
keycode 95 = F11 F11
</para>
<para>
keycode 96 = F12 F12
</para>
<para>
keycode 108 = KP&lowbar;Enter
</para>
<para>
keycode 109 = Control&lowbar;R
</para>
<para>
keycode 112 = KP&lowbar;Divide
</para>
<para>
keycode 113 = Mode&lowbar;switch
</para>
<para>
keycode 114 = Break
</para>
<para>
keycode 110 = Find
</para>
<para>
keycode 98 = Up
</para>
<para>
keycode 99 = Prior
</para>
<para>
keycode 100 = Left
</para>
<para>
keycode 102 = Right
</para>
<para>
keycode 115 = Select
</para>
<para>
keycode 104 = Down
</para>
<para>
keycode 105 = Next
</para>
<para>
keycode 106 = Insert
</para>
<para>
! right windows-logo key
</para>
<para>
! in "windows" keyboards the postion of the key is annoying, is where AltGr
</para>
<para>
! usually resides, so go definie it as AltGr
</para>
<para>
keycode 116 = Mode&lowbar;switch
</para>
<para>
! right windows-menu key
</para>
<para>
keycode 117 = Multi&lowbar;key
</para>
<para>
add Mod1 = Alt&lowbar;L
</para>
<para>
add Mod2 = Mode&lowbar;switch
</para>
</sect2>
<sect2>
<title>Polish</title>
<para>
! The "AltGr" (right Alt) key generates Mode&lowbar;switch
</para>
<para>
keycode 0x09 = Escape
</para>
<para>
keycode 0x43 = F1
</para>
<para>
keycode 0x44 = F2
</para>
<para>
keycode 0x45 = F3
</para>
<para>
keycode 0x46 = F4
</para>
<para>
keycode 0x47 = F5
</para>
<para>
keycode 0x48 = F6
</para>
<para>
keycode 0x49 = F7
</para>
<para>
keycode 0x4A = F8
</para>
<para>
keycode 0x4B = F9
</para>
<para>
keycode 0x4C = F10
</para>
<para>
keycode 0x5F = F11
</para>
<para>
keycode 0x60 = F12
</para>
<para>
keycode 0x6F = Print
</para>
<para>
keycode 0x4E = Multi&lowbar;key
</para>
<para>
keycode 0x6E = Pause
</para>
<para>
keycode 0x31 = grave asciitilde
</para>
<para>
keycode 0x0A = 1 exclam
</para>
<para>
keycode 0x0B = 2 at
</para>
<para>
keycode 0x0C = 3 numbersign
</para>
<para>
keycode 0x0D = 4 dollar
</para>
<para>
keycode 0x0E = 5 percent
</para>
<para>
keycode 0x0F = 6 asciicircum
</para>
<para>
keycode 0x10 = 7 ampersand section
</para>
<para>
keycode 0x11 = 8 asterisk
</para>
<para>
keycode 0x12 = 9 parenleft
</para>
<para>
keycode 0x13 = 0 parenright
</para>
<para>
keycode 0x14 = minus underscore
</para>
<para>
keycode 0x15 = equal plus
</para>
<para>
keycode 0x33 = backslash bar
</para>
<para>
keycode 0x16 = BackSpace
</para>
<para>
keycode 0x6A = Insert
</para>
<para>
keycode 0x61 = Home
</para>
<para>
keycode 0x63 = Prior
</para>
<para>
keycode 0x4D = Num&lowbar;Lock
</para>
<para>
keycode 0x70 = KP&lowbar;Divide
</para>
<para>
keycode 0x3F = KP&lowbar;Multiply
</para>
<para>
keycode 0x52 = KP&lowbar;Subtract
</para>
<para>
keycode 0x17 = Tab
</para>
<para>
keycode 0x18 = Q
</para>
<para>
keycode 0x19 = W
</para>
<para>
keycode 0x1A = e E eogonek Eogonek
</para>
<para>
keycode 0x1B = R
</para>
<para>
keycode 0x1C = T
</para>
<para>
keycode 0x1D = Y
</para>
<para>
keycode 0x1E = U
</para>
<para>
keycode 0x1F = I
</para>
<para>
keycode 0x20 = o O oacute Oacute
</para>
<para>
keycode 0x21 = P
</para>
<para>
keycode 0x22 = bracketleft braceleft
</para>
<para>
keycode 0x23 = bracketright braceright
</para>
<para>
keycode 0x24 = Return
</para>
<para>
keycode 0x6B = Delete
</para>
<para>
keycode 0x67 = End
</para>
<para>
keycode 0x69 = Next
</para>
<para>
keycode 0x4F = KP&lowbar;7
</para>
<para>
keycode 0x50 = KP&lowbar;8
</para>
<para>
keycode 0x51 = KP&lowbar;9
</para>
<para>
keycode 0x56 = KP&lowbar;Add
</para>
<para>
keycode 0x42 = Caps&lowbar;Lock
</para>
<para>
keycode 0x26 = a A aogonek Aogonek
</para>
<para>
keycode 0x27 = s S sacute Sacute
</para>
<para>
keycode 0x28 = D
</para>
<para>
keycode 0x29 = F
</para>
<para>
keycode 0x2A = G
</para>
<para>
keycode 0x2B = H
</para>
<para>
keycode 0x2C = J
</para>
<para>
keycode 0x2D = K
</para>
<para>
keycode 0x2E = l L lstroke Lstroke
</para>
<para>
keycode 0x2F = semicolon colon
</para>
<para>
keycode 0x30 = apostrophe quotedbl
</para>
<para>
keycode 0x53 = KP&lowbar;4
</para>
<para>
keycode 0x54 = KP&lowbar;5
</para>
<para>
keycode 0x55 = KP&lowbar;6
</para>
<para>
keycode 0x32 = Shift&lowbar;L
</para>
<para>
keycode 0x34 = z Z zabovedot Zabovedot
</para>
<para>
keycode 0x35 = x X zacute Zacute
</para>
<para>
keycode 0x36 = c C cacute Cacute
</para>
<para>
keycode 0x37 = V
</para>
<para>
keycode 0x38 = B
</para>
<para>
keycode 0x39 = n N nacute Nacute
</para>
<para>
keycode 0x3A = M
</para>
<para>
keycode 0x3B = comma less
</para>
<para>
keycode 0x3C = period greater Multi&lowbar;key
</para>
<para>
keycode 0x3D = slash question
</para>
<para>
keycode 0x3E = Shift&lowbar;R
</para>
<para>
keycode 0x62 = Up
</para>
<para>
keycode 0x57 = KP&lowbar;1
</para>
<para>
keycode 0x58 = KP&lowbar;2
</para>
<para>
keycode 0x59 = KP&lowbar;3
</para>
<para>
keycode 0x6C = KP&lowbar;Enter
</para>
<para>
keycode 0x25 = Control&lowbar;L
</para>
<para>
keycode 0x40 = Alt&lowbar;L Meta&lowbar;L
</para>
<para>
keycode 0x41 = space
</para>
<para>
keycode 0x71 = Mode&lowbar;switch
</para>
<para>
keycode 0x6D = Control&lowbar;R
</para>
<para>
keycode 0x64 = Left
</para>
<para>
keycode 0x68 = Down
</para>
<para>
keycode 0x66 = Right
</para>
<para>
keycode 0x5A = KP&lowbar;0
</para>
<para>
keycode 0x5B = KP&lowbar;Decimal
</para>
<para>
! right windows-logo key
</para>
<para>
! in "windows" keyboards the postion of the key is annoying, is where AltGr
</para>
<para>
! usually resides, so go definie it as AltGr
</para>
<para>
keycode 116 = Mode&lowbar;switch
</para>
<para>
! right windows-menu key
</para>
<para>
keycode 117 = Multi&lowbar;key
</para>
<para>
clear Shift
</para>
<para>
clear Lock
</para>
<para>
clear Control
</para>
<para>
clear Mod1
</para>
<para>
clear Mod2
</para>
<para>
clear Mod3
</para>
<para>
clear Mod4
</para>
<para>
clear Mod5
</para>
<para>
add Shift = Shift&lowbar;L Shift&lowbar;R
</para>
<para>
add Lock = Caps&lowbar;Lock
</para>
<para>
add Control = Control&lowbar;L Control&lowbar;R
</para>
<para>
add Mod1 = Alt&lowbar;L
</para>
<para>
!Mode&lowbar;switch
</para>
<para>
add Mod2 = Mode&lowbar;switch
</para>
</sect2>
<sect2>
<title>French</title>
<para>
clear Mod1
</para>
<para>
clear Mod2
</para>
<para>
keycode 9 = Escape Escape
</para>
<para>
keycode 10 = ampersand 1
</para>
<para>
keycode 11 = eacute 2 dead&lowbar;tilde
</para>
<para>
keycode 12 = quotedbl 3 numbersign
</para>
<para>
keycode 13 = apostrophe 4 braceleft
</para>
<para>
keycode 14 = parenleft 5 bracketleft
</para>
<para>
keycode 15 = minus 6 bar
</para>
<para>
keycode 16 = egrave 7 dead&lowbar;grave
</para>
<para>
keycode 17 = underscore 8 backslash
</para>
<para>
keycode 18 = ccedilla 9 asciicircum
</para>
<para>
keycode 19 = agrave 0 at
</para>
<para>
keycode 20 = parenright degree bracketright
</para>
<para>
keycode 21 = equal plus braceright
</para>
<para>
keycode 22 = BackSpace
</para>
<para>
keycode 23 = Tab Tab
</para>
<para>
keycode 24 = a
</para>
<para>
keycode 25 = z
</para>
<para>
keycode 26 = e E currency
</para>
<para>
keycode 27 = r
</para>
<para>
keycode 28 = t
</para>
<para>
keycode 29 = y
</para>
<para>
keycode 30 = u
</para>
<para>
keycode 31 = i
</para>
<para>
keycode 32 = o
</para>
<para>
keycode 33 = p
</para>
<para>
keycode 34 = dead&lowbar;circumflex dead&lowbar;diaeresis
</para>
<para>
keycode 35 = dollar sterling currency
</para>
<para>
keycode 36 = Return
</para>
<para>
keycode 37 = Control&lowbar;L
</para>
<para>
keycode 38 = q
</para>
<para>
keycode 39 = s
</para>
<para>
keycode 40 = d
</para>
<para>
keycode 41 = f
</para>
<para>
keycode 42 = g
</para>
<para>
keycode 43 = h
</para>
<para>
keycode 44 = j
</para>
<para>
keycode 45 = k
</para>
<para>
keycode 46 = l
</para>
<para>
keycode 47 = m M
</para>
<para>
keycode 48 = ugrave percent
</para>
<para>
keycode 49 = twosuperior
</para>
<para>
keycode 50 = Shift&lowbar;L
</para>
<para>
keycode 51 = asterisk mu
</para>
<para>
keycode 52 = w
</para>
<para>
keycode 53 = x
</para>
<para>
keycode 54 = c
</para>
<para>
keycode 55 = v
</para>
<para>
keycode 56 = b
</para>
<para>
keycode 57 = n
</para>
<para>
keycode 58 = comma question dead&lowbar;cedilla
</para>
<para>
keycode 59 = semicolon period
</para>
<para>
keycode 60 = colon slash Multi&lowbar;key
</para>
<para>
keycode 61 = exclam section
</para>
<para>
keycode 62 = Shift&lowbar;R
</para>
<para>
keycode 63 = KP&lowbar;Multiply
</para>
<para>
keycode 64 = Alt&lowbar;L Meta&lowbar;L
</para>
<para>
keycode 65 = space space
</para>
<para>
keycode 66 = Caps&lowbar;Lock
</para>
<para>
keycode 67 = F1 F11
</para>
<para>
keycode 68 = F2 F12
</para>
<para>
keycode 69 = F3 F13
</para>
<para>
keycode 70 = F4 F14
</para>
<para>
keycode 71 = F5 F15
</para>
<para>
keycode 72 = F6 F16
</para>
<para>
keycode 73 = F7 F17
</para>
<para>
keycode 74 = F8 F18
</para>
<para>
keycode 75 = F9 F19
</para>
<para>
keycode 76 = F10 F20
</para>
<para>
keycode 77 = Num&lowbar;Lock
</para>
<para>
keycode 78 = Scroll&lowbar;Lock
</para>
<para>
keycode 79 = KP&lowbar;7
</para>
<para>
keycode 80 = KP&lowbar;8
</para>
<para>
keycode 81 = KP&lowbar;9
</para>
<para>
keycode 82 = KP&lowbar;Subtract
</para>
<para>
keycode 83 = KP&lowbar;4
</para>
<para>
keycode 84 = KP&lowbar;5
</para>
<para>
keycode 85 = KP&lowbar;6
</para>
<para>
keycode 86 = KP&lowbar;Add
</para>
<para>
keycode 87 = KP&lowbar;1
</para>
<para>
keycode 88 = KP&lowbar;2
</para>
<para>
keycode 89 = KP&lowbar;3
</para>
<para>
keycode 90 = KP&lowbar;0
</para>
<para>
keycode 92 = Sys&lowbar;Req
</para>
<para>
keycode 94 = less greater bar
</para>
<para>
keycode 95 = F11 F11
</para>
<para>
keycode 96 = F12 F12
</para>
<para>
keycode 107 = Delete
</para>
<para>
keycode 108 = KP&lowbar;Enter
</para>
<para>
keycode 109 = Control&lowbar;R
</para>
<para>
keycode 112 = KP&lowbar;Divide
</para>
<para>
keycode 113 = Mode&lowbar;switch
</para>
<para>
keycode 114 = Break
</para>
<para>
keycode 110 = Find
</para>
<para>
keycode 98 = Up
</para>
<para>
keycode 99 = Prior
</para>
<para>
keycode 100 = Left
</para>
<para>
keycode 102 = Right
</para>
<para>
keycode 104 = Down
</para>
<para>
keycode 105 = Next
</para>
<para>
keycode 106 = Insert
</para>
<para>
! right windows-logo key
</para>
<para>
! in "windows" keyboards the postion of the key is annoying, is where AltGr
</para>
<para>
! usually resides, so go definie it as AltGr
</para>
<para>
keycode 116 = Mode&lowbar;switch
</para>
<para>
! right windows-menu key
</para>
<para>
keycode 117 = Multi&lowbar;key
</para>
<para>
add Mod1 = Alt&lowbar;L
</para>
<para>
add Mod2 = Mode&lowbar;switch
</para>
</sect2>
<sect2>
<title>Croatian/Slovenian</title>
<para>
clear Mod1
</para>
<para>
clear Mod2
</para>
<para>
keycode 9 = Escape
</para>
<para>
keycode 10 = 1 exclam asciitilde
</para>
<para>
keycode 11 = 2 quotedbl caron
</para>
<para>
keycode 12 = 3 numbersign asciicircum
</para>
<para>
keycode 13 = 4 dollar breve
</para>
<para>
keycode 14 = 5 percent degree
</para>
<para>
keycode 15 = 6 ampersand ogonek
</para>
<para>
keycode 16 = 7 slash grave
</para>
<para>
keycode 17 = 8 parenleft abovedot
</para>
<para>
keycode 18 = 9 parenright acute
</para>
<para>
keycode 19 = 0 equal doubleacute
</para>
<para>
keycode 20 = apostrophe question diaeresis
</para>
<para>
keycode 21 = plus asterisk cedilla
</para>
<para>
keycode 22 = Delete Delete
</para>
<para>
keycode 23 = Tab Tab
</para>
<para>
keycode 24 = q Q backslash
</para>
<para>
keycode 25 = w W bar
</para>
<para>
keycode 26 = e
</para>
<para>
keycode 27 = r
</para>
<para>
keycode 28 = t
</para>
<para>
keycode 29 = z
</para>
<para>
keycode 30 = u
</para>
<para>
keycode 31 = i
</para>
<para>
keycode 32 = o
</para>
<para>
keycode 33 = p
</para>
<para>
keycode 34 = scaron Scaron division
</para>
<para>
keycode 35 = dstroke Dstroke multiply
</para>
<para>
keycode 36 = Return
</para>
<para>
keycode 37 = Control&lowbar;L
</para>
<para>
keycode 38 = a
</para>
<para>
keycode 39 = s
</para>
<para>
keycode 40 = d
</para>
<para>
keycode 41 = f F bracketleft
</para>
<para>
keycode 42 = g G bracketright
</para>
<para>
keycode 43 = h
</para>
<para>
keycode 44 = j
</para>
<para>
keycode 45 = k K lstroke
</para>
<para>
keycode 46 = l L Lstroke
</para>
<para>
keycode 47 = ccaron Ccaron
</para>
<para>
keycode 48 = cacute Cacute ssharp
</para>
<para>
keycode 49 = cedilla diaeresis
</para>
<para>
keycode 50 = Shift&lowbar;L
</para>
<para>
keycode 51 = zcaron Zcaron currency
</para>
<para>
keycode 52 = y
</para>
<para>
keycode 53 = x
</para>
<para>
keycode 54 = c
</para>
<para>
keycode 55 = v V at
</para>
<para>
keycode 56 = b B braceleft
</para>
<para>
keycode 57 = n N braceright
</para>
<para>
keycode 58 = m M section
</para>
<para>
keycode 59 = comma semicolon
</para>
<para>
keycode 60 = period colon
</para>
<para>
keycode 61 = minus underscore
</para>
<para>
keycode 62 = Shift&lowbar;R
</para>
<para>
keycode 63 = KP&lowbar;Multiply
</para>
<para>
keycode 64 = Alt&lowbar;L Meta&lowbar;L
</para>
<para>
keycode 65 = space space
</para>
<para>
keycode 66 = Caps&lowbar;Lock
</para>
<para>
keycode 67 = F1 F11
</para>
<para>
keycode 68 = F2 F12
</para>
<para>
keycode 69 = F3 F13
</para>
<para>
keycode 70 = F4 F14
</para>
<para>
keycode 71 = F5 F15
</para>
<para>
keycode 72 = F6 F16
</para>
<para>
keycode 73 = F7 F17
</para>
<para>
keycode 74 = F8 F18
</para>
<para>
keycode 75 = F9 F19
</para>
<para>
keycode 76 = F10 F20
</para>
<para>
keycode 77 = Num&lowbar;Lock
</para>
<para>
keycode 78 = Scroll&lowbar;Lock
</para>
<para>
keycode 79 = KP&lowbar;7
</para>
<para>
keycode 80 = KP&lowbar;8
</para>
<para>
keycode 81 = KP&lowbar;9
</para>
<para>
keycode 82 = KP&lowbar;Subtract
</para>
<para>
keycode 83 = KP&lowbar;4
</para>
<para>
keycode 84 = KP&lowbar;5
</para>
<para>
keycode 85 = KP&lowbar;6
</para>
<para>
keycode 86 = KP&lowbar;Add
</para>
<para>
keycode 87 = KP&lowbar;1
</para>
<para>
keycode 88 = KP&lowbar;2
</para>
<para>
keycode 89 = KP&lowbar;3
</para>
<para>
keycode 90 = KP&lowbar;0
</para>
<para>
keycode 91 = KP&lowbar;Decimal
</para>
<para>
keycode 92 = X386Sys&lowbar;Req
</para>
<para>
keycode 94 = less greater
</para>
<para>
keycode 95 = F11 F1
</para>
<para>
keycode 96 = F12 F12
</para>
<para>
keycode 108 = KP&lowbar;Enter
</para>
<para>
keycode 109 = Control&lowbar;R
</para>
<para>
keycode 112 = KP&lowbar;Divide
</para>
<para>
keycode 113 = Mode&lowbar;switch
</para>
<para>
keycode 114 = Break
</para>
<para>
keycode 110 = Find
</para>
<para>
keycode 98 = Up
</para>
<para>
keycode 99 = Prior
</para>
<para>
keycode 100 = Left
</para>
<para>
keycode 102 = Right
</para>
<para>
keycode 104 = Down
</para>
<para>
keycode 105 = Next
</para>
<para>
keycode 106 = Insert
</para>
<para>
add Mod1 = Alt&lowbar;L
</para>
<para>
add Mod2 = Mode&lowbar;switch
</para>
</sect2>
<sect2>
<title>Lithuanian keyboard (AZERTY layout)</title>
<para>
</para>
<para>
clear Mod1
</para>
<para>
clear Mod2
</para>
<para>
keycode 9 = Escape Escape
</para>
<para>
keycode 10 = exclam 1
</para>
<para>
keycode 11 = quotedbl 2 at
</para>
<para>
keycode 12 = slash 3 numbersign
</para>
<para>
keycode 13 = semicolon 4 dollar
</para>
<para>
keycode 14 = colon 5 percent
</para>
<para>
keycode 15 = comma 6 asciicircum
</para>
<para>
keycode 16 = period 7 ampersand
</para>
<para>
keycode 17 = question 8 asterisk
</para>
<para>
keycode 18 = parenleft 9
</para>
<para>
keycode 19 = parenright 0
</para>
<para>
keycode 20 = underscore minus minus underscore
</para>
<para>
keycode 21 = plus equal equal plus
</para>
<para>
keycode 22 = BackSpace
</para>
<para>
keycode 23 = Tab Tab
</para>
<para>
keycode 24 = aogonek Aogonek q Q
</para>
<para>
keycode 25 = zcaron Zcaron w W
</para>
<para>
keycode 26 = e E currency
</para>
<para>
keycode 27 = r
</para>
<para>
keycode 28 = t
</para>
<para>
keycode 29 = y
</para>
<para>
keycode 30 = u
</para>
<para>
keycode 31 = i
</para>
<para>
keycode 32 = o
</para>
<para>
keycode 33 = p
</para>
<para>
keycode 34 = iogonek Iogonek bracketleft braceleft
</para>
<para>
keycode 35 = leftdoublequotemark doublelowquotemark bracketright braceright
</para>
<para>
keycode 36 = Return
</para>
<para>
keycode 37 = Control&lowbar;L
</para>
<para>
keycode 38 = a
</para>
<para>
keycode 39 = s
</para>
<para>
keycode 40 = d
</para>
<para>
keycode 41 = f
</para>
<para>
keycode 42 = g
</para>
<para>
keycode 43 = h
</para>
<para>
keycode 44 = j
</para>
<para>
keycode 45 = k
</para>
<para>
keycode 46 = l
</para>
<para>
keycode 47 = uogonek Uogonek semicolon colon
</para>
<para>
keycode 48 = eabovedot Eabovedot apostrophe quotedbl
</para>
<para>
keycode 49 = grave asciitilde
</para>
<para>
keycode 50 = Shift&lowbar;L
</para>
<para>
keycode 51 = backslash bar
</para>
<para>
keycode 52 = z
</para>
<para>
keycode 53 = umacron Umacron x X
</para>
<para>
keycode 54 = c
</para>
<para>
keycode 55 = v
</para>
<para>
keycode 56 = b
</para>
<para>
keycode 57 = n
</para>
<para>
keycode 58 = m
</para>
<para>
keycode 59 = ccaron Ccaron comma less
</para>
<para>
keycode 60 = scaron Scaron period greater
</para>
<para>
keycode 61 = eogonek Eogonek slash question
</para>
<para>
keycode 62 = Shift&lowbar;R
</para>
<para>
keycode 63 = KP&lowbar;Multiply
</para>
<para>
keycode 64 = Alt&lowbar;L Meta&lowbar;L
</para>
<para>
keycode 65 = space space
</para>
<para>
keycode 66 = Caps&lowbar;Lock
</para>
<para>
keycode 67 = F1 F11
</para>
<para>
keycode 68 = F2 F12
</para>
<para>
keycode 69 = F3 F13
</para>
<para>
keycode 70 = F4 F14
</para>
<para>
keycode 71 = F5 F15
</para>
<para>
keycode 72 = F6 F16
</para>
<para>
keycode 73 = F7 F17
</para>
<para>
keycode 74 = F8 F18
</para>
<para>
keycode 75 = F9 F19
</para>
<para>
keycode 76 = F10 F20
</para>
<para>
keycode 77 = Num&lowbar;Lock
</para>
<para>
keycode 78 = Scroll&lowbar;Lock
</para>
<para>
keycode 79 = KP&lowbar;7
</para>
<para>
keycode 80 = KP&lowbar;8
</para>
<para>
keycode 81 = KP&lowbar;9
</para>
<para>
keycode 82 = KP&lowbar;Subtract
</para>
<para>
keycode 83 = KP&lowbar;4
</para>
<para>
keycode 84 = KP&lowbar;5
</para>
<para>
keycode 85 = KP&lowbar;6
</para>
<para>
keycode 86 = KP&lowbar;Add
</para>
<para>
keycode 87 = KP&lowbar;1
</para>
<para>
keycode 88 = KP&lowbar;2
</para>
<para>
keycode 89 = KP&lowbar;3
</para>
<para>
keycode 90 = KP&lowbar;0
</para>
<para>
keycode 94 = less greater bar
</para>
<para>
keycode 95 = F11 F11
</para>
<para>
keycode 96 = F12 F12
</para>
<para>
keycode 108 = KP&lowbar;Enter
</para>
<para>
keycode 109 = Control&lowbar;R
</para>
<para>
keycode 112 = KP&lowbar;Divide
</para>
<para>
keycode 113 = Mode&lowbar;switch
</para>
<para>
keycode 114 = Break
</para>
<para>
keycode 110 = Find
</para>
<para>
keycode 98 = Up
</para>
<para>
keycode 99 = Prior
</para>
<para>
keycode 100 = Left
</para>
<para>
keycode 102 = Right
</para>
<para>
keycode 115 = Select
</para>
<para>
keycode 104 = Down
</para>
<para>
keycode 105 = Next
</para>
<para>
keycode 106 = Insert
</para>
<para>
! right windows-logo key
</para>
<para>
! in "windows" keyboards the postion of the key is annoying, is where AltGr
</para>
<para>
! usually resides, so go definie it as AltGr
</para>
<para>
keycode 116 = Mode&lowbar;switch
</para>
<para>
! right windows-menu key, redefined as Compose key
</para>
<para>
keycode 117 = Multi&lowbar;key
</para>
<para>
add Mod1 = Alt&lowbar;L
</para>
<para>
add Mod2 = Mode&lowbar;switch
</para>
</sect2>
<sect2>
<title>Polish</title>
<para>
! The "&#38; 7" key generates 7, ampersand, and section
</para>
<para>
! The "E" key generates e, E, eogonek, and Eogonek
</para>
<para>
! The "O" key generates o, O, oacute, and Oacute
</para>
<para>
! The "A" key generates a, A, aogonek, and Aogonek
</para>
<para>
! The "S" key generates s, S, sacute, and Sacute
</para>
<para>
! The "L" key generates l, L, lstroke, and Lstroke
</para>
<para>
! The "Z" key generates z, Z, zabovedot, and Zabovedot
</para>
<para>
! The "X" key generates x, X, zacute, and Zacute
</para>
<para>
! The "C" key generates c, C, cacute, and Cacute
</para>
<para>
! The "N" key generates n, N, nacute, and Nacute
</para>
<para>
! The "AltGr" key generates Mode&lowbar;switch
</para>
<para>
keycode 0x09 = Escape
</para>
<para>
keycode 0x43 = F1
</para>
<para>
keycode 0x44 = F2
</para>
<para>
keycode 0x45 = F3
</para>
<para>
keycode 0x46 = F4
</para>
<para>
keycode 0x47 = F5
</para>
<para>
keycode 0x48 = F6
</para>
<para>
keycode 0x49 = F7
</para>
<para>
keycode 0x4A = F8
</para>
<para>
keycode 0x4B = F9
</para>
<para>
keycode 0x4C = F10
</para>
<para>
keycode 0x5F = F11
</para>
<para>
keycode 0x60 = F12
</para>
<para>
keycode 0x6F = Print
</para>
<para>
keycode 0x4E = Multi&lowbar;key
</para>
<para>
keycode 0x6E = Pause
</para>
<para>
keycode 0x31 = grave asciitilde
</para>
<para>
keycode 0x0A = 1 exclam
</para>
<para>
keycode 0x0B = 2 at
</para>
<para>
keycode 0x0C = 3 numbersign
</para>
<para>
keycode 0x0D = 4 dollar
</para>
<para>
keycode 0x0E = 5 percent
</para>
<para>
keycode 0x0F = 6 asciicircum
</para>
<para>
keycode 0x10 = 7 ampersand section
</para>
<para>
keycode 0x11 = 8 asterisk
</para>
<para>
keycode 0x12 = 9 parenleft
</para>
<para>
keycode 0x13 = 0 parenright
</para>
<para>
keycode 0x14 = minus underscore
</para>
<para>
keycode 0x15 = equal plus
</para>
<para>
keycode 0x33 = backslash bar
</para>
<para>
keycode 0x16 = BackSpace
</para>
<para>
keycode 0x6A = Insert
</para>
<para>
keycode 0x61 = Home
</para>
<para>
keycode 0x63 = Prior
</para>
<para>
keycode 0x4D = Num&lowbar;Lock
</para>
<para>
keycode 0x70 = KP&lowbar;Divide
</para>
<para>
keycode 0x3F = KP&lowbar;Multiply
</para>
<para>
keycode 0x52 = KP&lowbar;Subtract
</para>
<para>
keycode 0x17 = Tab
</para>
<para>
keycode 0x18 = Q
</para>
<para>
keycode 0x19 = W
</para>
<para>
keycode 0x1A = e E eogonek Eogonek
</para>
<para>
keycode 0x1B = R
</para>
<para>
keycode 0x1C = T
</para>
<para>
keycode 0x1D = Y
</para>
<para>
keycode 0x1E = U
</para>
<para>
keycode 0x1F = I
</para>
<para>
keycode 0x20 = o O oacute Oacute
</para>
<para>
keycode 0x21 = P
</para>
<para>
keycode 0x22 = bracketleft braceleft
</para>
<para>
keycode 0x23 = bracketright braceright
</para>
<para>
keycode 0x24 = Return
</para>
<para>
keycode 0x6B = Delete
</para>
<para>
keycode 0x67 = End
</para>
<para>
keycode 0x69 = Next
</para>
<para>
keycode 0x4F = KP&lowbar;7
</para>
<para>
keycode 0x50 = KP&lowbar;8
</para>
<para>
keycode 0x51 = KP&lowbar;9
</para>
<para>
keycode 0x56 = KP&lowbar;Add
</para>
<para>
keycode 0x42 = Caps&lowbar;Lock
</para>
<para>
keycode 0x26 = a A aogonek Aogonek
</para>
<para>
keycode 0x27 = s S sacute Sacute
</para>
<para>
keycode 0x28 = D
</para>
<para>
keycode 0x29 = F
</para>
<para>
keycode 0x2A = G
</para>
<para>
keycode 0x2B = H
</para>
<para>
keycode 0x2C = J
</para>
<para>
keycode 0x2D = K
</para>
<para>
keycode 0x2E = l L lstroke Lstroke
</para>
<para>
keycode 0x2F = semicolon colon
</para>
<para>
keycode 0x30 = apostrophe quotedbl
</para>
<para>
keycode 0x53 = KP&lowbar;4
</para>
<para>
keycode 0x54 = KP&lowbar;5
</para>
<para>
keycode 0x55 = KP&lowbar;6
</para>
<para>
keycode 0x32 = Shift&lowbar;L
</para>
<para>
keycode 0x34 = z Z zabovedot Zabovedot
</para>
<para>
keycode 0x35 = x X zacute Zacute
</para>
<para>
keycode 0x36 = c C cacute Cacute
</para>
<para>
keycode 0x37 = V
</para>
<para>
keycode 0x38 = B
</para>
<para>
keycode 0x39 = n N nacute Nacute
</para>
<para>
keycode 0x3A = M
</para>
<para>
keycode 0x3B = comma less
</para>
<para>
keycode 0x3C = period greater Multi&lowbar;key
</para>
<para>
keycode 0x3D = slash question
</para>
<para>
keycode 0x3E = Shift&lowbar;R
</para>
<para>
keycode 0x62 = Up
</para>
<para>
keycode 0x57 = KP&lowbar;1
</para>
<para>
keycode 0x58 = KP&lowbar;2
</para>
<para>
keycode 0x59 = KP&lowbar;3
</para>
<para>
keycode 0x6C = KP&lowbar;Enter
</para>
<para>
keycode 0x25 = Control&lowbar;L
</para>
<para>
keycode 0x40 = Alt&lowbar;L Meta&lowbar;L
</para>
<para>
keycode 0x41 = space
</para>
<para>
keycode 0x71 = Mode&lowbar;switch
</para>
<para>
keycode 0x6D = Control&lowbar;R
</para>
<para>
keycode 0x64 = Left
</para>
<para>
keycode 0x68 = Down
</para>
<para>
keycode 0x66 = Right
</para>
<para>
keycode 0x5A = KP&lowbar;0
</para>
<para>
keycode 0x5B = KP&lowbar;Decimal
</para>
<para>
! right windows-logo key
</para>
<para>
! in "windows" keyboards the postion of the key is annoying, is where AltGr
</para>
<para>
! usually resides, so go definie it as AltGr
</para>
<para>
keycode 116 = Mode&lowbar;switch
</para>
<para>
! right windows-menu key
keycode 117 = Multi&lowbar;key
</para>
<para>
clear Shift
</para>
<para>
clear Lock
</para>
<para>
clear Control
</para>
<para>
clear Mod1
</para>
<para>
clear Mod2
</para>
<para>
clear Mod3
</para>
<para>
clear Mod4
</para>
<para>
clear Mod5
</para>
<para>
add Shift = Shift&lowbar;L Shift&lowbar;R
</para>
<para>
add Lock = Caps&lowbar;Lock
</para>
<para>
add Control = Control&lowbar;L Control&lowbar;R
</para>
<para>
add Mod1 = Alt&lowbar;L
</para>
<para>
!Mode&lowbar;switch
add Mod2 = Mode&lowbar;switch
</para>
</sect2>
</sect1>
<sect1>
<title>Troubleshooting and some Xmodmap tips</title>
<sect2>
<title>Troubleshooting</title>
<para>
Get the newest Linux distribution. Mandrake 8.1 or RedHat 7.2 work
fantastically with regard to internationalization (which could not be
said about the previous distributions). If locales are not installed, you must
install them. The GNU C Library comes with a locale database, which you should have on your system. Upgrade your glibc. Troubleshooting of older versions of XFree or KDE is
insignificant in my opinion, as the systems get better and better and people
install newer versions.
</para>
<para>
Use the command:
</para>
<para>
locale -a
</para>
<para>
to see all the locales.
</para>
<para>
</para>
</sect2>
<sect2>
<title>Tips</title>
<para>
If you want to list the current keymap table, issue the command:
xmodmap -pk &verbar; more
</para>
<para>
The xkeycaps program is a sort of graphical front-end for xmodmap. Start it
and see which numbers mean which keycode.
</para>
<para>
To make the mouse buttons left-handed, use a command:
xmodmap -e "pointer = 3 2 1"
</para>
<para>
To remove the CapsLock and change it to a control key, write this
in your Xmodmap file:
</para>
<para>
remove Lock = Caps&lowbar;Lock
keysym Caps&lowbar;Lock = Control&lowbar;L
add Control = Control&lowbar;L
</para>
</sect2>
</sect1>
<sect1>
<title>Links</title>
<sect2>
<title>Other information on internationalization</title>
<para>
<ulink
url="http://www.linuxfaq.com/HOWTO/Unicode-HOWTO.html"></ulink>
Unicode HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/Cyrillic-HOWTO.html"></ulink>
Cyrillic HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/Esperanto-HOWTO.html"></ulink>
Esperanto HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/Belgian-HOWTO.html"></ulink>
Belgian HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/Chinese-HOWTO.html"></ulink>
Chinese HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/Danish-HOWTO.html"></ulink>
Danish HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/Finnish-HOWTO.html"></ulink>
Finnish HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/French-HOWTO.html"></ulink>
French HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/German-HOWTO.html"></ulink>
German HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/Hebrew-HOWTO.html"></ulink>
Hebrew HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/Hellenic-HOWTO.html"></ulink>
Hellenic HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/Italian-HOWTO.html"></ulink>
Italian HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/Polish-HOWTO.html"></ulink>
Polish HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/Portuguese-HOWTO.html"></ulink>
Portugese HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/Serbian-HOWTO.html"></ulink>
Serbian HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/Slovenian-HOWTO.html"></ulink>
Slovenian HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/Spanish-HOWTO.html"></ulink>
Spanish HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/Thai-HOWTO.html"></ulink>
Thai HOWTO <ulink
url="http://www.linuxfaq.com/HOWTO/Turkish-HOWTO.html"></ulink>
Turskish HOWTO
</para>
</sect2>
<sect2>
<title>Links to some non ISO8859-1 fonts</title>
<para>
<ulink
url="ftp://ftp.redhat.com/pub/redhat/linux/7.2/en/os/i386/RedHat/RPMS/XFree86-ISO8859-15-100dpi-fonts-4.1.0-3.i386.rpm"></ulink>
<ulink
url="ftp://ftp.redhat.com/pub/redhat/linux/7.2/en/os/i386/RedHat/RPMS/XFree86-ISO8859-15-75dpi-fonts-4.1.0-3.i386.rpm"></ulink>
<ulink
url="ftp://ftp.redhat.com/pub/redhat/linux/7.2/en/os/i386/RedHat/RPMS/XFree86-ISO8859-2-100dpi-fonts-4.1.0-3.i386.rpm"></ulink>
<ulink
url="ftp://ftp.redhat.com/pub/redhat/linux/7.2/en/os/i386/RedHat/RPMS/XFree86-ISO8859-2-75dpi-fonts-4.1.0-3.i386.rpm"></ulink>
</para>
<para>
Note: This RedHat ftp directory contains more fonts, just look into the RPMdirectory above.
</para>
</sect2>
</sect1>
</article>