making my xmodmap work again

martin f krafft madduck at
Mon Jul 2 13:42:04 PDT 2007

Dear list,

I have been using the attached xmodmap file for years and it works
just fine on my Thinkpad X40. On a custom built desktop with
a Cherry USB keyboard, however, the Caps_Lock key does no longer
generate the mod5 modifier, which I use for window manipulation
(fluxbox). Or at least I think it does not generate the modifier
anymore (it could be related to a recent fluxbox upgrade too) — xev
unfortunately does not give me information about modifiers. xmodmap
itself though seems convinced:

  shift       Shift_L (0x32),  Shift_R (0x3e)
  control     Control_L (0x25)
  mod1        Alt_L (0x40),  Alt_L (0x7d),  Meta_L (0x9c)
  mod2        Num_Lock (0x4d)
  mod3        Super_R (0x6d),  Super_R (0x75)
  mod4        Mode_switch (0x5d),  Mode_switch (0x71),  Mode_switch (0x73),  Mode_switch (0x74)
  mod5        Caps_Lock (0x42)

Could anyone provide me with the hint I need to get stuff working

I also understand that xmodmap is deprecated and that it's
encouraged to use xkb symbol maps instead. Is this so? If yes, what
would be a good documentation/HOWTO to read?

Thanks for any input.

martin;              (greetings from the heart of the sun.)
  \____ echo mailto: !#^."<*>"|tr "<*> mailto:" net at madduck
spamtraps: madduck.bogus at
"vulgarity is simply the conduct of other people."
                                                        -- oscar wilde
-------------- next part --------------
! don't make anything but Control_[LR] generate control
clear Control
add Control  = Control_L
!use for Mod3 on lapse
!add Control  = Control_R

! we kill caps lock once and for all and make it generate mod5
clear Lock
keycode 0x42 = Caps_Lock
clear Mod5
add Mod5     = Caps_Lock

! now for what had me so long baffled. any keycode can generate eight keysyms,
! but only the first four are used. and the way to index into them is by using
! Shift and Mode_switch. my keyboard had no Mode_switch, so I am using that
! bloody Windoze key:

! now we assign the Mode_switch keysym to both Windoze keys
keycode 0x73 = Mode_switch
keycode 0x74 = Mode_switch
!right alt on lapse
keycode 0x71 = Mode_switch

! ... and tell the Mode_switch keysym to generate the mod4 modifier.
clear Mod4
add Mod4     = Mode_switch

! assign Super_R to the Menu key
keycode 0x75 = Super_R
!right control on lapse
keycode 0x6d = Super_R

! ... and make it generate the mod3 modifier
clear Mod3
add Mod3     = Super_R

! and now all we need to do is add what we would like to the keys.
! if this approach doesn't work, you'll need to go via keycodes, e.g.:
!   keycode 0x26 = a A adiaeresis Adiaeresis
! however, you'll have to check which keycode is generated by which keypress.
! use xev(1) for that.
keysym backslash = backslash bar aring Aring
keysym bracketleft = bracketleft braceleft ae AE
keysym bracketright = bracketright braceright oslash Ooblique
keysym comma = comma less cedilla guillemotleft
keysym equal = equal plus plusminus plusminus
keysym grave = grave asciitilde degree degree
keysym minus = minus underscore division notsign
keysym period = period greater periodcentered guillemotright
keysym slash = slash question exclamdown questiondown
keysym 0 = 0 parenright oacute Oacute
keysym 1 = 1 exclam onesuperior onequarter
keysym 2 = 2 at twosuperior onehalf
keysym 3 = 3 numbersign threesuperior threequarters
keysym 4 = 4 dollar eacute Eacute
keysym 5 = 5 percent EuroSign cent
keysym 6 = 6 asciicircum copyright registered
keysym 7 = 7 ampersand yacute Yacute
keysym 8 = 8 asterisk uacute Uacute
keysym 9 = 9 parenleft iacute Iacute
keysym a = a A adiaeresis Adiaeresis
keysym b = b B otilde Otilde
keysym c = c C ccedilla Ccedilla
keysym d = d D egrave Egrave
keysym e = e E ediaeresis Ediaeresis
keysym f = f F eth Eth
keysym g = g G thorn Thorn
keysym h = h H ucircumflex Ucircumflex
keysym i = i I idiaeresis Idiaeresis
keysym j = j J ugrave Ugrave
keysym k = k K igrave Igrave
keysym l = l L ograve Ograve
keysym m = m M mu mu
keysym n = n N ntilde Ntilde
keysym o = o O odiaeresis Odiaeresis
keysym p = p P ocircumflex Ocircumflex
keysym q = q Q acircumflex Acircumflex
keysym r = r R ecircumflex Ecircumflex
keysym s = s S ssharp section
keysym t = t T icircumflex Icircumflex
keysym u = u U udiaeresis Udiaeresis
keysym v = v V atilde Atilde
keysym w = w W aacute Aacute
keysym x = x X multiply multiply
keysym y = y Y ydiaeresis ydiaeresis
keysym z = z Z agrave Agrave

! Thinkpad stuff
keycode  77 = Num_Lock
keycode 233 = XF86Forward
keycode 234 = XF86Back
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature (GPG/PGP)
URL: <>

More information about the xorg mailing list