Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 04 Feb 2001 06:09:33 +0100
From:      xvudpapc <xvudpapc@savba.sk>
To:        doc@FreeBSD.org
Subject:   International Keyboard
Message-ID:  <3A7CE40C.85FF8160@savba.sk>

next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------83CDFAC47048B1B55B152525
Content-Type: text/plain; charset=iso-8859-2
Content-Transfer-Encoding: 7bit

Hello,

Can I submit a work in sgml on how to setup international keyboard in
FreeBSD? I tested this on various systems. Could you possibly include
this somewhere in your documentation as a tutorial?

Sincerely,
Juraj Sipos

--------------83CDFAC47048B1B55B152525
Content-Type: text/html; charset=iso-8859-2;
 name="Intkeyb.sgml"
Content-Transfer-Encoding: 8bit
Content-Disposition: inline;
 filename="Intkeyb.sgml"

<!DOCTYPE Article PUBLIC "-//Davenport//DTD DocBook V3.0//EN">

<Article>

<ArtHeader>

<Title>How to setup international keyboard in X Window System with Xmodmap</Title>
<AUTHOR
>
<FirstName>by Juraj Sipos, <Literal remap="tt"><ULink
URL="mailto:xvudpapc@savba.sk"
>xvudpapc@savba.sk</ULink
></Literal></FirstName>
</AUTHOR
>
<PubDate>v1.3, 05 February 2001</PubDate>

<Abstract>

<Para>
How to setup international keyboard in Linux or Unix with Xmodmap. 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 and KDE. This howto 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>
</VarListEntry>
<VarListEntry>
<Term>Version 1.1</Term>
<ListItem>
<Para>
Added copyright information and slight modifications pertaining to newer systems
</Para>
</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>
</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>
</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 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 ø and Spanish like ñ.
</Para>

<Para>
 
This is the Xmodmap Howto. 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 homepage 
at <ULink
URL="http://freebsd.nfo.sk/"
>http://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 Cyrillic, 
Hebrew, or Danish howto). This howto does not cover the 
/etc/X11/XF86Config file XKB configuration and don't mail me with 
questions regarding this matter. There are other howtos in Linux 
Documentation project, so please look there.
</Para>

</Sect2>

</Sect1>

<Sect1>
<Title>Setting up international keyboard in X Window System with Xmodmap</Title>

<Sect2>
<Title>Quick start</Title>

<Para>
Make your own .Xmodmap file according to information in this file.
</Para>

<Para>
  
Alternatively, write the following in your .bash&lowbar;profile in home directory:
</Para>

<Para>
export LANG=language
export LC&lowbar;ALL=language
</Para>

<Para>
and/or 
LANG=language
(which can be LANG="sk&lowbar;SK", for example)
in your /etc/sysconfig/i18n file
</Para>

<Para>
Here "language" is the language you want to use. The languages can be
found in the file locale.alias in /usr/X11R6/lib/X11/locale.
Run "exit" command on the console or reboot and log in again. 
</Para>

<Para>
Install fonts (best are ISO8859-2 Type1 fonts for Czech or Slovak), 
put them in path to your XF86Config. Start X Server. 
</Para>

<Para>
Please note that KDE 2.0 editors don't display ISO8859-2 fonts even 
if you have them in path. The modification of /etc/sysconfig/i18n file is
necessary here to use the international keyboard.
</Para>

<Para>
Run the command "xmodmap &nbsp;/.Xmodmap" from an X terminal window to force
the system to read the Xmodmap file. 
</Para>

<Para>
Switch the keyboard and enjoy.
</Para>

<Para>
The other, XKB solution, which is not covered in this file but mentioned
at least as it pertains to internationalization too, is another way of 
configuring international keyboard, and both the XKB and XMODMAP 
solutions are independent of one another. You may alternatively edit 
the /etc/X11/Xf86Config file as explained in a 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>
qwerty or qwertz means that letters z Z and y Y are swapped. 
The "grp:shift&lowbar;toggle" gives you an option to switch between keyboards. 
You may also try to write Option "XkbOptions"  "grp:ctrl&lowbar;shift&lowbar;toggle" 
to your XF86Config file, which will change keyboards by pressing Ctrl 
and Shift at the same time.
</Para>

<Para>
To see a variety of languages (symbols), look in the file symbols.dir
in /usr/X11R6/lib/X11/xkb directory. Note that some symbols are only in
sources and not in binaries (of XFree86). 
</Para>

