• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2022 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #[derive(Debug, Clone, Copy)]
6 pub struct MapEntry {
7     pub linux_keycode: u16,
8     pub xkb: u32,
9     pub win: u32,
10     pub mac: u32,
11 }
12 
13 // Based on Chromium's chromium/chromium/ui/events/keycodes/dom/keycode_converter_data.inc.
14 pub const KEYCODE_MAP: [MapEntry; 104] = [
15     MapEntry {
16         linux_keycode: 30,
17         xkb: 0x0026,
18         win: 0x001e,
19         mac: 0x0000,
20     },
21     MapEntry {
22         linux_keycode: 48,
23         xkb: 0x0038,
24         win: 0x0030,
25         mac: 0x000b,
26     },
27     MapEntry {
28         linux_keycode: 46,
29         xkb: 0x0036,
30         win: 0x002e,
31         mac: 0x0008,
32     },
33     MapEntry {
34         linux_keycode: 32,
35         xkb: 0x0028,
36         win: 0x0020,
37         mac: 0x0002,
38     },
39     MapEntry {
40         linux_keycode: 18,
41         xkb: 0x001a,
42         win: 0x0012,
43         mac: 0x000e,
44     },
45     MapEntry {
46         linux_keycode: 33,
47         xkb: 0x0029,
48         win: 0x0021,
49         mac: 0x0003,
50     },
51     MapEntry {
52         linux_keycode: 34,
53         xkb: 0x002a,
54         win: 0x0022,
55         mac: 0x0005,
56     },
57     MapEntry {
58         linux_keycode: 35,
59         xkb: 0x002b,
60         win: 0x0023,
61         mac: 0x0004,
62     },
63     MapEntry {
64         linux_keycode: 23,
65         xkb: 0x001f,
66         win: 0x0017,
67         mac: 0x0022,
68     },
69     MapEntry {
70         linux_keycode: 36,
71         xkb: 0x002c,
72         win: 0x0024,
73         mac: 0x0026,
74     },
75     MapEntry {
76         linux_keycode: 37,
77         xkb: 0x002d,
78         win: 0x0025,
79         mac: 0x0028,
80     },
81     MapEntry {
82         linux_keycode: 38,
83         xkb: 0x002e,
84         win: 0x0026,
85         mac: 0x0025,
86     },
87     MapEntry {
88         linux_keycode: 50,
89         xkb: 0x003a,
90         win: 0x0032,
91         mac: 0x002e,
92     },
93     MapEntry {
94         linux_keycode: 49,
95         xkb: 0x0039,
96         win: 0x0031,
97         mac: 0x002d,
98     },
99     MapEntry {
100         linux_keycode: 24,
101         xkb: 0x0020,
102         win: 0x0018,
103         mac: 0x001f,
104     },
105     MapEntry {
106         linux_keycode: 25,
107         xkb: 0x0021,
108         win: 0x0019,
109         mac: 0x0023,
110     },
111     MapEntry {
112         linux_keycode: 16,
113         xkb: 0x0018,
114         win: 0x0010,
115         mac: 0x000c,
116     },
117     MapEntry {
118         linux_keycode: 19,
119         xkb: 0x001b,
120         win: 0x0013,
121         mac: 0x000f,
122     },
123     MapEntry {
124         linux_keycode: 31,
125         xkb: 0x0027,
126         win: 0x001f,
127         mac: 0x0001,
128     },
129     MapEntry {
130         linux_keycode: 20,
131         xkb: 0x001c,
132         win: 0x0014,
133         mac: 0x0011,
134     },
135     MapEntry {
136         linux_keycode: 22,
137         xkb: 0x001e,
138         win: 0x0016,
139         mac: 0x0020,
140     },
141     MapEntry {
142         linux_keycode: 47,
143         xkb: 0x0037,
144         win: 0x002f,
145         mac: 0x0009,
146     },
147     MapEntry {
148         linux_keycode: 17,
149         xkb: 0x0019,
150         win: 0x0011,
151         mac: 0x000d,
152     },
153     MapEntry {
154         linux_keycode: 45,
155         xkb: 0x0035,
156         win: 0x002d,
157         mac: 0x0007,
158     },
159     MapEntry {
160         linux_keycode: 21,
161         xkb: 0x001d,
162         win: 0x0015,
163         mac: 0x0010,
164     },
165     MapEntry {
166         linux_keycode: 44,
167         xkb: 0x0034,
168         win: 0x002c,
169         mac: 0x0006,
170     },
171     MapEntry {
172         linux_keycode: 2,
173         xkb: 0x000a,
174         win: 0x0002,
175         mac: 0x0012,
176     },
177     MapEntry {
178         linux_keycode: 3,
179         xkb: 0x000b,
180         win: 0x0003,
181         mac: 0x0013,
182     },
183     MapEntry {
184         linux_keycode: 4,
185         xkb: 0x000c,
186         win: 0x0004,
187         mac: 0x0014,
188     },
189     MapEntry {
190         linux_keycode: 5,
191         xkb: 0x000d,
192         win: 0x0005,
193         mac: 0x0015,
194     },
195     MapEntry {
196         linux_keycode: 6,
197         xkb: 0x000e,
198         win: 0x0006,
199         mac: 0x0017,
200     },
201     MapEntry {
202         linux_keycode: 7,
203         xkb: 0x000f,
204         win: 0x0007,
205         mac: 0x0016,
206     },
207     MapEntry {
208         linux_keycode: 8,
209         xkb: 0x0010,
210         win: 0x0008,
211         mac: 0x001a,
212     },
213     MapEntry {
214         linux_keycode: 9,
215         xkb: 0x0011,
216         win: 0x0009,
217         mac: 0x001c,
218     },
219     MapEntry {
220         linux_keycode: 10,
221         xkb: 0x0012,
222         win: 0x000a,
223         mac: 0x0019,
224     },
225     MapEntry {
226         linux_keycode: 11,
227         xkb: 0x0013,
228         win: 0x000b,
229         mac: 0x001d,
230     },
231     MapEntry {
232         linux_keycode: 28,
233         xkb: 0x0024,
234         win: 0x001c,
235         mac: 0x0024,
236     },
237     MapEntry {
238         linux_keycode: 1,
239         xkb: 0x0009,
240         win: 0x0001,
241         mac: 0x0035,
242     },
243     MapEntry {
244         linux_keycode: 14,
245         xkb: 0x0016,
246         win: 0x000e,
247         mac: 0x0033,
248     },
249     MapEntry {
250         linux_keycode: 15,
251         xkb: 0x0017,
252         win: 0x000f,
253         mac: 0x0030,
254     },
255     MapEntry {
256         linux_keycode: 57,
257         xkb: 0x0041,
258         win: 0x0039,
259         mac: 0x0031,
260     },
261     MapEntry {
262         linux_keycode: 12,
263         xkb: 0x0014,
264         win: 0x000c,
265         mac: 0x001b,
266     },
267     MapEntry {
268         linux_keycode: 13,
269         xkb: 0x0015,
270         win: 0x000d,
271         mac: 0x0018,
272     },
273     MapEntry {
274         linux_keycode: 26,
275         xkb: 0x0022,
276         win: 0x001a,
277         mac: 0x0021,
278     },
279     MapEntry {
280         linux_keycode: 27,
281         xkb: 0x0023,
282         win: 0x001b,
283         mac: 0x001e,
284     },
285     MapEntry {
286         linux_keycode: 43,
287         xkb: 0x0033,
288         win: 0x002b,
289         mac: 0x002a,
290     },
291     MapEntry {
292         linux_keycode: 39,
293         xkb: 0x002f,
294         win: 0x0027,
295         mac: 0x0029,
296     },
297     MapEntry {
298         linux_keycode: 40,
299         xkb: 0x0030,
300         win: 0x0028,
301         mac: 0x0027,
302     },
303     MapEntry {
304         linux_keycode: 41,
305         xkb: 0x0031,
306         win: 0x0029,
307         mac: 0x0032,
308     },
309     MapEntry {
310         linux_keycode: 51,
311         xkb: 0x003b,
312         win: 0x0033,
313         mac: 0x002b,
314     },
315     MapEntry {
316         linux_keycode: 52,
317         xkb: 0x003c,
318         win: 0x0034,
319         mac: 0x002f,
320     },
321     MapEntry {
322         linux_keycode: 53,
323         xkb: 0x003d,
324         win: 0x0035,
325         mac: 0x002c,
326     },
327     MapEntry {
328         linux_keycode: 58,
329         xkb: 0x0042,
330         win: 0x003a,
331         mac: 0x0039,
332     },
333     MapEntry {
334         linux_keycode: 119,
335         xkb: 0x007f,
336         win: 0x0045,
337         mac: 0xffff,
338     },
339     MapEntry {
340         linux_keycode: 110,
341         xkb: 0x0076,
342         win: 0xe052,
343         mac: 0x0072,
344     },
345     MapEntry {
346         linux_keycode: 102,
347         xkb: 0x006e,
348         win: 0xe047,
349         mac: 0x0073,
350     },
351     MapEntry {
352         linux_keycode: 104,
353         xkb: 0x0070,
354         win: 0xe049,
355         mac: 0x0074,
356     },
357     MapEntry {
358         linux_keycode: 111,
359         xkb: 0x0077,
360         win: 0xe053,
361         mac: 0x0075,
362     },
363     MapEntry {
364         linux_keycode: 107,
365         xkb: 0x0073,
366         win: 0xe04f,
367         mac: 0x0077,
368     },
369     MapEntry {
370         linux_keycode: 109,
371         xkb: 0x0075,
372         win: 0xe051,
373         mac: 0x0079,
374     },
375     MapEntry {
376         linux_keycode: 106,
377         xkb: 0x0072,
378         win: 0xe04d,
379         mac: 0x007c,
380     },
381     MapEntry {
382         linux_keycode: 105,
383         xkb: 0x0071,
384         win: 0xe04b,
385         mac: 0x007b,
386     },
387     MapEntry {
388         linux_keycode: 108,
389         xkb: 0x0074,
390         win: 0xe050,
391         mac: 0x007d,
392     },
393     MapEntry {
394         linux_keycode: 103,
395         xkb: 0x006f,
396         win: 0xe048,
397         mac: 0x007e,
398     },
399     MapEntry {
400         linux_keycode: 69,
401         xkb: 0x004d,
402         win: 0xe045,
403         mac: 0x0047,
404     },
405     MapEntry {
406         linux_keycode: 98,
407         xkb: 0x006a,
408         win: 0xe035,
409         mac: 0x004b,
410     },
411     MapEntry {
412         linux_keycode: 78,
413         xkb: 0x0056,
414         win: 0x004e,
415         mac: 0x0045,
416     },
417     MapEntry {
418         linux_keycode: 28,
419         xkb: 0x0068,
420         win: 0xe01c,
421         mac: 0x004c,
422     },
423     MapEntry {
424         linux_keycode: 79,
425         xkb: 0x0057,
426         win: 0x004f,
427         mac: 0x0053,
428     },
429     MapEntry {
430         linux_keycode: 80,
431         xkb: 0x0058,
432         win: 0x0050,
433         mac: 0x0054,
434     },
435     MapEntry {
436         linux_keycode: 81,
437         xkb: 0x0059,
438         win: 0x0051,
439         mac: 0x0055,
440     },
441     MapEntry {
442         linux_keycode: 75,
443         xkb: 0x0053,
444         win: 0x004b,
445         mac: 0x0056,
446     },
447     MapEntry {
448         linux_keycode: 76,
449         xkb: 0x0054,
450         win: 0x004c,
451         mac: 0x0057,
452     },
453     MapEntry {
454         linux_keycode: 77,
455         xkb: 0x0055,
456         win: 0x004d,
457         mac: 0x0058,
458     },
459     MapEntry {
460         linux_keycode: 71,
461         xkb: 0x004f,
462         win: 0x0047,
463         mac: 0x0059,
464     },
465     MapEntry {
466         linux_keycode: 72,
467         xkb: 0x0050,
468         win: 0x0048,
469         mac: 0x005b,
470     },
471     MapEntry {
472         linux_keycode: 73,
473         xkb: 0x0051,
474         win: 0x0049,
475         mac: 0x005c,
476     },
477     MapEntry {
478         linux_keycode: 82,
479         xkb: 0x005a,
480         win: 0x0052,
481         mac: 0x0052,
482     },
483     MapEntry {
484         linux_keycode: 116,
485         xkb: 0x007c,
486         win: 0xe05e,
487         mac: 0xffff,
488     },
489     MapEntry {
490         linux_keycode: 121,
491         xkb: 0x0081,
492         win: 0x007e,
493         mac: 0x005f,
494     },
495     MapEntry {
496         linux_keycode: 29,
497         xkb: 0x0025,
498         win: 0x001d,
499         mac: 0x003b,
500     },
501     MapEntry {
502         linux_keycode: 42,
503         xkb: 0x0032,
504         win: 0x002a,
505         mac: 0x0038,
506     },
507     MapEntry {
508         linux_keycode: 56,
509         xkb: 0x0040,
510         win: 0x0038,
511         mac: 0x003a,
512     },
513     MapEntry {
514         linux_keycode: 125,
515         xkb: 0x0085,
516         win: 0xe05b,
517         mac: 0x0037,
518     },
519     MapEntry {
520         linux_keycode: 97,
521         xkb: 0x0069,
522         win: 0xe01d,
523         mac: 0x003e,
524     },
525     MapEntry {
526         linux_keycode: 54,
527         xkb: 0x003e,
528         win: 0x0036,
529         mac: 0x003c,
530     },
531     MapEntry {
532         linux_keycode: 100,
533         xkb: 0x006c,
534         win: 0xe038,
535         mac: 0x003d,
536     },
537     MapEntry {
538         linux_keycode: 126,
539         xkb: 0x0086,
540         win: 0xe05c,
541         mac: 0x0036,
542     },
543     MapEntry {
544         linux_keycode: 55,
545         xkb: 0x003f,
546         win: 0x0037,
547         mac: 0x0043,
548     },
549     MapEntry {
550         linux_keycode: 83,
551         xkb: 0x005b,
552         win: 0x0053,
553         mac: 0x0041,
554     },
555     MapEntry {
556         linux_keycode: 74,
557         xkb: 0x0052,
558         win: 0x004a,
559         mac: 0x004e,
560     },
561     MapEntry {
562         linux_keycode: 59,
563         xkb: 0x0043,
564         win: 0x003b,
565         mac: 0x007a,
566     },
567     MapEntry {
568         linux_keycode: 60,
569         xkb: 0x0044,
570         win: 0x003c,
571         mac: 0x0078,
572     },
573     MapEntry {
574         linux_keycode: 61,
575         xkb: 0x0045,
576         win: 0x003d,
577         mac: 0x0063,
578     },
579     MapEntry {
580         linux_keycode: 62,
581         xkb: 0x0046,
582         win: 0x003e,
583         mac: 0x0076,
584     },
585     MapEntry {
586         linux_keycode: 63,
587         xkb: 0x0047,
588         win: 0x003f,
589         mac: 0x0060,
590     },
591     MapEntry {
592         linux_keycode: 64,
593         xkb: 0x0048,
594         win: 0x0040,
595         mac: 0x0061,
596     },
597     MapEntry {
598         linux_keycode: 65,
599         xkb: 0x0049,
600         win: 0x0041,
601         mac: 0x0062,
602     },
603     MapEntry {
604         linux_keycode: 66,
605         xkb: 0x004a,
606         win: 0x0042,
607         mac: 0x0064,
608     },
609     MapEntry {
610         linux_keycode: 67,
611         xkb: 0x004b,
612         win: 0x0043,
613         mac: 0x0065,
614     },
615     MapEntry {
616         linux_keycode: 68,
617         xkb: 0x004c,
618         win: 0x0044,
619         mac: 0x006d,
620     },
621     MapEntry {
622         linux_keycode: 87,
623         xkb: 0x005f,
624         win: 0x0057,
625         mac: 0x0067,
626     },
627     MapEntry {
628         linux_keycode: 88,
629         xkb: 0x0060,
630         win: 0x0058,
631         mac: 0x006f,
632     },
633     MapEntry {
634         linux_keycode: 117,
635         xkb: 0x007d,
636         win: 0x0059,
637         mac: 0x0051,
638     },
639 ];
640