  How to setup international keyboard in X Windows with
  Xmodmap
  by Juraj Sipos, xvudpapc@savba.sk
  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 (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 .



  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



