/
scancode.py
145 lines (138 loc) · 2.52 KB
/
scancode.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
"""
PC-BASIC - scancode.py
Keyboard scancodes
(c) 2014, 2015, 2016 Rob Hagemans
This file is released under the GNU GPL version 3 or later.
"""
# these are PC-XT keyboard scancodes without E0 extended codes
# they are labelled by their value on an IBM PC/XT US keyboard
# but they correspond to a physical key regardless of its logical value
# http://www.quadibloc.com/comp/scan.htm
#
# ROW 0
ESCAPE = 0x01
N1 = 0x02
N2 = 0x03
N3 = 0x04
N4 = 0x05
N5 = 0x06
N6 = 0x07
N7 = 0x08
N8 = 0x09
N9 = 0x0A
N0 = 0x0B
MINUS = 0x0C
EQUALS = 0x0D
BACKSPACE = 0x0E
# ROW 1
TAB = 0x0F
q = 0x10
w = 0x11
e = 0x12
r = 0x13
t = 0x14
y = 0x15
u = 0x16
i = 0x17
o = 0x18
p = 0x19
LEFTBRACKET = 0x1A
RIGHTBRACKET = 0x1B
RETURN = 0x1C
# ROW 2
CTRL = 0x1D
a = 0x1E
s = 0x1F
d = 0x20
f = 0x21
g = 0x22
h = 0x23
j = 0x24
k = 0x25
l = 0x26
SEMICOLON = 0x27
QUOTE = 0x28
BACKQUOTE = 0x29
# ROW 3
LSHIFT = 0x2A
BACKSLASH = 0x2B
z = 0x2C
x = 0x2D
c = 0x2E
v = 0x2F
b = 0x30
n = 0x31
m = 0x32
COMMA = 0x33
PERIOD = 0x34
SLASH = 0x35
RSHIFT = 0x36
PRINT = 0x37; KPTIMES = 0x37;
# ROW 4
ALT = 0x38
SPACE = 0x39
CAPSLOCK = 0x3A
# function keypad
F1 = 0x3B
F2 = 0x3C
F3 = 0x3D
F4 = 0x3E
F5 = 0x3F
F6 = 0x40
F7 = 0x41
F8 = 0x42
F9 = 0x43
F10 = 0x44
# numeric keypad
NUMLOCK = 0x45
SCROLLOCK = 0x46; BREAK = 0x46; PAUSE = 0x46;
KP7 = 0x47; HOME = 0x47
KP8 = 0x48; UP = 0x48
KP9 = 0x49; PAGEUP = 0x49
KPMINUS = 0x4A
KP4 = 0x4B; LEFT = 0x4B
KP5 = 0x4C
KP6 = 0x4D; RIGHT = 0x4D
KPPLUS = 0x4E
KP1 = 0x4F; END = 0x4F
KP2 = 0x50; DOWN = 0x50
KP3 = 0x51; PAGEDOWN = 0x51
KP0 = 0x52; INSERT = 0x52
KPPOINT = 0x53; DELETE = 0x53
# extensions (keys not on the US PC/XT keyboard)
SYSREQ = 0x54
# 56 - INT1, next to left shift, (\ on UK keyboard)
INT1 = 0x56
F11 = 0x57
F12 = 0x58
# Windows or Logo keys
LSUPER = 0x5B
RSUPER = 0x5C
MENU = 0x5D
# Japanese and Brazilian keyboards
# https://www.win.tue.nl/~aeb/linux/kbd/scancodes-8.html
# https://en.wikipedia.org/wiki/Language_input_keys
HIRAGANA_KATAKANA = 0x70
# backslash/underscore on Japanese keyboard
# /? on Brazilian keyboard
INT3 = 0x73
HENKAN = 0x79
MUHENKAN = 0x7B
ZENKAKU_HANKAKU = 0x29
# yen key on Japanese keyboard
INT4 = 0x7D
# keypad . on Brazilian keyboard
INT5 = 0x7E
# Korean keyboards
# https://www.win.tue.nl/~aeb/linux/kbd/scancodes-9.html
# Hanja key (left of Space on Korean keyboard)
HANJA = 0xF1
# Hangul/English key (right of Space on Korean keyboard)
HAN_YEONG = 0xF2
# tandy scancodes
#F11 = 0xF9
#F12 = 0xFA
# numeric keypad
keypad = {
KP0: '0', KP1: '1', KP2: '2', KP3: '3', KP4: '4',
KP5: '5', KP6: '6', KP7: '7', KP8: '8', KP9: '9' }