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