<Para>
As you see, this looks quite complicated too and it gets even more difficult
when you realize that many national keymaps are not included in the standard
XFree86 binary distribution, although they are included in its sources.
The kikbd utility for handling international keyboard layouts was removed
from KDE 2.0 and documentation is quite insufficient. A simple way
would be to start KDE, change the international keyboard settings and
immediately write in the language you chose (this will work for German
and other languages maybe, but in Eastern European keyboards some letters
may not function). 
</Para>

<Para>
Moreover, the KDE 2.0 command "kcmshell Personalization/kcmlayout" will not show 
you a Croatian or Macedonian keyboard unless you modify the
/etc/sysconfig/i18n file. And although it shows a Czechoslovakian keyboard, 
Czechoslovakia does not exist as a country anymore and users may be confused 
with how to define Czech or Slovak language. 
</Para>

<Para>
Some X Window System managers override .Xmodmap setting. If .Xmodmap doesn't 
work immediately, 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 FreeBSD 4.1 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>

</Sect2>

<Sect2>
<Title>How to do it</Title>

</Sect2>

<Sect2>
<Title>This experimental or nonstandard solution is not necessary for newer versions of XFree86</Title>

<Para>
Put the following in your .bash&lowbar;profile: 
</Para>

<Para>
 
export LC&lowbar;ALL=language
</Para>

<Para>
export LANG=language
</Para>

<Para>
OR
</Para>

<Para>
export LC&lowbar;CTYPE=sk&lowbar;SK
export LC&lowbar;ALL=sk&lowbar;SK
</Para>

<Para>
OR for csh shell
</Para>

<Para>
setenv LC&lowbar;ALL=language
setenv LANG=language
</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 languages, so look there in order to find out
what is ca&lowbar;ES or br&lowbar;FR, or to find out the exact syntax for your language
(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 fonts and put path in XF86Config file 
for 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 
(alternatively, copy other iso885*** Compose files to the iso8859-1 
directory). 
</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 from X:
</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 X, 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 for the Slovak language uses the Scroll Lock to 
switch between keyboards (you can modify this .Xmodmap for any keyboard). 
</Para>

<Para>
e) Put the appropriate fontpath for your newly installed fonts 
in the XF86Config file, if necessary (some systems may not require this, 
the FontPath "unix/:7100" may be sufficient). The .Xmodmap solution may 
be applied to all X keyboards; .Xmodmap file overrides all settings of 
keyboard layouts as defined in /usr/X11R6/lib/X11/xkb/symbols/, 
where are symbols for many international keyboards. 
</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 (without modification of /etc/sysconfig/i18n file).
This means that the ISO8859-1 definitions must be used instead and they 
will either give you what they say they are (aacute &lsqb;á], eacute &lsqb;é], 
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 reveres &circ; above it). For example, "mu" will give 
lcaron (L'), "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>
Some X managers and/or environments override .Xmodmap settings, 
so if you use KDE and .Xmodmap doesn't work, force the system to read it
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>
You may write in a national keyboard only with applications that have access 
to your ISO8859-2 fonts (or other fonts), but this may not work with 
StarOffice or with other applications that have their own built-in fonts. 
StarOffice has its own fonts directory - for afm fonts in 
StarOffice/share/xp3/fontmetrics/afm, and for ps fonts in
StarOffice/share/xp3/pssoftfonts, so you must add the ISO8859-2 fonts 
to these directories (to tell StarOffice to use these fonts too) and edit 
fonts.dir file and add the symlinked fonts there. 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 StarOffice/share/xp3 directory and execute it there.
</Para>

<Para>
-------------------------------cut&lowbar;here-----------------------------------
&num;!/bin/sh
</Para>

<Para>
STAR&lowbar;OFFICE&lowbar;ROOT=/StarOffice52
</Para>

<Para>
FONTS&lowbar;DIR=/usr/X11R6/lib/X11/fonts/ISO8859-2/Type1
</Para>

<Para>
&num; The above fonts directory is for SuSE 7.0 and previous
</Para>

<Para>
&num; If you have Soffice instead of StarOffice52, change the second line to Soffice
</Para>

<Para>
&num; FONTS&lowbar;DIR=/usr/share/fonts/ISO8859-2/Type1
</Para>

<Para>
&num; The above fonts directory is for RedHat and Mandrake
</Para>

<Para>
&num; uncomment it if you use those systems
</Para>

<Para>
&num; -----------------------------------------------------------------------
</Para>

<Para>
&num; Don't edit the following script!
</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 made."
</Para>

<Para>
echo "If you want to do it, 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
------------------------------------cut&lowbar;here-----------------------------
</Para>

<Para>
StarOffice 5.2 fully recognizes Word97 documents even written in other
languages, but for the older versions or other editors, you may use 
a converter from iso8859-2 to win1250 encoding. 
</Para>

<Para>
StarOffice 5.2 can be thus used by professional translators
who may translate in any languages and give outputs in MS Word97 or
rtf format.
</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 "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 ("á");
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
&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;</Title>

<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, ISO8859-2 
and other definitions). If GNOME is not installed in the /opt directory,
look in /usr/share. To switch between the keyboards, use right Alt. It 
is defined in these Xmodmap files already.
</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 definitions are included here for you to know which names are used for 
which 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 Eastern 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 (RedHat) 
/usr/include/gdk/ directory. If no gdkkeysyms.h file is on your system, 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	
</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, 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" and "export LC&lowbar;ALL=language" statements 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 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 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>

