PatchworkOS
Loading...
Searching...
No Matches
ps2_scanmap.c
Go to the documentation of this file.
2#include <sys/kbd.h>
3
4static const keycode_t set2Map[256] = {
5 [0x00] = KBD_NONE,
6 [0x01] = KBD_F9,
7 [0x03] = KBD_F5,
8 [0x04] = KBD_F3,
9 [0x05] = KBD_F1,
10 [0x06] = KBD_F2,
11 [0x07] = KBD_F12,
12 [0x09] = KBD_F10,
13 [0x0A] = KBD_F8,
14 [0x0B] = KBD_F6,
15 [0x0C] = KBD_F4,
16 [0x0D] = KBD_TAB,
17 [0x0E] = KBD_GRAVE,
18 [0x11] = KBD_LEFT_ALT,
19 [0x12] = KBD_LEFT_SHIFT,
20 [0x14] = KBD_LEFT_CTRL,
21 [0x15] = KBD_Q,
22 [0x16] = KBD_1,
23 [0x1A] = KBD_Z,
24 [0x1B] = KBD_S,
25 [0x1C] = KBD_A,
26 [0x1D] = KBD_W,
27 [0x1E] = KBD_2,
28 [0x21] = KBD_C,
29 [0x22] = KBD_X,
30 [0x23] = KBD_D,
31 [0x24] = KBD_E,
32 [0x25] = KBD_4,
33 [0x26] = KBD_3,
34 [0x29] = KBD_SPACE,
35 [0x2A] = KBD_V,
36 [0x2B] = KBD_F,
37 [0x2C] = KBD_T,
38 [0x2D] = KBD_R,
39 [0x2E] = KBD_5,
40 [0x31] = KBD_N,
41 [0x32] = KBD_B,
42 [0x33] = KBD_H,
43 [0x34] = KBD_G,
44 [0x35] = KBD_Y,
45 [0x36] = KBD_6,
46 [0x3A] = KBD_M,
47 [0x3B] = KBD_J,
48 [0x3C] = KBD_U,
49 [0x3D] = KBD_7,
50 [0x3E] = KBD_8,
51 [0x41] = KBD_COMMA,
52 [0x42] = KBD_K,
53 [0x43] = KBD_I,
54 [0x44] = KBD_O,
55 [0x45] = KBD_0,
56 [0x46] = KBD_9,
57 [0x49] = KBD_PERIOD,
58 [0x4A] = KBD_SLASH,
59 [0x4B] = KBD_L,
60 [0x4C] = KBD_SEMICOLON,
61 [0x4D] = KBD_P,
62 [0x4E] = KBD_MINUS,
63 [0x52] = KBD_APOSTROPHE,
64 [0x54] = KBD_LEFT_BRACE,
65 [0x55] = KBD_EQUAL,
66 [0x58] = KBD_CAPS_LOCK,
67 [0x59] = KBD_RIGHT_SHIFT,
68 [0x5A] = KBD_ENTER,
69 [0x5B] = KBD_RIGHT_BRACE,
70 [0x5D] = KBD_BACKSLASH,
71 [0x66] = KBD_BACKSPACE,
72 [0x69] = KBD_KP_1,
73 [0x6B] = KBD_KP_4,
74 [0x6C] = KBD_KP_7,
75 [0x70] = KBD_KP_0,
76 [0x71] = KBD_KP_PERIOD,
77 [0x72] = KBD_KP_2,
78 [0x73] = KBD_KP_5,
79 [0x74] = KBD_KP_6,
80 [0x75] = KBD_KP_8,
81 [0x76] = KBD_ESC,
82 [0x77] = KBD_NUM_LOCK,
83 [0x78] = KBD_F11,
84 [0x79] = KBD_KP_PLUS,
85 [0x7A] = KBD_KP_3,
86 [0x7B] = KBD_KP_MINUS,
87 [0x7C] = KBD_KP_ASTERISK,
88 [0x7D] = KBD_KP_9,
89 [0x7E] = KBD_SCROLL_LOCK,
90 [0x83] = KBD_F7,
91};
92
93static const keycode_t set2ExtendedMap[256] = {
94 [0x11] = KBD_RIGHT_ALT,
95 [0x14] = KBD_RIGHT_CTRL,
96 [0x1F] = KBD_LEFT_SUPER,
97 [0x27] = KBD_RIGHT_SUPER,
98 [0x37] = KBD_SYSRQ,
99 [0x4A] = KBD_KP_SLASH,
100 [0x5A] = KBD_KP_ENTER,
101 [0x69] = KBD_END,
102 [0x6B] = KBD_LEFT,
103 [0x6C] = KBD_HOME,
104 [0x70] = KBD_INSERT,
105 [0x71] = KBD_DELETE,
106 [0x72] = KBD_DOWN,
107 [0x74] = KBD_RIGHT,
108 [0x75] = KBD_UP,
109 [0x7A] = KBD_PAGE_DOWN,
110 [0x7D] = KBD_PAGE_UP,
111 [0x20] = KBD_MUTE,
112 [0x22] = KBD_MEDIA_PLAY_PAUSE,
113 [0x24] = KBD_MEDIA_STOP,
114 [0x2E] = KBD_VOLUME_DOWN,
115 [0x30] = KBD_VOLUME_UP,
116};
117
119{
120 if (isExtended)
121 {
122 if (set2ExtendedMap[scancode] != 0)
123 {
124 return set2ExtendedMap[scancode];
125 }
126 }
127 else
128 {
129 if (set2Map[scancode] != 0)
130 {
131 return set2Map[scancode];
132 }
133 }
134 return KBD_NONE;
135}
keycode_t ps2_scancode_to_keycode(ps2_scancode_t scancode, bool isExtended)
Convert a PS/2 scancode to a generic keycode.
uint8_t ps2_scancode_t
PS/2 scancode.
Definition ps2_scanmap.h:23
keycode_t
Keyboard keycode type.
Definition kbd.h:27
@ KBD_F11
F11 key.
Definition kbd.h:99
@ KBD_KP_4
Keypad 4.
Definition kbd.h:125
@ KBD_RIGHT_SUPER
Right Super key.
Definition kbd.h:256
@ KBD_2
Key 2.
Definition kbd.h:60
@ KBD_MEDIA_PLAY_PAUSE
Media Play/Pause key.
Definition kbd.h:258
@ KBD_6
Key 6.
Definition kbd.h:64
@ KBD_1
Key 1.
Definition kbd.h:59
@ KBD_F5
F5 key.
Definition kbd.h:93
@ KBD_4
Key 4.
Definition kbd.h:62
@ KBD_K
Key K.
Definition kbd.h:42
@ KBD_MUTE
Mute key.
Definition kbd.h:163
@ KBD_SPACE
Space key.
Definition kbd.h:74
@ KBD_T
Key T.
Definition kbd.h:51
@ KBD_INSERT
Insert key.
Definition kbd.h:105
@ KBD_F2
F2 key.
Definition kbd.h:90
@ KBD_R
Key R.
Definition kbd.h:49
@ KBD_GRAVE
Grave accent key.
Definition kbd.h:83
@ KBD_PERIOD
Period key.
Definition kbd.h:85
@ KBD_F9
F9 key.
Definition kbd.h:97
@ KBD_F6
F6 key.
Definition kbd.h:94
@ KBD_MEDIA_STOP
Media Stop key.
Definition kbd.h:269
@ KBD_LEFT
Left arrow key.
Definition kbd.h:112
@ KBD_F7
F7 key.
Definition kbd.h:95
@ KBD_Q
Key Q.
Definition kbd.h:48
@ KBD_MINUS
Minus key.
Definition kbd.h:75
@ KBD_M
Key M.
Definition kbd.h:44
@ KBD_APOSTROPHE
Apostrophe key.
Definition kbd.h:82
@ KBD_3
Key 3.
Definition kbd.h:61
@ KBD_LEFT_ALT
Left Alt key.
Definition kbd.h:251
@ KBD_J
Key J.
Definition kbd.h:41
@ KBD_KP_ASTERISK
Keypad Asterisk.
Definition kbd.h:118
@ KBD_DOWN
Down arrow key.
Definition kbd.h:113
@ KBD_F4
F4 key.
Definition kbd.h:92
@ KBD_BACKSLASH
Backslash key.
Definition kbd.h:79
@ KBD_RIGHT_BRACE
Right brace key.
Definition kbd.h:78
@ KBD_KP_1
Keypad 1.
Definition kbd.h:122
@ KBD_X
Key X.
Definition kbd.h:55
@ KBD_8
Key 8.
Definition kbd.h:66
@ KBD_F8
F8 key.
Definition kbd.h:96
@ KBD_HOME
Home key.
Definition kbd.h:106
@ KBD_LEFT_SHIFT
Left Shift key.
Definition kbd.h:250
@ KBD_S
Key S.
Definition kbd.h:50
@ KBD_I
Key I.
Definition kbd.h:40
@ KBD_H
Key H.
Definition kbd.h:39
@ KBD_RIGHT_SHIFT
Right Shift key.
Definition kbd.h:254
@ KBD_TAB
Tab key.
Definition kbd.h:73
@ KBD_N
Key N.
Definition kbd.h:45
@ KBD_Z
Key Z.
Definition kbd.h:57
@ KBD_LEFT_CTRL
Left Control key.
Definition kbd.h:249
@ KBD_KP_7
Keypad 7.
Definition kbd.h:128
@ KBD_BACKSPACE
Backspace key.
Definition kbd.h:72
@ KBD_U
Key U.
Definition kbd.h:52
@ KBD_RIGHT
Right arrow key.
Definition kbd.h:111
@ KBD_F
Key F.
Definition kbd.h:37
@ KBD_7
Key 7.
Definition kbd.h:65
@ KBD_5
Key 5.
Definition kbd.h:63
@ KBD_KP_9
Keypad 9.
Definition kbd.h:130
@ KBD_0
Key 0.
Definition kbd.h:68
@ KBD_KP_3
Keypad 3.
Definition kbd.h:124
@ KBD_KP_0
Keypad 0.
Definition kbd.h:131
@ KBD_O
Key O.
Definition kbd.h:46
@ KBD_KP_6
Keypad 6.
Definition kbd.h:127
@ KBD_D
Key D.
Definition kbd.h:35
@ KBD_NUM_LOCK
Num Lock key.
Definition kbd.h:116
@ KBD_ENTER
Enter key.
Definition kbd.h:70
@ KBD_V
Key V.
Definition kbd.h:53
@ KBD_KP_MINUS
Keypad Minus.
Definition kbd.h:119
@ KBD_VOLUME_UP
Volume Up key.
Definition kbd.h:164
@ KBD_RIGHT_ALT
Right Alt key.
Definition kbd.h:255
@ KBD_W
Key W.
Definition kbd.h:54
@ KBD_EQUAL
Equal key.
Definition kbd.h:76
@ KBD_9
Key 9.
Definition kbd.h:67
@ KBD_KP_SLASH
Keypad Slash.
Definition kbd.h:117
@ KBD_CAPS_LOCK
Caps Lock key.
Definition kbd.h:87
@ KBD_KP_PLUS
Keypad Plus.
Definition kbd.h:120
@ KBD_KP_8
Keypad 8.
Definition kbd.h:129
@ KBD_P
Key P.
Definition kbd.h:47
@ KBD_KP_2
Keypad 2.
Definition kbd.h:123
@ KBD_KP_ENTER
Keypad Enter.
Definition kbd.h:121
@ KBD_UP
Up arrow key.
Definition kbd.h:114
@ KBD_L
Key L.
Definition kbd.h:43
@ KBD_A
Key A.
Definition kbd.h:32
@ KBD_F12
F12 key.
Definition kbd.h:100
@ KBD_Y
Key Y.
Definition kbd.h:56
@ KBD_KP_5
Keypad 5.
Definition kbd.h:126
@ KBD_RIGHT_CTRL
Right Control key.
Definition kbd.h:253
@ KBD_NONE
None.
Definition kbd.h:28
@ KBD_SLASH
Slash key.
Definition kbd.h:86
@ KBD_END
End key.
Definition kbd.h:109
@ KBD_ESC
Escape key.
Definition kbd.h:71
@ KBD_C
Key C.
Definition kbd.h:34
@ KBD_PAGE_DOWN
Page Down key.
Definition kbd.h:110
@ KBD_B
Key B.
Definition kbd.h:33
@ KBD_SCROLL_LOCK
Scroll Lock key.
Definition kbd.h:103
@ KBD_G
Key G.
Definition kbd.h:38
@ KBD_E
Key E.
Definition kbd.h:36
@ KBD_F1
F1 key.
Definition kbd.h:89
@ KBD_KP_PERIOD
Keypad Period.
Definition kbd.h:132
@ KBD_VOLUME_DOWN
Volume Down key.
Definition kbd.h:165
@ KBD_DELETE
Delete key.
Definition kbd.h:108
@ KBD_COMMA
Comma key.
Definition kbd.h:84
@ KBD_F3
F3 key.
Definition kbd.h:91
@ KBD_LEFT_BRACE
Left brace key.
Definition kbd.h:77
@ KBD_LEFT_SUPER
Left Super key.
Definition kbd.h:252
@ KBD_SEMICOLON
Semicolon key.
Definition kbd.h:81
@ KBD_F10
F10 key.
Definition kbd.h:98
@ KBD_SYSRQ
SysRq key.
Definition kbd.h:102
@ KBD_PAGE_UP
Page Up key.
Definition kbd.h:107
static const keycode_t set2ExtendedMap[256]
Definition ps2_scanmap.c:93
static const keycode_t set2Map[256]
Definition ps2_scanmap.c:4