#
# Modifiers
#

Shift_R 0x36
Shift_L 0x2a

Alt_R 0x64
Mode_switch 0x64
Alt_L 0x38

Control_R 0x61
Control_L 0x1d

# Translate Super to Windows keys. 
Super_R 0xdb
Super_L 0xdc

# Translate Menu to the Windows Application key. 
Menu 0xdd

#
# Top row
#
1 0x2
2 0x3
3 0x4
4 0x5
5 0x6
6 0x7
7 0x8
8 0x9
9 0xa
0 0xb
BackSpace 0xe

#
# QWERTY first row
#
Tab 0xf
ISO_Left_Tab 0xf
q 0x10 addupper
w 0x11 addupper
e 0x12 addupper
r 0x13 addupper
t 0x14 addupper
y 0x15 addupper
u 0x16 addupper
i 0x17 addupper
o 0x18 addupper
p 0x19 addupper

#
# QWERTY second row
#
a 0x1e addupper
s 0x1f addupper
d 0x20 addupper
f 0x21 addupper
g 0x22 addupper
h 0x23 addupper
j 0x24 addupper
k 0x25 addupper
l 0x26 addupper
Return 0x1c

#
# QWERTY third row
#
z 0x2c addupper
x 0x2d addupper
c 0x2e addupper
v 0x2f addupper
b 0x30 addupper
n 0x31 addupper
m 0x32 addupper

space 0x39

less 0x56
greater 0x56
bar 0x56
brokenbar 0x56

#
# Esc and Function keys
#
Escape 0x1
F1 0x3b
F2 0x3c
F3 0x3d
F4 0x3e
F5 0x3f
F6 0x40
F7 0x41
F8 0x42
F9 0x43
F10 0x44
F11 0x57
F12 0x58

# Printscreen, Scrollock and Pause
# Printscreen really requires four scancodes (0xe0, 0x2a, 0xe0, 0x37),
# but (0xe0, 0x37) seems to work. 
Print 0x63
Sys_Req 0x63
Execute 0x63
Scroll_Lock 0x46

#
# Insert - PgDown
#
Insert 0x6e
Delete 0x6f
Home 0x66
End 0x6b
Page_Up 0x68
Page_Down 0x6d

#
# Arrow keys
#
Left 0x69
Up 0x67
Down 0x6c
Right 0x6a

#
# Numpad
#
Num_Lock 0x45
KP_Divide 0x62
KP_Multiply 0x37
KP_Subtract 0x4a
KP_Add 0x4e
KP_Enter 0x60

KP_Decimal 0x53
KP_Separator 0x53
KP_Delete 0x53

KP_0 0x52
KP_Insert 0x52

KP_1 0x4f
KP_End 0x4f

KP_2 0x50
KP_Down 0x50

KP_3 0x51
KP_Next 0x51

KP_4 0x4b
KP_Left 0x4b

KP_5 0x4c
KP_Begin 0x4c

KP_6 0x4d
KP_Right 0x4d

KP_7 0x47
KP_Home 0x47

KP_8 0x48
KP_Up 0x48

KP_9 0x49
KP_Prior 0x49

Caps_Lock 0x3a
#
# Inhibited keys
#
Multi_key 0x0

#
# Scan Code 1
section 0x29
degree 0x29
notsign 0x29
#
# Scan Code 2
plus 0x2
brokenbar 0x02
#
# Scan Code 3
quotedbl 0x03
at 0x03
#
# Scan Code 4
asterisk 0x04
numbersign 0x04
#
# Scan Code 5
ccedilla 0x05
onequarter 0x05
#
# Scan Code 6
percent 0x06
onehalf 0x06
#
# Scan Code 7
ampersand 0x07
notsign 0x07
#
# Scan Code 8
slash 0x08
bar 0x08
#
# Scan Code 9
parenleft 0x09
cent 0x09
# 
# Scan Code 10
parenright 0x0a
#
# Scan Code 11
equal 0x0b
braceright 0x0b
#
# Scan Code 12
apostrophe 0x0c 
question 0x0c
dead_acute 0x0c
#
# Scan Code 13
dead_circumflex 0x0d
dead_grave 0x0d
dead_tilde 0x0d
#
# Scan Code 19
EuroSign 0x12
#
# Scan Code 22
z 0x15 addupper
#
# Scan Code 27
udiaeresis 0x1a
egrave 0x1a
bracketleft 0x1a
# 
# Scan Code 28
dead_diaeresis 0x1b
exclam 0x1b 
bracketright 0x1b
#
# Scan Code 40
odiaeresis 0x27
eacute 0x27
#
# Scan Code 41
adiaeresis 0x28
agrave 0x28
braceleft 0x28
#
# Scan Code 42 (only on international keyboards)
dollar 0x2b
sterling 0x2b
braceright 0x2b
#
# Scan Code 45 (only on international keyboards)
backslash 0x56
#
# Scan Code 46
y 0x2c addupper
# 
# Scan Code 53
comma 0x33
semicolon 0x33
# 
# Scan Code 54
period 0x34
colon 0x34
#
# Scan Code 55
minus 0x35 
underscore 0x35
#
# Suppress Windows unsupported AltGr keys
#
# Scan Code 17
paragraph 0x10
#
# Scan Code 21
tslash 0x14
#
# Scan Code 22
leftarrow 0x15
#
# Scan Code 23
downarrow 0x16
#
# Scan Code 24
rightarrow 0x17
#
# Scan Code 25
oslash 0x18
#
# Scan Code 26
thorn 0x19
#
# Scan Code 31
ae 0x1e
#
# Scan Code 32
ssharp 0x1f
#
# Scan Code 33
eth 0x20
#
# Scan Code 34
dstroke 0x21
#
# Scan Code 35
eng 0x22
#
# Scan Code 36
hstroke 0x23
#
# Scan Code 38
kra 0x25
#
# Scan Code 39
lstroke 0x26
#
# Scan Code 46
guillemotleft 0x2c
#
# Scan Code 47
guillemotright 0x2d
#
# Scan Code 49
leftdoublequotemark 0x2f
#
# Scan Code 50
rightdoublequotemark 0x30
#
# Scan Code 52
mu 0x32