</Sect2>

<Sect2>
<Title>The standard ISO8859-2 definitions in the Xmodmap file </Title>

<Para>
The example of a standard .Xmodmap file from keycode 0x31 to 0x33.
This file will make X Server correctly display lcaron, scaron, etc.,
if you use a newer version of XFree86 and/or have a LC&lowbar;LANG=language
and LC&lowbar;ALL=language statements in your bash&lowbar;profile or in /etc/sysconfig/i18n.
Just copy the following text from keycode 0x31 to 0x33 to the above-listed 
Xmodmap file (delete the experimental definitions from keycode 0x31 to 0x33). 
</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	scaron		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
</Para>

<Para>
bar		ograve		parenright
</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. (Please note that Serbian
language uses both Latin ISO8859-2 and Cyrillic ISO8859-5). 
</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>How this Xmodmap solution works on various systems</Title>

<Sect2>
<Title>SuSE </Title>

<Sect3>
<Title>SuSE 6.4 </Title>

<Para>
Everything works well with Xmodmap standard definitions. GNOME, KDE 1.x and 
other X Window managers, too, nicely display ISO8859-2 characters. No 
modification of other system files is required. The problematic here
is KDE 2.0, if you install it for this system.
</Para>

</Sect3>

<Sect3>
<Title>SuSE 7.0 with XFree86 version 3.3.6 and KDE 2.0 </Title>

<Para>
No LANG=language and LC&lowbar;ALL=language statements are necessary in your
bash&lowbar;profile. You may use the Xmodmap file with standard ISO8859-2 
keycode definitions (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. Internal KDE 2.0 editors 
do not properly display ISO8859-2 fonts unless the i18n file, or its equivalent,
is modified. You may also try to modify the KDE 2.0 settings in Preferences &#62;
Personalization &#62; Country &#38; Language, where you change the charset to 
ISO8859-2 characters. Old kedit, newest GNOME's gedit and StarOffice 
work well without modification of system files. Other X Window managers
like GNOME work well, too.
</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>

<Para>
The following is the FontPath section for ISO8859-2 fonts
from my SuSE 7.0 /etc/XF86Config file (these ISO8859-2 fonts
are on your Linux CD):
</Para>

<Para>
FontPath      "/usr/X11R6/lib/X11/fonts/ISO8859-2/Type1"
</Para>

<Para>
FontPath      "/usr/X11R6/lib/X11/fonts/ISO8859-2/Type1/afm"
</Para>

<Para>
FontPath      "/usr/X11R6/lib/X11/fonts/ISO8859-2/Type1/pfm"
</Para>

</Sect3>

</Sect2>

<Sect2>
<Title>Mandrake Linux </Title>

<Sect3>
<Title>Mandrake Linux 7.2 with KDE 2.0 </Title>

<Para>
GNOME and other X Window managers work well even without modification of
/etc/sysconfig/i18n file. KDE 2.0 is a little bit harder, as this file
needs to be modified. I used the "kcmshell Personalization/kcmlayout" 
command, (or go to menu Configuration &#62; KDE &#62; Personalization &#62; keyboard 
layout) to select the keyboard, and after putting the LANG=language in 
the /etc/sysconfig/i18n file (and rebooting afterwards), KDE 2.0 works 
nicely and StarOffice works immediately (with ISO8859-2 fonts in its 
directory) with dead keys. I chose Czechoslovakian as the second language 
and could write in Czech with ISO8859-2 characters on my screen even without 
the Xmodmap file. However, after using the Xmodmap file (standard definitions), 
I could use the Slovak keyboard layout.
</Para>

<Para>
The following is my Mandrake /etc/sysconfig/i18n file (I commented
the previous definitions for English):
</Para>

<Para>
&num;LC&lowbar;MONETARY=en&lowbar;US
</Para>

<Para>
&num;LC&lowbar;CTYPE=sk&lowbar;SK
</Para>

<Para>
&num;LC&lowbar;NUMERIC=en&lowbar;US
</Para>

<Para>
&num;LC&lowbar;MESSAGES=en&lowbar;US
</Para>

<Para>
LANGUAGE=sk&lowbar;SK
</Para>

<Para>
&num;LC&lowbar;TIME=en&lowbar;US
</Para>

<Para>
&num;RPM&lowbar;INSTALL&lowbar;LANG=en
</Para>

<Para>
&num;LC&lowbar;COLLATE=en&lowbar;US
</Para>

<Para>
The maps in /usr/X11R6/lib/X11/xkb/symbols can be modified on the fly
while in X; you only switch keyboards from the panel (clicking on icon).
You can edit those maps and modify them for your choice. After changing
some Czech definitions in the "cs" file to Slovak ones StarOffice displayed 
them well.
</Para>

<Para>
 
</Para>

<Para>
																       
</Para>

</Sect3>

</Sect2>

<Sect2>
<Title>RedHat </Title>

<Sect3>
<Title>RedHat 5.1, 5.2, 6.0, 6.1 and 6.2 (XFree86 3.3.6 and older)</Title>

<Para>
No LANG=language and LC&lowbar;ALL=language statements are necessary in your
bash&lowbar;profile. Here the "experimental" .Xmodmap solution works well
("mu" instead of "lcaron", etc., unless you modify the /etc/sysconfig/i18n
file; then you may try to use the "standard" entities) and you must copy 
the Compose file from ../IS08859-2 to ../ISO8859-1 directory to make dead 
keys work. The XF86Config file may remain untouched.
</Para>

</Sect3>

<Sect3>
<Title>RedHat 7.0 with KDE 2.0 and XFree86 4.x</Title>

<Para>
GNOME and other X Window managers work well. You do not have to copy the 
Compose file from ../ISO8859-2 to ../ISO8859-1 directory. KDE 1.x works well,
too, but KDE 2.0 requires modification of /etc/sysconfig/i18n file. 
The following is syntax of my i18n file from RedHat 7.0:
</Para>

<Para>
LANG="sk&lowbar;SK"
</Para>

<Para>
I changed nothing in the Menu in Preferences &#62; Personalization except that 
I added the additional keyboard (Czechoslovakian) layout. Please note
that some other systems may require a different attitude.
The following is the syntax from my KDE kxkbrc file in /root/.kde/share/config
directory:
&lsqb;Layout]
</Para>

