kanata_interception/
scancode.rs

1use num_enum::TryFromPrimitive;
2use serde::{Deserialize, Serialize};
3
4// ref: https://handmade.network/wiki/2823-keyboard_inputs_-_scancodes,_raw_input,_text_input,_key_names
5#[derive(Serialize, Deserialize, Hash, Debug, Eq, PartialEq, Copy, Clone, TryFromPrimitive)]
6#[repr(u16)]
7pub enum ScanCode {
8    Esc = 0x01,
9
10    Num1 = 0x02,
11    Num2 = 0x03,
12    Num3 = 0x04,
13    Num4 = 0x05,
14    Num5 = 0x06,
15    Num6 = 0x07,
16    Num7 = 0x08,
17    Num8 = 0x09,
18    Num9 = 0x0A,
19    Num0 = 0x0B,
20
21    Minus = 0x0C,
22    Equals = 0x0D,
23    Backspace = 0x0E,
24
25    Tab = 0x0F,
26
27    Q = 0x10,
28    W = 0x11,
29    E = 0x12,
30    R = 0x13,
31    T = 0x14,
32    Y = 0x15,
33    U = 0x16,
34    I = 0x17,
35    O = 0x18,
36    P = 0x19,
37    LeftBracket = 0x1A,
38    RightBracket = 0x1B,
39    Enter = 0x1C,
40    LeftControl = 0x1D,
41    A = 0x1E,
42    S = 0x1F,
43    D = 0x20,
44    F = 0x21,
45    G = 0x22,
46    H = 0x23,
47    J = 0x24,
48    K = 0x25,
49    L = 0x26,
50    SemiColon = 0x27,
51    Apostrophe = 0x28,
52    Grave = 0x29,
53    LeftShift = 0x2A,
54    BackSlash = 0x2B,
55    Z = 0x2C,
56    X = 0x2D,
57    C = 0x2E,
58    V = 0x2F,
59    B = 0x30,
60    N = 0x31,
61    M = 0x32,
62    Comma = 0x33,
63    Period = 0x34,
64    Slash = 0x35,
65    RightShift = 0x36,
66    NumpadMultiply = 0x37,
67    LeftAlt = 0x38,
68    Space = 0x39,
69    CapsLock = 0x3A,
70    F1 = 0x3B,
71    F2 = 0x3C,
72    F3 = 0x3D,
73    F4 = 0x3E,
74    F5 = 0x3F,
75    F6 = 0x40,
76    F7 = 0x41,
77    F8 = 0x42,
78    F9 = 0x43,
79    F10 = 0x44,
80    NumLock = 0x45,
81    ScrollLock = 0x46,
82    Numpad7 = 0x47,
83    Numpad8 = 0x48,
84    Numpad9 = 0x49,
85    NumpadMinus = 0x4A,
86    Numpad4 = 0x4B,
87    Numpad5 = 0x4C,
88    Numpad6 = 0x4D,
89    NumpadPlus = 0x4E,
90    Numpad1 = 0x4F,
91    Numpad2 = 0x50,
92    Numpad3 = 0x51,
93    Numpad0 = 0x52,
94    NumpadPeriod = 0x53,
95    AltPrintScreen = 0x54,
96    SC_55 = 0x55,
97    Int1 = 0x56,
98    F11 = 0x57,
99    F12 = 0x58,
100    SC_59 = 0x59,
101    Oem1 = 0x5A,
102    Oem2 = 0x5B,
103    Oem3 = 0x5C,
104    EraseEOF = 0x5D,
105    Oem4 = 0x5E,
106    Oem5 = 0x5F,
107    SC_60 = 0x60,
108    SC_61 = 0x61,
109    Zoom = 0x62,
110    Help = 0x63,
111    F13 = 0x64,
112    F14 = 0x65,
113    F15 = 0x66,
114    F16 = 0x67,
115    F17 = 0x68,
116    F18 = 0x69,
117    F19 = 0x6A,
118    F20 = 0x6B,
119    F21 = 0x6C,
120    F22 = 0x6D,
121    F23 = 0x6E,
122    Oem6 = 0x6F,
123    Katakana = 0x70,
124    Oem7 = 0x71,
125    SC_72 = 0x72,
126    SC_73 = 0x73,
127    SC_74 = 0x74,
128    SC_75 = 0x75,
129    F24 = 0x76,
130    SBCSChar = 0x77,
131    SC_78 = 0x78,
132    Convert = 0x79,
133    SC_7A = 0x7A,
134    NonConvert = 0x7B,
135    SC_7C = 0x7C,
136    SC_7D = 0x7D,
137    SC_7E = 0x7E,
138    SC_7F = 0x7F,
139    SC_80 = 0x80,
140    SC_81 = 0x81,
141    SC_82 = 0x82,
142    SC_83 = 0x83,
143    SC_84 = 0x84,
144    SC_85 = 0x85,
145    SC_86 = 0x86,
146    SC_87 = 0x87,
147    SC_88 = 0x88,
148    SC_89 = 0x89,
149    SC_8A = 0x8A,
150    SC_8B = 0x8B,
151    SC_8C = 0x8C,
152    SC_8D = 0x8D,
153    SC_8E = 0x8E,
154    SC_8F = 0x8F,
155    SC_90 = 0x90,
156    SC_91 = 0x91,
157    SC_92 = 0x92,
158    SC_93 = 0x93,
159    SC_94 = 0x94,
160    SC_95 = 0x95,
161    SC_96 = 0x96,
162    SC_97 = 0x97,
163    SC_98 = 0x98,
164    SC_99 = 0x99,
165    SC_9A = 0x9A,
166    SC_9B = 0x9B,
167    SC_9C = 0x9C,
168    SC_9D = 0x9D,
169    SC_9E = 0x9E,
170    SC_9F = 0x9F,
171    SC_A0 = 0xA0,
172    SC_A1 = 0xA1,
173    SC_A2 = 0xA2,
174    SC_A3 = 0xA3,
175    SC_A4 = 0xA4,
176    SC_A5 = 0xA5,
177    SC_A6 = 0xA6,
178    SC_A7 = 0xA7,
179    SC_A8 = 0xA8,
180    SC_A9 = 0xA9,
181    SC_AA = 0xAA,
182    SC_AB = 0xAB,
183    SC_AC = 0xAC,
184    SC_AD = 0xAD,
185    SC_AE = 0xAE,
186    SC_AF = 0xAF,
187    SC_B0 = 0xB0,
188    SC_B1 = 0xB1,
189    SC_B2 = 0xB2,
190    SC_B3 = 0xB3,
191    SC_B4 = 0xB4,
192    SC_B5 = 0xB5,
193    SC_B6 = 0xB6,
194    SC_B7 = 0xB7,
195    SC_B8 = 0xB8,
196    SC_B9 = 0xB9,
197    SC_BA = 0xBA,
198    SC_BB = 0xBB,
199    SC_BC = 0xBC,
200    SC_BD = 0xBD,
201    SC_BE = 0xBE,
202    SC_BF = 0xBF,
203    SC_C0 = 0xC0,
204    SC_C1 = 0xC1,
205    SC_C2 = 0xC2,
206    SC_C3 = 0xC3,
207    SC_C4 = 0xC4,
208    SC_C5 = 0xC5,
209    SC_C6 = 0xC6,
210    SC_C7 = 0xC7,
211    SC_C8 = 0xC8,
212    SC_C9 = 0xC9,
213    SC_CA = 0xCA,
214    SC_CB = 0xCB,
215    SC_CC = 0xCC,
216    SC_CD = 0xCD,
217    SC_CE = 0xCE,
218    SC_CF = 0xCF,
219    SC_D0 = 0xD0,
220    SC_D1 = 0xD1,
221    SC_D2 = 0xD2,
222    SC_D3 = 0xD3,
223    SC_D4 = 0xD4,
224    SC_D5 = 0xD5,
225    SC_D6 = 0xD6,
226    SC_D7 = 0xD7,
227    SC_D8 = 0xD8,
228    SC_D9 = 0xD9,
229    SC_DA = 0xDA,
230    SC_DB = 0xDB,
231    SC_DC = 0xDC,
232    SC_DD = 0xDD,
233    SC_DE = 0xDE,
234    SC_DF = 0xDF,
235    SC_E0 = 0xE0,
236    SC_E1 = 0xE1,
237    SC_E2 = 0xE2,
238    SC_E3 = 0xE3,
239    SC_E4 = 0xE4,
240    SC_E5 = 0xE5,
241    SC_E6 = 0xE6,
242    SC_E7 = 0xE7,
243    SC_E8 = 0xE8,
244    SC_E9 = 0xE9,
245    SC_EA = 0xEA,
246    SC_EB = 0xEB,
247    SC_EC = 0xEC,
248    SC_ED = 0xED,
249    SC_EE = 0xEE,
250    SC_EF = 0xEF,
251    SC_F0 = 0xF0,
252    SC_F1 = 0xF1,
253    SC_F2 = 0xF2,
254    SC_F3 = 0xF3,
255    SC_F4 = 0xF4,
256    SC_F5 = 0xF5,
257    SC_F6 = 0xF6,
258    SC_F7 = 0xF7,
259    SC_F8 = 0xF8,
260    SC_F9 = 0xF9,
261    SC_FA = 0xFA,
262    SC_FB = 0xFB,
263    SC_FC = 0xFC,
264    SC_FD = 0xFD,
265    SC_FE = 0xFE,
266    SC_NonExtendMax = 0xFF,
267}