How to setup international keyboard in X Windows with
 Xmodmap
 by Juraj Sipos, [email protected]
 v1.4, 27 July 2001

 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 interna�
 tional keyboard for (Debian, RedHat, Mandrake, CorelLinux) Linux,
 FreeBSD, OpenBSD, NetBSD and possibly every Unix that uses XFree86 and
 KDE. The advantage of this howto is that it is not architecture spe�
 cific and will work on all other systems. However, it is a little
 experimental in that that it bypasses some standardized XFree86 solu�
 tions (with respect to its older versions), although a standard form
 of internationalization is included too.
 ______________________________________________________________________

 Table of Contents


 1. Introduction

    1.1 Copyright
    1.2 Revision history
    1.3 Introduction

 2. Setting up international keyboard in X Windows with Xmodmap

    2.1 Quick start
    2.2 How to do it
    2.3 This experimental or nonstandard solution is not necessary for newer versions of XFree86
    2.4 Xmodmap theory and standard Xmodmap solution
    2.5 Experimental .Xmodmap sample file for the Slovak language typewriter layout _______________________cut_here_________________________
    2.6 Character sets
    2.7 ISO-8859-2 (ISO Latin2) character set
    2.8 The standard ISO8859-2 definitions in the Xmodmap file

 3. How this Xmodmap solution works on various systems

    3.1 SuSE 6.4 and 7.0
       3.1.1 SuSE 7.0 with XFree86 version 3.3.6 and KDE 2.0 (this also applies to SuSE 6.4
       3.1.2 KDE 2.0 No LANG=language and LC_ALL=language statements are necessary in you bash_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. There's also some bug with fonts or something - KDE 2.0 does not properly handle ISO8859-2 fonts together with Xmodmap. Old kedit, newest GNOME's gedit and StarOffice work well (after applying the above script for StarOffice).
    3.2 SuSE 7.0 with Xfree86 version 3.3.6 and KDE 1.x
    3.3 Mandrake Linux 7.2
       3.3.1 Mandrake Linux 7.2 - as it should be (KDE 2.0 without Xmodmap)
       3.3.2 Mandrake Linux 7.2 with XFree86 version 3.3.6
    3.4 RedHat 5.1, 5.2, 6.0, 6.1 and 6.2 (XFree86 3.3.6 and older)
    3.5 FreeBSD 3.1 and 3.2
    3.6 FreeBSD 4.1
    3.7 Corel Linux 1.0 and 1.1
    3.8 ISO* specifications

 4. Some national Xmodmap files

    4.1 German
    4.2 Hungarian
    4.3 Czech
    4.4 Polish
    4.5 French
    4.6 Croatian/Slovenian
    4.7 Lithuanian keyboard (AZERTY layout)
    4.8 Polish

 5. Some Xmodmap tips


 ______________________________________________________________________

 1.  Introduction



 1.1.  Copyright

 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.

 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.


 1.2.  Revision history


    Version 1.0.0
       Initial version Summer 1999

    Version 1.1
       Added copyright information and slight modifications pertaining
       to newer systems

    Version 1.2
       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

    Version 1.3
       Minor corrections, spell checking and editation made, few more
       Xmodmap files added; list of what all ISO8859* specifications
       mean

    Version 1.4
       Correction of script for including X Window fonts to StarOffice


 1.3.  Introduction

 The international keyboard Xmodmap HOWTO. Copyright (C) 1999, 2001
 Juraj Sipos ([email protected]). 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 �.



 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 hompage at
 http://freebsd.nfo.sk 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). 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.


 2.  Setting up international keyboard in X Windows with Xmodmap


 2.1.  Quick start

 Make your own .Xmodmap file according to information in this file.



 Write the following to your .bash_profile in home directory:

 export LANG=language export LC_ALL=langauge

 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.  Run
 "exit" command on the console and log in again for bash to read the
 statement from its .bash_profile.


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

 Please note that the KDE 2.0 text editor doesn't display ISO8859-2
 fonts even if you have them in path. The "Latin2" statement in this
 editor's menu seems not to work. Install another simple text editor
 where you can CHOOSE fonts (the GNOME's gedit or kedit from older KDE
 will do).  Open a dialog window from menu, select font and choose
 ISO8859-2 charset.


 Run the command "xmodmap  /.Xmodmap" from an X terminal window to
 force the system to read the Xmodmap file.


 Switch the keyboard and enjoy.


 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:


 setxkbmap -model pc102 -symbols 'czsk(us_sk_qwertz)' setxkbmap cs
 -option grp:shift_toggle


 qwerty or qwertz means that the letter z Z and y Y are swapped.  The
 "grp:shift_toggle" gives you an option to switch between keyboards.
 You may also try to write Option "XkbOptions"  "grp:ctrl_shift_toggle"
 to your XF86Config file, which will change keyboards by pressing Ctrl
 and Shift at the same time.


 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.



 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).


 Moreover, the KDE 2.0 command "kcmshell Personalization/kcmlayout"
 will not show you a Croatian or Macedonian keyboard. 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.


 Some X Windows 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:


 xmodmap  /.Xmodmap

 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.


 2.2.  How to do it



 2.3.  This experimental or nonstandard solution is not necessary for
 newer versions of XFree86

 Put the following in you .bash_profile:


 export LC_ALL=language

 export LANG=language

 OR

 export LC_CTYPE=sk_SK export LC_ALL=sk_SK

 OR for csh shell

 setenv LC_ALL=language setenv LANG=langauge

 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_ES or br_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).


 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:


 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).


 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).


 c) Install ISO8859-2 fonts (or other pertinent fonts).

 You may try to issue the command:

 xset q

 to see which fonts are in your path.

 If you want to add fonts in your path from X Windows, issue the
 command:

 xset fp+ /usr/fonts_path

 xset fp rehash

 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.


 e) Put the appropriate fontpath for your newly installed fonts in the
 XF86Config file, if necessary (Mandrake 7.2 does not require this).
 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.


 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 [�], eacute [�], 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 ^ above it). For example, "mu" will give
 lcaron, "oslash" rcaron, etc.


 However, other key definitions, for example, adieresis (a with two
 dots above it), uacute (u with a slash above it), as well as
 dead_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).



 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.


 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:

 Section "Keyboard"

 Protocol "Standard"

 XkbRules "xfree86"

 XkbModel "pc101"

 XkbLayout "us"


 Some X Windows 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  /.Xmodmap".
 Alternatively, you can have 60 .Xmodmap files like .Xmo1, .Xmo2,
 .Xmo3, .Xmo4, etc., and you may force the system to read them (xmodmap
  /.Xmo1). The dot means it is a hidden file and it is not necessary.
 You may also have xmo1, xmo2, or xmo3 Xmodmap files.


 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.


 -------------------------------cut_here-----------------------------------

 #!/bin/sh

 # Put path to your StarOffice here

 STAR_OFFICE_ROOT=/mnt/StarOffice5.2

 FONTS_DIR=/usr/X11R6/lib/X11/fonts/ISO8859-2/Type1

 #
 -----------------------------------------------------------------------

 # Don't edit the skript here

 #
 -----------------------------------------------------------------------

 XP3_DIR=$STAR_OFFICE_ROOT/share/xp3

 if [ -e $XP3_DIR/psstd.fonts.il2 ]; then

 echo "Changes were already done!"

 echo "If there's a problem, delete the file"

 echo "  $XP3_DIR/psstd.fonts.il2"

 exit 1

 fi

 if [ -e $FONTS_DIR/afm ]; then

 AFM_DIR=$FONTS_DIR/afm

 else

 AFM_DIR=$FONTS_DIR

 fi

 # Link AFM files.

 ln -sf $AFM_DIR/*.[aA][fF][mM] $XP3_DIR/fontmetrics/afm

 # Link PFB files.

 ln -sf $FONTS_DIR/*.[pP][fF][bB] $XP3_DIR/pssoftfonts

 grep "\.pf" $FONTS_DIR/fonts.dir \

 | sed -e 's/\.pfb /, /g' -e 's/-0-0-0-0-/-%d-%d-%d-%d-/g' \

 > $XP3_DIR/psstd.fonts.il2

 cat $XP3_DIR/psstd.fonts.il2 >> $XP3_DIR/psstd.fonts

 ------------------------------------cut_here-----------------------------

 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.


 StarOffice 5.2 can be thus used by professional translators who may
 translate in any langauges and give outputs in MS Word97 or rtf
 format.



 2.4.  Xmodmap theory and standard Xmodmap solution

 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.


 This explanation can be used for all keycodes. For example, the line:

 keycode 0x11 = 8 asterisk aacute 8

 (note: keycode 0x11 is derived from the "xkeycaps" utility; you can
 also use the X Windows "xev" utility to explore keyboard puzzles.)


 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_NEXT_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:

 keycode 0x11 = 8 asterisk semicolon colon

 will give you "semicolon" and "colon" in your 0x11 keycode after
 pressing  the Scroll Lock.


 The ISO_NEXT_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_NEXT_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:

 keycode 0x4e = ISO_Next_Group

 add mod5 = ISO_Next_Group,

 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".


 2.5.  _______________________cut_here_________________________ Experi�
 mental .Xmodmap sample file for the Slovak language typewriter layout

 keycode 0x09 = Escape

 keycode 0x43 = F1 F11 F1 Multi_key

 keycode 0x44 = F2 F12 F2 F12

 keycode 0x45 = F3 F13 F3 F13 idiaeresis

 keycode 0x46 = F4 F14 F4 F14 mu yen

 keycode 0x47 = F5 F15 F5 F15 guillemotright guillemotleft

 keycode 0x48 = F6 F16 F6 F16 ograve

 keycode 0x49 = F7 F17 F7 dead_abovedot oacute

 keycode 0x4A = F8 F18 F8 dead_breve acute

 keycode 0x4B = F9 F19 F9 dead_cedilla ugrave

 keycode 0x4C = F10 F20 F10 dead_ogonek

 keycode 0x5F = F11 F21 dead_acute dead_caron

 keycode 0x60 = F12 F22 dead_abovering dead_diaeresis

 keycode 0x6F = Print Execute dead_iota


 keycode 0x4E = ISO_Next_Group

 keycode 0x6E = Pause

 keycode 0x31 = grave asciitilde semicolon dead_diaeresis

 keycode 0x0A = 1 exclam plus 1

 keycode 0x0B = 2 at mu 2

 keycode 0x0C = 3 numbersign onesuperior 3

 keycode 0x0D = 4 dollar egrave 4

 keycode 0x0E = 5 percent 0x0bb 5

 keycode 0x0F = 6 asciicircum threequarters 6

 keycode 0x10 = 7 ampersand yacute 7

 keycode 0x11 = 8 asterisk aacute 8

 keycode 0x12 = 9 parenleft iacute 9

 keycode 0x13 = 0 parenright eacute 0

 keycode 0x14 = minus underscore equal percent

 keycode 0x15 = equal plus dead_acute dead_caron

 keycode 0x33 = backslash bar ograve parenright

 keycode 0x16 = BackSpace

 keycode 0x6A = Insert

 keycode 0x61 = Home

 keycode 0x63 = Prior

 keycode 0x4D = Num_Lock Pointer_EnableKeys

 keycode 0x70 = KP_Divide slash

 keycode 0x3F = KP_Multiply asterisk

 keycode 0x52 = KP_Subtract minus

 keycode 0x17 = Tab ISO_Left_Tab

 keycode 0x18 = q Q

 keycode 0x19 = w W

 keycode 0x1A = e E

 keycode 0x1B = r R

 keycode 0x1C = t T

 keycode 0x1D = y Y z Z

 keycode 0x1E = u U

 keycode 0x1F = i I

 keycode 0x20 = o O

 keycode 0x21 = p P

 keycode 0x22 = bracketleft braceleft acute slash

 keycode 0x23 = bracketright braceright diaeresis parenleft

 keycode 0x24 = Return

 keycode 0x6B = Delete

 keycode 0x67 = End

 keycode 0x69 = Next

 keycode 0x4F = KP_Home 7 KP_Home

 keycode 0x50 = KP_Up 8

 keycode 0x51 = KP_Prior 9

 keycode 0x56 = KP_Add plus

 keycode 0x42 = Caps_Lock

 keycode 0x26 = a A

 keycode 0x27 = s S

 keycode 0x28 = d D

 keycode 0x29 = f F

 keycode 0x2A = g G

 keycode 0x2B = h H

 keycode 0x2C = j J

 keycode 0x2D = k K

 keycode 0x2E = l L

 keycode 0x2F = semicolon colon ocircumflex quotedbl

 keycode 0x30 = apostrophe quotedbl section exclam

 keycode 0x53 = KP_Left 4

 keycode 0x54 = KP_Begin 5

 keycode 0x55 = KP_Right 6

 keycode 0x32 = Shift_L ISO_Next_Group

 keycode 0x34 = z Z y Y

 keycode 0x35 = x X

 keycode 0x36 = c C

 keycode 0x37 = v V

 keycode 0x38 = b B

 keycode 0x39 = n N

 keycode 0x3A = m M

 keycode 0x3B = comma less comma question

 keycode 0x3C = period greater period colon

 keycode 0x3D = slash question minus underscore

 keycode 0x3E = Shift_R

 keycode 0x62 = Up

 keycode 0x57 = KP_End 1

 keycode 0x58 = KP_Down 2

 keycode 0x59 = KP_Next 3

 keycode 0x6C = KP_Enter Return

 keycode 0x25 = Control_L ISO_Next_Group

 !keycode 0x40 = Alt_L Meta_L

 keycode 0x40 = Meta_L Alt_L

 keycode 0x41 = space

 keycode 0x71 = Alt_R Meta_R

 keycode 0x6D = Control_R

 keycode 0x64 = Left

 keycode 0x68 = Down

 keycode 0x66 = Right

 keycode 0x5A = KP_Insert 0

 keycode 0x5B = KP_Delete period

 !keysym Alt_L = Meta_L

 !keysym F12 = Multi_key

 clear Shift

 !clear Lock

 clear Control

 clear Mod1

 clear Mod2

 clear Mod3

 clear Mod4

 clear Mod5

 add Shift = Shift_L Shift_R

 add Control = Control_L Control_R

 !add Mod1 = Alt_L Alt_R

 add Mod1 = Meta_L Alt_R

 add Mod2 = Num_Lock

 add Mod5 = ISO_Next_Group

 !add Mod1 =

 !add Mod2 = Alt_R Alt_L Mode_switch

 keycode 0x73 = ISO_Next_Group

 keycode 0x74 = dead_acute dead_diaeresis

 keycode 0x75 = dead_caron dead_abovering



 _____________________________cut_here_____________________________


 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. It is
 defined in these Xmomdap files already.



 2.6.  Character sets

 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 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 sustem, see the file
 /usr/X11R6/include/X11/keysymdef.h, or try to look in
 /lib/perl5/site_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.



 2.7.  ISO-8859-2 (ISO Latin2) character set

 Xmodmap entity                  Visually

 ----------------------------------------------------------------------

 space

 exclam                          !

 quotedbl                        "

 numbersign                      #

 dollar                          $

 percent

 ampersand                       &

 quoteright                      '

 parenleft                       (

 parenright                      )

 asterisk                        *

 plus                            +

 comma                           ,

 hyphen                          -

 period                          .

 slash                           /

 zero                            0

 one                             1

 two                             2

 three                           3

 four                            4

 five                            5

 six                             6

 seven                           7

 eight                           8

 nine                            9

 colon                           :

 semicolon                       ;

 less            <       <

 equal                           =

 greater         >       >

 question                        ?

 at                              @

 A                               A

 B                               B

 C                               C

 D                               D

 E                               E

 F                               F

 G                               G

 H                               H

 I                               I

 J                               J

 K                               K

 L                               L

 M                               M

 N                               N

 O                               O

 P                               P

 Q                               Q

 R                               R

 S                               S

 T                               T

 U                               U

 V                               V

 W                               W

 X                               X

 Y                               Y

 Z                               Z

 bracketleft                     [

 backslash                       \

 bracketright                    ]

 asciicircum                     ^

 underscore                      _

 quoteleft                       `

 a                               a

 b                               b

 c                               c

 d                               d

 e                               e

 f                               f

 g                               g

 h                               h

 i                               i

 j                               j

 k                               k

 l                               l

 m                               m

 n                               n

 o                               o

 p                               p

 q                               q

 r                               r

 s                               s

 t                               t

 u                               u

 v                               v

 w                               w

 x                               x

 y                               y

 z                               z

 braceleft                       {

 bar                             |

 braceright                      }

 tilde

 space

 Aogonek

 breve

 Lslash

 currency

 Lcaron

 Sacute

 section

 dieresis

 Scaron

 Scedilla

 Tcaron

 Zacute

 hyphen

 Zcaron

 Zdotaccent

 degree

 aogonek

 ogonek

 lslash

 acute

 lcaron

 sacute

 caron

 cedilla

 scaron

 scedilla

 tcaron

 zacute

 hungarumlaut

 zcaron

 zdotaccent

 Racute

 Aacute

 Acircumflex

 Abreve

 Adieresis

 Lacute

 Cacute

 Ccedilla

 Ccaron

 Eacute

 Eogonek

 Edieresis

 Ecaron

 Iacute

 Icircumflex

 Dcaron

 Eth

 Nacute

 Ncaron

 Oacute

 Ocircumflex

 Ohungarumlaut

 Odieresis

 multiply

 Rcaron

 Uring

 Uacute

 hungarumlaut

 Udieresis

 Yacute

 Tcedilla

 germandbls

 racute

 aacute

 acircumflex

 abreve

 adieresis

 lacute

 cacute

 ccedilla

 ccaron

 eacute

 eogonek

 edieresis

 ecaron

 iacute

 icircumflex

 dcaron

 dbar

 nacute

 ncaron

 oacute

 ocircumflex

 ohungarumlaut

 odieresis

 divide

 rcaron

 uring

 uacute

 uhungarumlaut

 udieresis

 yacute

 tcedilla

 dotaccent


 ----------------------------------------------------------------------

 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_profile the "export LANG=language" and "export
 LC_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:

 setxkbmap -model pc102 -symbols 'czsk(us_cz_qwertz)' setxkbmap cs
 -option grp:shift_toggle

 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").


 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_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.


 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 Windows 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.

 ISO8859-1 entity will give you the:     ISO8859-2 entity

 in our nonstandard or experimental Xmodmap keycode definition

 egrave                                  ccaron

 ugrave                                  uring

 agrave                                  racute

 ecircumflex                             "c" with something at the
 bottom of it

 ucircumflex Lslash                                  "Pound" in Xmodmap
 gives you Lslash.

 Lcaron                                  Writing "yen" will give us
 Lcaron

 Scaron                                  copyright (will give us
 Scaron)

 Tcaron                                  guillemotleft (will give us
 Tcaron)

 Zcaron                                  registered

 lcaron                                  mu

 scaron                                  onesuperior

 tcaron                                  guillemotright

 zcaron                                  threequarters

 Cacute                                  AE

 Eogonek                                 find out yourself


 Edieresis                               Edieresis

 ecaron                                  igrave

 onequarter                              zacute

 questiondown                            z with a ring above it

 Dcaron                                  find out yourself

 Ooblique                                Rcaron

 thorn                                   t with something at the bottom
 of it

 Sterling                                Lstroke

 yen                                     Lcaron

 copyright                               Scaron

 brokenbar                               Sacute

 macron                                  Z with something above it

 paragraph                               sacute

 periodcentered                          caron

 masculine                               s with something at the bottom
 of it

 onequarter                              zacute

 ecircumflex                             d with a line above it

 ETH                                     Dstroke

 Ntilde                                  Nacute

 Otilde                                  O with two dots above it

 registered                              Zcaron

 Nacute                                  Ograve

 nacute                                  ograve

 Ocircumflex                             Ocircumflex

 ccaron                                  egrave

 nacute                                  ntilde
 ------------------------------------------------------------------------


 sect1>ISO* specifications



 2.8.  The standard ISO8859-2 definitions in the Xmodmap file

 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 have a LC_LANG=language and
 LC_ALL=language statements in your bash_profile.  Just copy the
 folwing text from keycode 0x31 to 0x33 to the above-listed Xmodmap
 file (delete the experimental definitions from keycode 0x31 to 0x33).


 keycode 0x31 =  grave           asciitilde      semicolon
 dead_diaeresis

 keycode 0x0A =  1               exclam          plus            1

 keycode 0x0B =  2               at              lcaron          2

 keycode 0x0C =  3               numbersign      scaron          3

 keycode 0x0D =  4               dollar          ccaron          4

 keycode 0x0E =  5               percent         tcaron          5

 keycode 0x0F =  6               asciicircum     scaron          6

 keycode 0x10 =  7               ampersand       yacute          7

 keycode 0x11 =  8               asterisk        aacute          8

 keycode 0x12 =  9               parenleft       iacute          9

 keycode 0x13 =  0               parenright      eacute          0

 keycode 0x14 =  minus           underscore      equal
 percent

 keycode 0x15 =  equal           plus            dead_acute
 dead_caron

 keycode 0x33 =  backslash       bar             ograve
 parenright



 3.  How this Xmodmap solution works on various systems



 3.1.  SuSE 6.4 and 7.0

 3.1.1.  to SuSE 6.4 SuSE 7.0 with XFree86 version 3.3.6 and KDE 2.0
 (this also applies


 3.1.2.  No LANG=language and LC_ALL=language statements are necessary
 in you bash_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. There's also some bug with fonts or something - KDE 2.0 does not
 properly handle ISO8859-2 fonts together with Xmodmap. Old kedit,
 newest GNOME's gedit and StarOffice work well (after applying the
 above script for StarOffice).  KDE 2.0

 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.  If you put
 the FontPath for ISO8859-2 fonts to the /etc/X11/Xf86Config file,
 StarOffice may not see these fonts properly. While working with
 StarOffice, you must NOT use the fonts from the StarOffice itself, but
 the ones from the ../ISO8859-2 directory.


 The following is the FontPath section for ISO8859-2 fonts from my SuSE
 7.0 /etc/XF86Config file:

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

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

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


 3.2.  SuSE 7.0 with Xfree86 version 3.3.6 and KDE 1.x

 Same as with KDE 2.0.



 3.3.  Mandrake Linux 7.2


 3.3.1.  Mandrake Linux 7.2 - as it should be (KDE 2.0 without Xmodmap)

 Yes, as it should be - I used the "kcmshell
 Personalization/kcmlayout", command, which is in the menu in
 Configuration > KDE > Personalization > keyboard layout and after just
 putting the LC_ALL=language and LANG=language statements, StarOffice
 worked immediately (with ISO8859-2 fonts in 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. Here
 only the LANG=language and LC_ALL=langauge statements in the
 bash_profile were sufficient (as well as 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.

 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
 icon).  You can edit those maps and modify the for your choice. After
 changing some Czech definitions to Slovak StarOffice displayed them
 well.

 sect2>The "cs" symbol file modified for Slovak

 You can modify this file as you like, but rather use the original
 files from ../xkb/symbols directory. After selecting the keyboard in
 KDE or XFree86 for Czechoslovakia, you will see on screen the letters
 you chose. The following map uses English and Slovak definitions. This
 is an alternative to Xmodmap (changing "percent" to "zcaron" will give
 you "zcaron", changing "exclam" to "plus" will give you "plus" where
 "exlam" was initially.

 // $XConsortium: cs /main/3 1996/08/31 12:19:14 kaleb $

 partial default alphanumeric_keys

 xkb_symbols "basic" {

 // Describes the differences between a very simple en_US


 // keyboard and a very simple Czech(Czechoslovakia) keybaord

 name[Group1]= "Czech";

 key  {        [  dead_diaeresis, dead_abovering       ],

 [           grave,     asciitilde       ]       };

 key  {        [               q,              Q       ],

 [               q,              Q       ]       };

 key  {        [            plus,              1       ],

 [               1,         exclam       ]       };

 key  {        [               y,              Y       ],

 [               z,              Z       ]       };

 key  {        [               s,              S       ],

 [               s,              S       ]       };

 key  {        [               a,               A       ],

 [               a,              A       ]       };

 key  {        [               w,              W       ],

 [               w,              W       ]       };

 key  {        [          lcaron,              2       ],

 [               2,             at       ]       };

 key  {        [               c,              C       ],

 [               c,              C       ]       };

 key  {        [               x,              X       ],

 [               x,              X       ]       };

 key  {        [               d,              D       ],

 [               d,              D       ]       };

 key  {        [          ccaron,              4       ],

 [               4,         dollar       ]       };

 key  {        [          scaron,              3       ],

 [               3,     numbersign       ]       };

 key  {        [               f,              F       ],

 [               f,              F       ]       };

 key  {        [               t,              T       ],

 [               t,              T       ]       };

 key  {        [               r,              R       ],

 [               r,              R       ]       };

 key  {        [          tcaron,              5       ],

 [               5,        percent       ]       };

 key  {        [               h,              H       ],

 [               h,              H       ]       };

 key  {        [               g,              G       ],

 [               g,              G       ]       };

 key  {        [               z,              Z       ],

 [               y,              Y       ]       };

 key  {        [          zcaron,              6       ],

 [               6,    asciicircum       ]       };

 key  {        [               m,              M       ],

 [               m,              M       ]       };

 key  {        [               u,              U       ],

 [               u,              U       ]       };

 key  {        [          yacute,              7       ],

 [               7,      ampersand       ]       };

 key  {        [          aacute,              8       ],

 [               8,       asterisk       ]       };

 key  {        [           comma,       question       ],

 [           comma,           less       ]       };

 key  {        [               k,              K       ],

 [               k,              K       ]       };

 key  {        [               i,              I       ],

 [               i,              I       ]       };

 key  {        [               o,              O       ],

 [               o,              O       ]       };

 key  {        [          eacute,              0       ],

 [               0,     parenright       ]       };

 key  {        [          iacute,              9       ],

 [               9,      parenleft       ]       };

 key  {        [          period,          colon       ],

 [          period,        greater       ]       };

 key  {        [           minus,     underscore       ],

 [           slash,       question       ]       };

 key  {        [          uacute,       quotedbl       ],

 [       semicolon,          colon       ]       };

 key  {        [               p,              P       ],

 [               p,              P       ]       };

 key  {        [           equal,        percent       ],

 [           minus,     underscore       ]       };

 key  {        [         section,         exclam       ],

 [      apostrophe,       quotedbl       ]       };

 key  {        [          uacute,          slash       ],

 [     bracketleft,      braceleft       ]       };

 key  {        [      dead_acute,     dead_caron       ],

 [           equal,           plus       ]       };


 key  {        [          ncaron,     parenright       ],

 [          ncaron,            bar       ]       };

 key  {        [            less,        greater       ],

 [       backslash,      brokenbar       ]       };

 key  {        [      adiaeresis,      parenleft       ],

 [    bracketright,     braceright       ]       };

 key  {        [       Scroll_Lock                     ]       };


 // End alphanumeric section

 // begin modifier mappings

 modifier_map Shift  { Shift_L };

 modifier_map Lock   { Caps_Lock };

 modifier_map Control{ Control_L };

 modifier_map Mod3   { Mode_switch };

 };



 3.3.2.  Mandrake Linux 7.2 with XFree86 version 3.3.6

 Apply the standard .Xmodmap keycodes (scaron, lcaron, not
 "threequarters" or "mu", etc.) and issue the command: "xmodmap
  /.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).


 The FontPath statement in /etc/X11/XF86Config and /etc/X11/XF86Config
 does not have to be changed:

 FontPath "unix/:1"

 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.


 3.4.  RedHat 5.1, 5.2, 6.0, 6.1 and 6.2 (XFree86 3.3.6 and older)

 No LANG=language and LC_ALL=language statements are necessary in you
 bash_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 is the
 same as in SuSE 7.0 above.



 3.5.  FreeBSD 3.1 and 3.2

 Same as with RedHat 5.1, 5.2, 6.0, 6.1, 6.2


 3.6.  FreeBSD 4.1

 No LANG=language and LC_ALL=language statements are necessary in you
 bash_profile. Here this depends on XFree86. FreeBSD 4.1 handles better
 the LANG and LC_ALL statements (with XKB). Because the FreeBSD guys
 are too conservative about the 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.


 3.7.  Corel Linux 1.0 and 1.1

 Same as with FreeBSD.



 3.8.  ISO* specifications


 -------------------------------------------------------------------
 ISO8859-0 old, replaced by ISO 8859-14 and ISO 8859-15.

 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.

 ISO8859-2 Eastern Europe: Czech, Slovak, English, German, Hungarian,
 Polish, Romanian, Serbo-Croatian, Slovak, Slovene.

 ISO8859-3 English, Esperanto, Galician, Maltese and Turkish.


 ISO8859-4 English, Baltic languages - Estonian, Latvian, Lithuanian,
 and Scandinavian languages - Danish, Faeroese, Icelandic, Lappish,
 Norwegian, and Swedish.

 ISO8859-5 Latin/Cyrillic alphabet: Bulgarian, Byelorussian, English,
 Macedonian, Russian, Serbian, Ukrainian.

 ISO8859-6 Latin/Arabic alphabet: English, Arabic.

 ISO8859-7 Latin/Greek alphabet: English, Greek.

 ISO8859-8 Latin/Hebrew alphabet: English, Hebrew.

 ISO8859-9 Latin alphabet: Danish, Dutch, English, Finnish, French,
 German, Irish, Italian, Norwegian, Portuguese, Spanish, Swedish,
 Turkish, formed by extending ISO8859-1.

 ISO8859-10 Latin alphabet: Modification of ISO8859-4

 ISO8859-11 Latin/Thai alphabet.

 ISO8859-12 Reserved.

 ISO8859-13 Baltic.

 ISO8859-14 Celtic

 ISO8859-15 Similar to Latin-1

 ISO8859-16 Albanian, Croatian, English, Finnish, French, German,
 Hungarian, Irish Gaelic, Italian, Latin, Polish, Romanian, Slovenian,
 Lithuanian, and Scandinavian languages (Danish, Faeroese, Icelandic.



 4.  Some national Xmodmap files

 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.



 4.1.  German



 clear Mod1

 clear Mod2

 keycode   9 = Escape Escape

 keycode  10 = 1 exclam

 keycode  11 = 2 quotedbl twosuperior

 keycode  12 = 3 section threesuperior

 keycode  13 = 4 dollar dollar


 keycode  14 = 5 percent

 keycode  15 = 6 ampersand

 keycode  16 = 7 slash braceleft

 keycode  17 = 8 parenleft bracketleft

 keycode  18 = 9 parenright bracketright

 keycode  19 = 0 equal braceright

 keycode  20 = ssharp question backslash

 keycode  21 = dead_acute dead_grave

 keycode  22 = BackSpace Delete

 keycode  23 = Tab Tab

 keycode  24 = q Q at

 keycode  25 = w

 keycode  26 = e

 keycode  27 = r

 keycode  28 = t

 keycode  29 = z

 keycode  30 = u

 keycode  31 = i

 keycode  32 = o

 keycode  33 = p

 keycode  34 = udiaeresis Udiaeresis

 keycode  35 = plus asterisk dead_tilde

 keycode  36 = Return

 keycode  37 = Control_L

 keycode  38 = a

 keycode  39 = s

 keycode  40 = d

 keycode  41 = f

 keycode  42 = g

 keycode  43 = h

 keycode  44 = j

 keycode  45 = k

 keycode  46 = l

 keycode  47 = odiaeresis Odiaeresis

 keycode  48 = adiaeresis Adiaeresis

 keycode  49 = dead_circumflex degree

 keycode  50 = Shift_L

 keycode  51 = numbersign apostrophe

 keycode  52 = y

 keycode  53 = x

 keycode  54 = c

 keycode  55 = v

 keycode  56 = b

 keycode  57 = n

 keycode  58 = m

 keycode  59 = comma semicolon

 keycode  60 = period colon Multi_key

 keycode  61 = minus underscore

 keycode  62 = Shift_R

 keycode  63 = KP_Multiply

 keycode  64 = Alt_L Meta_L

 keycode  65 = space space

 keycode  66 = Caps_Lock

 keycode  67 = F1 F11

 keycode  68 = F2 F12

 keycode  69 = F3 F13

 keycode  70 = F4 F14

 keycode  71 = F5 F15

 keycode  72 = F6 F16

 keycode  73 = F7 F17

 keycode  74 = F8 F18

 keycode  75 = F9 F19

 keycode  76 = F10 F20

 keycode  77 = Num_Lock

 keycode  78 = Scroll_Lock

 keycode  79 = KP_7

 keycode  80 = KP_8

 keycode  81 = KP_9

 keycode  82 = KP_Subtract

 keycode  83 = KP_4

 keycode  84 = KP_5

 keycode  85 = KP_6

 keycode  86 = KP_Add

 keycode  87 = KP_1

 keycode  88 = KP_2

 keycode  89 = KP_3

 keycode  90 = KP_0

 keycode  91 = KP_Decimal

 keycode  94 = less greater bar

 keycode  95 = F11 F11

 keycode  96 = F12 F12

 keycode 108 = KP_Enter

 keycode 109 = Control_R

 keycode 112 = KP_Divide

 keycode 113 = Mode_switch

 keycode 114 = Break

 keycode 110 = Find

 keycode  98 = Up

 keycode  99 = Prior

 keycode 100 = Left

 keycode 102 = Right

 keycode 115 = Select

 keycode 104 = Down

 keycode 105 = Next

 keycode 106 = Insert

 ! right windows-logo key

 ! in "windows" keyboards the postion of the key is annoying, is where
 AltGr

 ! usually resides, so go definie it as AltGr


 keycode 116 = Mode_switch

 ! right windows-menu key

 keycode 117 = Multi_key

 add Mod1 = Alt_L

 add Mod2 = Mode_switch



 4.2.  Hungarian



 clear Mod1

 clear Mod2

 !charset "iso-8859-2"

 keycode   9 = Escape

 keycode  10 = 1 apostrophe asciitilde

 keycode  11 = 2 quotedbl dead_caron

 keycode  12 = 3 plus dead_circumflex

 keycode  13 = 4 exclam dead_breve

 keycode  14 = 5 percent degree

 keycode  15 = 6 slash dead_ogonek

 keycode  16 = 7 equal dead_grave

 keycode  17 = 8 parenleft dead_abovedot

 keycode  18 = 9 parenright dead_acute

 keycode  19 = odiaeresis Odiaeresis dead_doubleacute

 keycode  20 = udiaeresis Udiaeresis dead_diaeresis

 keycode  21 = oacute Oacute dead_cedilla

 keycode  22 = BackSpace Delete

 keycode  23 = Tab Tab

 keycode  24 = q Q backslash

 keycode  25 = w W bar

 keycode  26 = e E currency

 keycode  27 = r

 keycode  28 = t

 keycode  29 = z

 keycode  30 = u

 keycode  31 = i I iacute Iacute

 keycode  32 = o

 keycode  33 = p

 keycode  34 = odoubleacute Odoubleacute division

 keycode  35 = uacute Uacute

 keycode  36 = Return

 keycode  37 = Control_L

 keycode  38 = a

 keycode  39 = s S dstroke

 keycode  40 = d D Dstroke

 keycode  41 = f F bracketleft

 keycode  42 = g G bracketright

 keycode  43 = h

 keycode  44 = j J Iacute iacute

 keycode  45 = k K lstroke Lstroke

 keycode  46 = l L Lstroke lstroke

 keycode  47 = eacute Eacute dollar

 keycode  48 = aacute Aacute ssharp

 keycode  49 = 0 section

 keycode  50 = Shift_L

 keycode  51 = udoubleacute Udoubleacute currency

 keycode  52 = y Y greater

 keycode  53 = x X numbersign

 keycode  54 = c C ampersand

 keycode  55 = v V at

 keycode  56 = b B braceleft

 keycode  57 = n N braceright

 keycode  58 = m

 keycode  59 = comma question semicolon

 keycode  60 = period colon Multi_key

 keycode  61 = minus underscore asterisk

 keycode  62 = Shift_R

 keycode  63 = KP_Multiply

 keycode  64 = Alt_L Meta_L

 keycode  65 = space space

 keycode  66 = Caps_Lock

 keycode  67 = F1 F11

 keycode  68 = F2 F12

 keycode  69 = F3 F13

 keycode  70 = F4 F14

 keycode  71 = F5 F15

 keycode  72 = F6 F16

 keycode  73 = F7 F17

 keycode  74 = F8 F18

 keycode  75 = F9 F19

 keycode  76 = F10 F20

 keycode  77 = Num_Lock

 keycode  78 = Scroll_Lock

 keycode  79 = KP_7

 keycode  80 = KP_8

 keycode  81 = KP_9

 keycode  82 = KP_Subtract

 keycode  83 = KP_4

 keycode  84 = KP_5

 keycode  85 = KP_6

 keycode  86 = KP_Add

 keycode  87 = KP_1

 keycode  88 = KP_2

 keycode  89 = KP_3

 keycode  90 = KP_0

 keycode  91 = KP_Decimal

 keycode  94 = iacute Iacute less

 keycode  95 = F11 F11

 keycode  96 = F12 F12

 keycode 108 = KP_Enter

 keycode 109 = Control_R

 keycode 112 = KP_Divide

 keycode 113 = Mode_switch

 keycode 114 = Break

 keycode 110 = Find

 keycode  98 = Up

 keycode  99 = Prior

 keycode 100 = Left

 keycode 102 = Right

 keycode 115 = Select

 keycode 104 = Down

 keycode 105 = Next

 keycode 106 = Insert

 keycode 107 = Delete

 !  as dead_ogonek, dead_caron, dead_breve and dead_doubleacute doesn't
 exist

 !  (yet), I put also compose lines for use with respectively
 dead_cedilla,

 !  dead_circumflex, dead_tilde and dead_tilde

 add Mod1 = Alt_L

 add Mod2 = Mode_switch



 4.3.  Czech



 ! Converted keytable file to xmodmap file

 clear Mod1

 clear Mod2

 keycode   9 = Escape Escape

 keycode  10 = plus 1 asciitilde

 keycode  11 = ecaron 2 dead_caron

 keycode  12 = scaron 3 asciicircum

 keycode  13 = ccaron 4 dead_breve

 keycode  14 = rcaron 5 degree

 keycode  15 = zcaron 6 dead_ogonek

 keycode  16 = yacute 7 dead_grave

 keycode  17 = aacute 8 dead_abovedot

 keycode  18 = iacute 9 dead_acute

 keycode  19 = eacute 0 dead_doubleacute

 keycode  20 = equal percent dead_diaeresis

 keycode  21 = dead_acute dead_caron dead_cedilla

 keycode  22 = BackSpace Delete

 keycode  23 = Tab Tab

 keycode  24 = q Q backslash

 keycode  25 = w W bar

 keycode  26 = e E currency

 keycode  27 = r

 keycode  28 = t

 keycode  29 = z

 keycode  30 = u

 keycode  31 = i

 keycode  32 = o

 keycode  33 = p

 keycode  34 = uacute slash division

 keycode  35 = parenright parenleft

 keycode  36 = Return

 keycode  37 = Control_L

 keycode  38 = a

 keycode  39 = s S dstroke Dstroke

 keycode  40 = d D Dstroke dstroke

 keycode  41 = f F bracketleft

 keycode  42 = g G bracketright

 keycode  43 = h

 keycode  44 = j

 keycode  45 = k K lstroke Lstroke

 keycode  46 = l L Lstroke lstroke

 keycode  47 = uring quotedbl dollar

 keycode  48 = section exclam ssharp

 keycode  49 = semicolon degree

 keycode  50 = Shift_L

 keycode  51 = dead_diaeresis dead_acute currency

 keycode  52 = y Y greater

 keycode  53 = x X numbersign

 keycode  54 = c

 keycode  55 = v V at

 keycode  56 = b B braceleft

 keycode  57 = n N braceright

 keycode  58 = m

 keycode  59 = comma question

 keycode  60 = period colon Multi_key

 keycode  61 = minus underscore

 keycode  62 = Shift_R

 keycode  63 = KP_Multiply

 keycode  64 = Alt_L Meta_L

 keycode  65 = space space

 keycode  66 = Caps_Lock

 keycode  67 = F1 F11

 keycode  68 = F2 F12

 keycode  69 = F3 F13

 keycode  70 = F4 F14

 keycode  71 = F5 F15

 keycode  72 = F6 F16

 keycode  73 = F7 F17

 keycode  74 = F8 F18

 keycode  75 = F9 F19

 keycode  76 = F10 F20

 keycode  77 = Num_Lock

 keycode  78 = Scroll_Lock

 keycode  79 = KP_7

 keycode  80 = KP_8

 keycode  81 = KP_9

 keycode  82 = KP_Subtract

 keycode  83 = KP_4

 keycode  84 = KP_5

 keycode  85 = KP_6

 keycode  86 = KP_Add

 keycode  87 = KP_1

 keycode  88 = KP_2

 keycode  89 = KP_3

 keycode  90 = KP_0

 keycode  94 = ampersand asterisk less

 keycode  95 = F11 F11

 keycode  96 = F12 F12

 keycode 108 = KP_Enter

 keycode 109 = Control_R

 keycode 112 = KP_Divide

 keycode 113 = Mode_switch

 keycode 114 = Break

 keycode 110 = Find

 keycode  98 = Up

 keycode  99 = Prior

 keycode 100 = Left

 keycode 102 = Right

 keycode 115 = Select

 keycode 104 = Down

 keycode 105 = Next

 keycode 106 = Insert

 ! right windows-logo key

 ! in "windows" keyboards the postion of the key is annoying, is where
 AltGr

 ! usually resides, so go definie it as AltGr

 keycode 116 = Mode_switch

 ! right windows-menu key


 keycode 117 = Multi_key

 add Mod1 = Alt_L

 add Mod2 = Mode_switch



 4.4.  Polish



 ! The "AltGr" (right Alt) key generates Mode_switch

 keycode 0x09 =  Escape

 keycode 0x43 =  F1

 keycode 0x44 =  F2

 keycode 0x45 =  F3

 keycode 0x46 =  F4

 keycode 0x47 =  F5

 keycode 0x48 =  F6

 keycode 0x49 =  F7

 keycode 0x4A =  F8

 keycode 0x4B =  F9

 keycode 0x4C =  F10

 keycode 0x5F =  F11

 keycode 0x60 =  F12

 keycode 0x6F =  Print

 keycode 0x4E =  Multi_key

 keycode 0x6E =  Pause

 keycode 0x31 =  grave           asciitilde

 keycode 0x0A =  1               exclam

 keycode 0x0B =  2               at

 keycode 0x0C =  3               numbersign

 keycode 0x0D =  4               dollar

 keycode 0x0E =  5               percent

 keycode 0x0F =  6               asciicircum

 keycode 0x10 =  7               ampersand       section

 keycode 0x11 =  8               asterisk

 keycode 0x12 =  9               parenleft

 keycode 0x13 =  0               parenright

 keycode 0x14 =  minus           underscore

 keycode 0x15 =  equal           plus

 keycode 0x33 =  backslash       bar

 keycode 0x16 =  BackSpace

 keycode 0x6A =  Insert

 keycode 0x61 =  Home

 keycode 0x63 =  Prior

 keycode 0x4D =  Num_Lock

 keycode 0x70 =  KP_Divide

 keycode 0x3F =  KP_Multiply

 keycode 0x52 =  KP_Subtract

 keycode 0x17 =  Tab

 keycode 0x18 =  Q

 keycode 0x19 =  W

 keycode 0x1A =  e               E               eogonek
 Eogonek

 keycode 0x1B =  R

 keycode 0x1C =  T

 keycode 0x1D =  Y

 keycode 0x1E =  U

 keycode 0x1F =  I

 keycode 0x20 =  o               O               oacute          Oacute

 keycode 0x21 =  P

 keycode 0x22 =  bracketleft     braceleft

 keycode 0x23 =  bracketright    braceright

 keycode 0x24 =  Return

 keycode 0x6B =  Delete

 keycode 0x67 =  End

 keycode 0x69 =  Next

 keycode 0x4F =  KP_7

 keycode 0x50 =  KP_8


 keycode 0x51 =  KP_9

 keycode 0x56 =  KP_Add

 keycode 0x42 =  Caps_Lock

 keycode 0x26 =  a               A               aogonek
 Aogonek

 keycode 0x27 =  s               S               sacute          Sacute

 keycode 0x28 =  D

 keycode 0x29 =  F

 keycode 0x2A =  G

 keycode 0x2B =  H

 keycode 0x2C =  J

 keycode 0x2D =  K

 keycode 0x2E =  l               L               lstroke
 Lstroke

 keycode 0x2F =  semicolon       colon

 keycode 0x30 =  apostrophe      quotedbl

 keycode 0x53 =  KP_4

 keycode 0x54 =  KP_5

 keycode 0x55 =  KP_6

 keycode 0x32 =  Shift_L

 keycode 0x34 =  z               Z               zabovedot
 Zabovedot

 keycode 0x35 =  x               X               zacute          Zacute

 keycode 0x36 =  c               C               cacute          Cacute

 keycode 0x37 =  V

 keycode 0x38 =  B

 keycode 0x39 =  n               N               nacute          Nacute

 keycode 0x3A =  M

 keycode 0x3B =  comma           less

 keycode 0x3C =  period          greater         Multi_key

 keycode 0x3D =  slash           question

 keycode 0x3E =  Shift_R

 keycode 0x62 =  Up

 keycode 0x57 =  KP_1


 keycode 0x58 =  KP_2

 keycode 0x59 =  KP_3

 keycode 0x6C =  KP_Enter

 keycode 0x25 =  Control_L

 keycode 0x40 =  Alt_L           Meta_L

 keycode 0x41 =  space

 keycode 0x71 =  Mode_switch

 keycode 0x6D =  Control_R

 keycode 0x64 =  Left

 keycode 0x68 =  Down

 keycode 0x66 =  Right

 keycode 0x5A =  KP_0

 keycode 0x5B =  KP_Decimal

 ! right windows-logo key

 ! in "windows" keyboards the postion of the key is annoying, is where
 AltGr

 ! usually resides, so go definie it as AltGr

 keycode 116 = Mode_switch

 ! right windows-menu key

 keycode 117 = Multi_key

 clear Shift

 clear Lock

 clear Control

 clear Mod1

 clear Mod2

 clear Mod3

 clear Mod4

 clear Mod5

 add    Shift   = Shift_L Shift_R

 add    Lock    = Caps_Lock

 add    Control = Control_L Control_R

 add    Mod1    = Alt_L

 !Mode_switch


 add    Mod2    = Mode_switch



 4.5.  French



 clear Mod1

 clear Mod2

 keycode   9 = Escape Escape

 keycode  10 = ampersand 1

 keycode  11 = eacute 2 dead_tilde

 keycode  12 = quotedbl 3 numbersign

 keycode  13 = apostrophe 4 braceleft

 keycode  14 = parenleft 5 bracketleft

 keycode  15 = minus 6 bar

 keycode  16 = egrave 7 dead_grave

 keycode  17 = underscore 8 backslash

 keycode  18 = ccedilla 9 asciicircum

 keycode  19 = agrave 0 at

 keycode  20 = parenright degree bracketright

 keycode  21 = equal plus braceright

 keycode  22 = BackSpace

 keycode  23 = Tab Tab

 keycode  24 = a

 keycode  25 = z

 keycode  26 = e E currency

 keycode  27 = r

 keycode  28 = t

 keycode  29 = y

 keycode  30 = u

 keycode  31 = i

 keycode  32 = o

 keycode  33 = p

 keycode  34 = dead_circumflex  dead_diaeresis

 keycode  35 = dollar sterling currency

 keycode  36 = Return

 keycode  37 = Control_L

 keycode  38 = q

 keycode  39 = s

 keycode  40 = d

 keycode  41 = f

 keycode  42 = g

 keycode  43 = h

 keycode  44 = j

 keycode  45 = k

 keycode  46 = l

 keycode  47 = m M

 keycode  48 = ugrave percent

 keycode  49 = twosuperior

 keycode  50 = Shift_L

 keycode  51 = asterisk mu

 keycode  52 = w

 keycode  53 = x

 keycode  54 = c

 keycode  55 = v

 keycode  56 = b

 keycode  57 = n

 keycode  58 = comma question dead_cedilla

 keycode  59 = semicolon period

 keycode  60 = colon slash Multi_key

 keycode  61 = exclam section

 keycode  62 = Shift_R

 keycode  63 = KP_Multiply

 keycode  64 = Alt_L Meta_L

 keycode  65 = space space

 keycode  66 = Caps_Lock

 keycode  67 = F1 F11

 keycode  68 = F2 F12

 keycode  69 = F3 F13

 keycode  70 = F4 F14

 keycode  71 = F5 F15

 keycode  72 = F6 F16

 keycode  73 = F7 F17

 keycode  74 = F8 F18

 keycode  75 = F9 F19

 keycode  76 = F10 F20

 keycode  77 = Num_Lock

 keycode  78 = Scroll_Lock

 keycode  79 = KP_7

 keycode  80 = KP_8

 keycode  81 = KP_9

 keycode  82 = KP_Subtract

 keycode  83 = KP_4

 keycode  84 = KP_5

 keycode  85 = KP_6

 keycode  86 = KP_Add

 keycode  87 = KP_1

 keycode  88 = KP_2

 keycode  89 = KP_3

 keycode  90 = KP_0

 keycode  92 = Sys_Req

 keycode  94 = less greater bar

 keycode  95 = F11 F11

 keycode  96 = F12 F12

 keycode 107 = Delete

 keycode 108 = KP_Enter

 keycode 109 = Control_R

 keycode 112 = KP_Divide

 keycode 113 = Mode_switch

 keycode 114 = Break

 keycode 110 = Find

 keycode  98 = Up

 keycode  99 = Prior

 keycode 100 = Left

 keycode 102 = Right

 keycode 104 = Down

 keycode 105 = Next

 keycode 106 = Insert

 ! right windows-logo key

 ! in "windows" keyboards the postion of the key is annoying, is where
 AltGr

 ! usually resides, so go definie it as AltGr

 keycode 116 = Mode_switch

 ! right windows-menu key

 keycode 117 = Multi_key

 add Mod1 = Alt_L

 add Mod2 = Mode_switch



 4.6.  Croatian/Slovenian



 clear Mod1

 clear Mod2

 keycode   9 = Escape

 keycode  10 = 1 exclam asciitilde

 keycode  11 = 2 quotedbl caron

 keycode  12 = 3 numbersign asciicircum

 keycode  13 = 4 dollar breve

 keycode  14 = 5 percent degree

 keycode  15 = 6 ampersand ogonek

 keycode  16 = 7 slash grave

 keycode  17 = 8 parenleft abovedot

 keycode  18 = 9 parenright acute


 keycode  19 = 0 equal doubleacute

 keycode  20 = apostrophe question diaeresis

 keycode  21 = plus asterisk cedilla

 keycode  22 = Delete Delete

 keycode  23 = Tab Tab

 keycode  24 = q Q backslash

 keycode  25 = w W bar

 keycode  26 = e

 keycode  27 = r

 keycode  28 = t

 keycode  29 = z

 keycode  30 = u

 keycode  31 = i

 keycode  32 = o

 keycode  33 = p

 keycode 34 = scaron Scaron division

 keycode 35 = dstroke Dstroke multiply

 keycode  36 = Return

 keycode  37 = Control_L

 keycode  38 = a

 keycode  39 = s

 keycode  40 = d

 keycode  41 = f F bracketleft

 keycode  42 = g G bracketright

 keycode  43 = h

 keycode  44 = j

 keycode 45 = k K lstroke

 keycode 46 = l L Lstroke

 keycode 47 = ccaron Ccaron

 keycode 48 = cacute Cacute ssharp

 keycode  49 = cedilla diaeresis

 keycode  50 = Shift_L

 keycode 51 = zcaron Zcaron currency

 keycode  52 = y

 keycode  53 = x

 keycode  54 = c

 keycode  55 = v V at

 keycode  56 = b B braceleft

 keycode  57 = n N braceright

 keycode  58 = m M section

 keycode  59 = comma semicolon

 keycode  60 = period colon

 keycode  61 = minus underscore

 keycode  62 = Shift_R

 keycode  63 = KP_Multiply

 keycode  64 = Alt_L Meta_L

 keycode  65 = space space

 keycode  66 = Caps_Lock

 keycode  67 = F1 F11

 keycode  68 = F2 F12

 keycode  69 = F3 F13

 keycode  70 = F4 F14

 keycode  71 = F5 F15

 keycode  72 = F6 F16

 keycode  73 = F7 F17

 keycode  74 = F8 F18

 keycode  75 = F9 F19

 keycode  76 = F10 F20

 keycode  77 = Num_Lock

 keycode  78 = Scroll_Lock

 keycode  79 = KP_7

 keycode  80 = KP_8

 keycode  81 = KP_9

 keycode  82 = KP_Subtract

 keycode  83 = KP_4

 keycode  84 = KP_5

 keycode  85 = KP_6

 keycode  86 = KP_Add

 keycode  87 = KP_1

 keycode  88 = KP_2

 keycode  89 = KP_3

 keycode  90 = KP_0

 keycode  91 = KP_Decimal

 keycode  92 = X386Sys_Req

 keycode  94 = less greater

 keycode  95 = F11 F1

 keycode  96 = F12 F12

 keycode 108 = KP_Enter

 keycode 109 = Control_R

 keycode 112 = KP_Divide

 keycode 113 = Mode_switch

 keycode 114 = Break

 keycode 110 = Find

 keycode  98 = Up

 keycode  99 = Prior

 keycode 100 = Left

 keycode 102 = Right

 keycode 104 = Down

 keycode 105 = Next

 keycode 106 = Insert

 add Mod1 = Alt_L

 add Mod2 = Mode_switch



 4.7.  Lithuanian keyboard (AZERTY layout)



 clear Mod1

 clear Mod2


 keycode   9 = Escape Escape

 keycode  10 = exclam 1

 keycode  11 = quotedbl 2 at

 keycode  12 = slash 3 numbersign

 keycode  13 = semicolon 4 dollar

 keycode  14 = colon 5 percent

 keycode  15 = comma 6 asciicircum

 keycode  16 = period 7 ampersand

 keycode  17 = question 8 asterisk

 keycode  18 = parenleft 9

 keycode  19 = parenright 0

 keycode  20 = underscore minus minus underscore

 keycode  21 = plus equal equal plus

 keycode  22 = BackSpace

 keycode  23 = Tab Tab

 keycode  24 = aogonek Aogonek q Q

 keycode  25 = zcaron Zcaron w W

 keycode  26 = e E currency

 keycode  27 = r

 keycode  28 = t

 keycode  29 = y

 keycode  30 = u

 keycode  31 = i

 keycode  32 = o

 keycode  33 = p

 keycode  34 = iogonek Iogonek bracketleft braceleft

 keycode  35 = leftdoublequotemark doublelowquotemark bracketright
 braceright

 keycode  36 = Return

 keycode  37 = Control_L

 keycode  38 = a

 keycode  39 = s

 keycode  40 = d


 keycode  41 = f

 keycode  42 = g

 keycode  43 = h

 keycode  44 = j

 keycode  45 = k

 keycode  46 = l

 keycode  47 = uogonek Uogonek semicolon colon

 keycode  48 = eabovedot Eabovedot apostrophe quotedbl

 keycode  49 = grave asciitilde

 keycode  50 = Shift_L

 keycode  51 = backslash bar

 keycode  52 = z

 keycode  53 = umacron Umacron x X

 keycode  54 = c

 keycode  55 = v

 keycode  56 = b

 keycode  57 = n

 keycode  58 = m

 keycode  59 = ccaron Ccaron comma less

 keycode  60 = scaron Scaron period greater

 keycode  61 = eogonek Eogonek slash question

 keycode  62 = Shift_R

 keycode  63 = KP_Multiply

 keycode  64 = Alt_L Meta_L

 keycode  65 = space space

 keycode  66 = Caps_Lock

 keycode  67 = F1 F11

 keycode  68 = F2 F12

 keycode  69 = F3 F13

 keycode  70 = F4 F14

 keycode  71 = F5 F15

 keycode  72 = F6 F16

 keycode  73 = F7 F17

 keycode  74 = F8 F18

 keycode  75 = F9 F19

 keycode  76 = F10 F20

 keycode  77 = Num_Lock

 keycode  78 = Scroll_Lock

 keycode  79 = KP_7

 keycode  80 = KP_8

 keycode  81 = KP_9

 keycode  82 = KP_Subtract

 keycode  83 = KP_4

 keycode  84 = KP_5

 keycode  85 = KP_6

 keycode  86 = KP_Add

 keycode  87 = KP_1

 keycode  88 = KP_2

 keycode  89 = KP_3

 keycode  90 = KP_0

 keycode  94 = less greater bar

 keycode  95 = F11 F11

 keycode  96 = F12 F12

 keycode 108 = KP_Enter

 keycode 109 = Control_R

 keycode 112 = KP_Divide

 keycode 113 = Mode_switch

 keycode 114 = Break

 keycode 110 = Find

 keycode  98 = Up

 keycode  99 = Prior

 keycode 100 = Left

 keycode 102 = Right

 keycode 115 = Select

 keycode 104 = Down

 keycode 105 = Next

 keycode 106 = Insert

 ! right windows-logo key

 ! in "windows" keyboards the postion of the key is annoying, is where
 AltGr

 ! usually resides, so go definie it as AltGr

 keycode 116 = Mode_switch

 ! right windows-menu key, redefined as Compose key

 keycode 117 = Multi_key

 add Mod1 = Alt_L

 add Mod2 = Mode_switch



 4.8.  Polish



 ! The "& 7" key generates 7, ampersand, and section

 ! The "E" key generates e, E, eogonek, and Eogonek

 ! The "O" key generates o, O, oacute, and Oacute

 ! The "A" key generates a, A, aogonek, and Aogonek

 ! The "S" key generates s, S, sacute, and Sacute

 ! The "L" key generates l, L, lstroke, and Lstroke

 ! The "Z" key generates z, Z, zabovedot, and Zabovedot


 ! The "X" key generates x, X, zacute, and Zacute

 ! The "C" key generates c, C, cacute, and Cacute

 ! The "N" key generates n, N, nacute, and Nacute

 ! The "AltGr" key generates Mode_switch

 keycode 0x09 =  Escape

 keycode 0x43 =  F1

 keycode 0x44 =  F2

 keycode 0x45 =  F3

 keycode 0x46 =  F4

 keycode 0x47 =  F5

 keycode 0x48 =  F6

 keycode 0x49 =  F7

 keycode 0x4A =  F8

 keycode 0x4B =  F9

 keycode 0x4C =  F10

 keycode 0x5F =  F11

 keycode 0x60 =  F12

 keycode 0x6F =  Print

 keycode 0x4E =  Multi_key

 keycode 0x6E =  Pause

 keycode 0x31 =  grave           asciitilde

 keycode 0x0A =  1               exclam

 keycode 0x0B =  2               at

 keycode 0x0C =  3               numbersign

 keycode 0x0D =  4               dollar

 keycode 0x0E =  5               percent

 keycode 0x0F =  6               asciicircum

 keycode 0x10 =  7               ampersand       section

 keycode 0x11 =  8               asterisk

 keycode 0x12 =  9               parenleft

 keycode 0x13 =  0               parenright

 keycode 0x14 =  minus           underscore

 keycode 0x15 =  equal           plus

 keycode 0x33 =  backslash       bar

 keycode 0x16 =  BackSpace

 keycode 0x6A =  Insert

 keycode 0x61 =  Home

 keycode 0x63 =  Prior

 keycode 0x4D =  Num_Lock

 keycode 0x70 =  KP_Divide

 keycode 0x3F =  KP_Multiply

 keycode 0x52 =  KP_Subtract

 keycode 0x17 =  Tab

 keycode 0x18 =  Q

 keycode 0x19 =  W

 keycode 0x1A =  e               E               eogonek
 Eogonek

 keycode 0x1B =  R

 keycode 0x1C =  T

 keycode 0x1D =  Y

 keycode 0x1E =  U

 keycode 0x1F =  I

 keycode 0x20 =  o               O               oacute          Oacute

 keycode 0x21 =  P

 keycode 0x22 =  bracketleft     braceleft

 keycode 0x23 =  bracketright    braceright

 keycode 0x24 =  Return

 keycode 0x6B =  Delete

 keycode 0x67 =  End

 keycode 0x69 =  Next

 keycode 0x4F =  KP_7

 keycode 0x50 =  KP_8

 keycode 0x51 =  KP_9

 keycode 0x56 =  KP_Add

 keycode 0x42 =  Caps_Lock

 keycode 0x26 =  a               A               aogonek
 Aogonek

 keycode 0x27 =  s               S               sacute          Sacute

 keycode 0x28 =  D

 keycode 0x29 =  F

 keycode 0x2A =  G

 keycode 0x2B =  H

 keycode 0x2C =  J

 keycode 0x2D =  K

 keycode 0x2E =  l               L               lstroke
 Lstroke

 keycode 0x2F =  semicolon       colon

 keycode 0x30 =  apostrophe      quotedbl

 keycode 0x53 =  KP_4


 keycode 0x54 =  KP_5

 keycode 0x55 =  KP_6

 keycode 0x32 =  Shift_L

 keycode 0x34 =  z               Z               zabovedot
 Zabovedot

 keycode 0x35 =  x               X               zacute          Zacute

 keycode 0x36 =  c               C               cacute          Cacute

 keycode 0x37 =  V

 keycode 0x38 =  B

 keycode 0x39 =  n               N               nacute          Nacute

 keycode 0x3A =  M

 keycode 0x3B =  comma           less

 keycode 0x3C =  period          greater         Multi_key

 keycode 0x3D =  slash           question

 keycode 0x3E =  Shift_R

 keycode 0x62 =  Up

 keycode 0x57 =  KP_1

 keycode 0x58 =  KP_2

 keycode 0x59 =  KP_3

 keycode 0x6C =  KP_Enter

 keycode 0x25 =  Control_L

 keycode 0x40 =  Alt_L           Meta_L

 keycode 0x41 =  space

 keycode 0x71 =  Mode_switch

 keycode 0x6D =  Control_R

 keycode 0x64 =  Left

 keycode 0x68 =  Down

 keycode 0x66 =  Right

 keycode 0x5A =  KP_0

 keycode 0x5B =  KP_Decimal

 ! right windows-logo key

 ! in "windows" keyboards the postion of the key is annoying, is where
 AltGr

 ! usually resides, so go definie it as AltGr

 keycode 116 = Mode_switch

 ! right windows-menu key keycode 117 = Multi_key

 clear Shift

 clear Lock

 clear Control

 clear Mod1

 clear Mod2

 clear Mod3

 clear Mod4

 clear Mod5

 add    Shift   = Shift_L Shift_R

 add    Lock    = Caps_Lock

 add    Control = Control_L Control_R

 add    Mod1    = Alt_L

 !Mode_switch add    Mod2    = Mode_switch



 5.  Some Xmodmap tips

 If you want to list the current keymap table, issue the command:
 xmodmap -pk | more

 The xkeycaps program is a sort of graphical front-end for xmodmap.
 Start it and see which numbers mean which keycode.

 To make the mouse buttons left-handed, use a command: xmodmap -e
 "pointer = 3 2 1"

 To remove the CapsLock and change it to control key, write this in
 your Xmodmap file:

 remove Lock = Caps_Lock keysym Caps_Lock = Control_L add Control =
 Control_L