old thinkpad as happy hacking keyboad .Xmodmap
.Xmodmap
remove lock = Caps_Lock remove control = Control_L remove control = Control_R remove mod1 = Alt_L remove mod1 = Meta_L remove mod1 = Alt_R remove mod1 = Meta_R remove shift = Shift_R keycode 66 = Control_L keycode 37 = Alt_L Meta_L Alt_L Meta_L keycode 105 = Alt_R Meta_R Alt_R Meta_R keycode 135 = Super_R NoSymbol Super_R keycode 62 = Mode_switch keycode 167 = Mode_switch keycode 64 = Mode_switch keycode 47 = semicolon colon Left Left keycode 61 = slash question Down Down keycode 34 = bracketleft braceleft Up Up keycode 48 = apostrophe quotedbl Right Right keycode 43 = h H Left Left keycode 44 = j J Down Down keycode 45 = k K Up Up keycode 46 = l L Right Right keycode 100 = Super_R NoSymbol Super_R keycode 49 = Escape Escape Escape Escape keycode 117 = grave asciitilde asciitilde Zenkaku_Hankaku keycode 115 = backslash bar bar bar keycode 22 = backslash bar bar bar keycode 51 = Delete Delete BackSpace BackSpace keycode 19 = 0 parenright parenright asciitilde keycode 10 = 1 exclam exclam exclam keycode 11 = 2 at at quotedbl keycode 12 = 3 numbersign numbersign numbersign keycode 13 = 4 dollar dollar dollar keycode 14 = 5 percent percent percent keycode 15 = 6 asciicircum asciicircum ampersand keycode 16 = 7 ampersand ampersand apostrophe keycode 17 = 8 asterisk asterisk parenleft keycode 18 = 9 parenleft parenleft parenright keycode 38 = a A A A keycode 56 = b B B B keycode 54 = c C C C keycode 40 = d D D D keycode 26 = e E E E keycode 41 = f F F F keycode 42 = g G G G keycode 31 = i I I I keycode 58 = m M M M keycode 57 = n N N N keycode 32 = o O O O keycode 33 = p P P P keycode 24 = q Q Q Q keycode 30 = u U U U keycode 55 = v V V V keycode 25 = w W W W keycode 27 = r R R R keycode 53 = x X X X keycode 29 = y Y Y Y keycode 52 = z Z Z Z keycode 20 = minus underscore underscore equal keycode 21 = equal plus plus asciitilde keycode 35 = bracketright braceright braceright braceleft keycode 59 = comma less less less keycode 60 = period greater greater greater add control = Control_L add mod1 = Alt_L add mod1 = Meta_L add mod1 = Alt_R add mod1 = Meta_R
generator
#! /bin/bash function keycode_line_to_number() { echo $2 return $2 } function keystr_to_keycode_line() { echo `xmodmap -pke | grep " $1 "` } function keystr_to_keynum() { keycode_line_to_number $( keystr_to_keycode_line $1 ) } function keycode_line_replace_Mode_switch() { #echo $1 $2 $3 $5 $6 $7 echo $1 $2 $3 $4 $5 $5 $7 } function keystr_to_keycode_line_replace_Mode_switch() { keycode_line_replace_Mode_switch $( keystr_to_keycode_line $1 ) } num_Shift_R=$(keystr_to_keynum Shift_R) num_Caps_Lock=$(keystr_to_keynum Caps_Lock) num_Control_L=$(keystr_to_keynum Control_L) num_Control_R=$(keystr_to_keynum Control_R) num_Alt_L=$(keystr_to_keynum Alt_L) num_Alt_R=$(keystr_to_keynum Alt_R) num_Super_L=$(keystr_to_keynum Super_L) num_Super_R=$(keystr_to_keynum Super_R) num_Menu=$(keystr_to_keynum Menu) num_Muhenkan=$(keystr_to_keynum Muhenkan) num_Henkan_Mode=$(keystr_to_keynum Henkan_Mode) num_Escape=$(keystr_to_keynum Escape) num_Zenkaku_Hankaku=$(keystr_to_keynum Zenkaku_Hankaku) num_Next=$(keystr_to_keynum Next) num_backslash=$(keystr_to_keynum backslash) num_BackSpace=$(keystr_to_keynum BackSpace) num_End=$(keystr_to_keynum End) num_semicolon=$(keystr_to_keynum semicolon) num_slash=$(keystr_to_keynum slash) num_bracketleft=$(keystr_to_keynum bracketleft) num_apostrophe=$(keystr_to_keynum apostrophe) num_XF86Forward=$(keystr_to_keynum XF86Forward) num_h=$(keystr_to_keynum h) num_j=$(keystr_to_keynum j) num_k=$(keystr_to_keynum k) num_l=$(keystr_to_keynum l) #XF86WakeUp + fn echo remove lock = Caps_Lock echo remove control = Control_L echo remove control = Control_R echo remove mod1 = Alt_L echo remove mod1 = Meta_L echo remove mod1 = Alt_R echo remove mod1 = Meta_R echo remove shift = Shift_R echo keycode $num_Caps_Lock = Control_L echo keycode $num_Control_L = Alt_L Meta_L Alt_L Meta_L #echo keycode $num_Control_L = Alt_L echo keycode $num_Control_R = Alt_R Meta_R Alt_R Meta_R #echo keycode $num_Control_R = Alt_R echo keycode $num_Menu = Super_R NoSymbol Super_R #echo keycode $num_Menu = Super_R echo keycode $num_Shift_R = Mode_switch echo keycode $num_XF86Forward = Mode_switch echo keycode $num_Alt_L = Mode_switch echo keycode $num_semicolon = semicolon colon Left Left echo keycode $num_slash = slash question Down Down echo keycode $num_bracketleft = bracketleft braceleft Up Up echo keycode $num_apostrophe = apostrophe quotedbl Right Right echo keycode $num_h = h H Left Left echo keycode $num_j = j J Down Down echo keycode $num_k = k K Up Up echo keycode $num_l = l L Right Right echo keycode $num_Henkan_Mode = Super_R NoSymbol Super_R echo keycode $num_Zenkaku_Hankaku = Escape Escape Escape Escape #echo keycode $num_Next = grave asciitilde Zenkaku_Hankaku Kanji echo keycode $num_Next = grave asciitilde asciitilde Zenkaku_Hankaku #echo keycode $num_End = backslash bar bracketright braceright echo keycode $num_End = backslash bar bar bar #echo keycode $num_BackSpace = backslash bar bracketright braceright echo keycode $num_BackSpace = backslash bar bar bar echo keycode $num_backslash = Delete Delete BackSpace BackSpace #for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q u v w r x y z minus equal bracketright comma period for i in 0 1 2 3 4 5 6 7 asterisk 18 a b c d e f g i m n o p q u v w r x y z minus equal bracketright comma period do #echo $i keystr_to_keycode_line_replace_Mode_switch $i done echo add control = Control_L echo add mod1 = Alt_L echo add mod1 = Meta_L echo add mod1 = Alt_R echo add mod1 = Meta_R