--- /dev/null
+!
+! don't make anything but Control_[LR] generate control
+clear Control
+add Control = Control_L
+!use for Mod3 on lapse
+!add Control = Control_R
+
+clear Mod1
+add Mod1 = Alt_L
+add Mod1 = Meta_L
+
+!
+! we kill caps lock once and for all and make it generate mod5
+!
+clear Lock
+keycode 0x42 = Caps_Lock
+clear Mod4
+add Mod4 = 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 Mod5
+add Mod5 = 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
+! http://www.thinkwiki.org/wiki/Installing_OpenSUSE_10.0_on_a_ThinkPad_X41#Numlock_and_Browse_keys
+keycode 77 = Num_Lock
+keycode 233 = XF86Forward
+keycode 234 = XF86Back
+
+! the AccessIBM key
+keycode 159 = XF86Excel