<Para>
Additional=cs
</Para>

<Para>
AdditionalEncodings=ISO8859-2
</Para>

<Para>
Encoding=ISO8859-1
</Para>

<Para>
Layout=us
</Para>

<Para>
Model=pc104
</Para>

<Para>
Test=Test
</Para>

<Para>
Use=true
</Para>

<Para>
However, this file is generated automatically after you add a keyboard layout.
</Para>

</Sect3>

</Sect2>

<Sect2>
<Title>FreeBSD </Title>

<Sect3>
<Title>FreeBSD 3.1 and 3.2</Title>

<Para>
Same as with RedHat 5.1, 5.2, 6.0, 6.1, 6.2. 
</Para>

</Sect3>

<Sect3>
<Title>FreeBSD 4.1 </Title>

<Para>
No LANG=language and LC&lowbar;ALL=language statements are necessary in your
bash&lowbar;profile. However, you can use two strategies:
</Para>

<Para>
a) either you modify the /etc/profile file and put there a statement like:
LANG=sk&lowbar;SK.ISO8859-2; export LANG
</Para>

<Para>
After you reboot, you will have a Slovak keyboard in KDE immediately and
you can use the right Alt key to use ISO8859-1 keycodes. But dead keys will not
work and you have to copy the ../ISO8859-2/Compose file to ../ISO8859-1 
directory to make them work. Irritating may be using the right Alt to switch
to keycodes like "@", if you use an email client often, for example.
</Para>

<Para>
b) Same strategy as for FreeBSD 3.1, 3.2 with nonstandard xmodmap definitions
and copying the ../ISO8859-2/Compose file to ../ISO8859-1 directory.
</Para>

</Sect3>

</Sect2>

<Sect2>
<Title>Corel Linux </Title>

<Sect3>
<Title>Corel Linux 1.0 and 1.2</Title>

<Para>
Same as with FreeBSD.
</Para>

</Sect3>

</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, so that you can make your own keyboard layouts. 
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 position 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 position 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>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 position 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>
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 position 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>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 position 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, 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 position 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
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>Some Xmodmap 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 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>

</Sect1>

</Article>

--------------83CDFAC47048B1B55B152525--



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-doc" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3A7CE40C.85FF8160>