hc
2024-03-22 a0752693d998599af469473b8dc239ef973a012f
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
/*
 * Input event codes
 *
 *    *** IMPORTANT ***
 * This file is not only included from C-code but also from devicetree source
 * files. As such this file MUST only contain comments and defines.
 *
 * Copyright (c) 1999-2002 Vojtech Pavlik
 * Copyright (c) 2015 Hans de Goede <hdegoede@redhat.com>
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 as published by
 * the Free Software Foundation.
 */
#ifndef _UAPI_INPUT_EVENT_CODES_H
#define _UAPI_INPUT_EVENT_CODES_H
 
/*
 * Device properties and quirks
 */
 
#define INPUT_PROP_POINTER        0x00    /* needs a pointer */
#define INPUT_PROP_DIRECT        0x01    /* direct input devices */
#define INPUT_PROP_BUTTONPAD        0x02    /* has button(s) under pad */
#define INPUT_PROP_SEMI_MT        0x03    /* touch rectangle only */
#define INPUT_PROP_TOPBUTTONPAD        0x04    /* softbuttons at top of pad */
#define INPUT_PROP_POINTING_STICK    0x05    /* is a pointing stick */
#define INPUT_PROP_ACCELEROMETER    0x06    /* has accelerometer */
 
#define INPUT_PROP_MAX            0x1f
#define INPUT_PROP_CNT            (INPUT_PROP_MAX + 1)
 
/*
 * Event types
 */
 
#define EV_SYN            0x00
#define EV_KEY            0x01
#define EV_REL            0x02
#define EV_ABS            0x03
#define EV_MSC            0x04
#define EV_SW            0x05
#define EV_LED            0x11
#define EV_SND            0x12
#define EV_REP            0x14
#define EV_FF            0x15
#define EV_PWR            0x16
#define EV_FF_STATUS        0x17
#define EV_MAX            0x1f
#define EV_CNT            (EV_MAX+1)
 
/*
 * Synchronization events.
 */
 
#define SYN_REPORT        0
#define SYN_CONFIG        1
#define SYN_MT_REPORT        2
#define SYN_DROPPED        3
#define SYN_MAX            0xf
#define SYN_CNT            (SYN_MAX+1)
 
/*
 * Keys and buttons
 *
 * Most of the keys/buttons are modeled after USB HUT 1.12
 * (see http://www.usb.org/developers/hidpage).
 * Abbreviations in the comments:
 * AC - Application Control
 * AL - Application Launch Button
 * SC - System Control
 */
 
#define KEY_RESERVED        0
#define KEY_ESC            1
#define KEY_1            2
#define KEY_2            3
#define KEY_3            4
#define KEY_4            5
#define KEY_5            6
#define KEY_6            7
#define KEY_7            8
#define KEY_8            9
#define KEY_9            10
#define KEY_0            11
#define KEY_MINUS        12
#define KEY_EQUAL        13
#define KEY_BACKSPACE        14
#define KEY_TAB            15
#define KEY_Q            16
#define KEY_W            17
#define KEY_E            18
#define KEY_R            19
#define KEY_T            20
#define KEY_Y            21
#define KEY_U            22
#define KEY_I            23
#define KEY_O            24
#define KEY_P            25
#define KEY_LEFTBRACE        26
#define KEY_RIGHTBRACE        27
#define KEY_ENTER        28
#define KEY_LEFTCTRL        29
#define KEY_A            30
#define KEY_S            31
#define KEY_D            32
#define KEY_F            33
#define KEY_G            34
#define KEY_H            35
#define KEY_J            36
#define KEY_K            37
#define KEY_L            38
#define KEY_SEMICOLON        39
#define KEY_APOSTROPHE        40
#define KEY_GRAVE        41
#define KEY_LEFTSHIFT        42
#define KEY_BACKSLASH        43
#define KEY_Z            44
#define KEY_X            45
#define KEY_C            46
#define KEY_V            47
#define KEY_B            48
#define KEY_N            49
#define KEY_M            50
#define KEY_COMMA        51
#define KEY_DOT            52
#define KEY_SLASH        53
#define KEY_RIGHTSHIFT        54
#define KEY_KPASTERISK        55
#define KEY_LEFTALT        56
#define KEY_SPACE        57
#define KEY_CAPSLOCK        58
#define KEY_F1            59
#define KEY_F2            60
#define KEY_F3            61
#define KEY_F4            62
#define KEY_F5            63
#define KEY_F6            64
#define KEY_F7            65
#define KEY_F8            66
#define KEY_F9            67
#define KEY_F10            68
#define KEY_NUMLOCK        69
#define KEY_SCROLLLOCK        70
#define KEY_KP7            71
#define KEY_KP8            72
#define KEY_KP9            73
#define KEY_KPMINUS        74
#define KEY_KP4            75
#define KEY_KP5            76
#define KEY_KP6            77
#define KEY_KPPLUS        78
#define KEY_KP1            79
#define KEY_KP2            80
#define KEY_KP3            81
#define KEY_KP0            82
#define KEY_KPDOT        83
 
#define KEY_ZENKAKUHANKAKU    85
#define KEY_102ND        86
#define KEY_F11            87
#define KEY_F12            88
#define KEY_RO            89
#define KEY_KATAKANA        90
#define KEY_HIRAGANA        91
#define KEY_HENKAN        92
#define KEY_KATAKANAHIRAGANA    93
#define KEY_MUHENKAN        94
#define KEY_KPJPCOMMA        95
#define KEY_KPENTER        96
#define KEY_RIGHTCTRL        97
#define KEY_KPSLASH        98
#define KEY_SYSRQ        99
#define KEY_RIGHTALT        100
#define KEY_LINEFEED        101
#define KEY_HOME        102
#define KEY_UP            103
#define KEY_PAGEUP        104
#define KEY_LEFT        105
#define KEY_RIGHT        106
#define KEY_END            107
#define KEY_DOWN        108
#define KEY_PAGEDOWN        109
#define KEY_INSERT        110
#define KEY_DELETE        111
#define KEY_MACRO        112
#define KEY_MUTE        113
#define KEY_VOLUMEDOWN        114
#define KEY_VOLUMEUP        115
#define KEY_POWER        116    /* SC System Power Down */
#define KEY_KPEQUAL        117
#define KEY_KPPLUSMINUS        118
#define KEY_PAUSE        119
#define KEY_SCALE        120    /* AL Compiz Scale (Expose) */
 
#define KEY_KPCOMMA        121
#define KEY_HANGEUL        122
#define KEY_HANGUEL        KEY_HANGEUL
#define KEY_HANJA        123
#define KEY_YEN            124
#define KEY_LEFTMETA        125
#define KEY_RIGHTMETA        126
#define KEY_COMPOSE        127
 
#define KEY_STOP        128    /* AC Stop */
#define KEY_AGAIN        129
#define KEY_PROPS        130    /* AC Properties */
#define KEY_UNDO        131    /* AC Undo */
#define KEY_FRONT        132
#define KEY_COPY        133    /* AC Copy */
#define KEY_OPEN        134    /* AC Open */
#define KEY_PASTE        135    /* AC Paste */
#define KEY_FIND        136    /* AC Search */
#define KEY_CUT            137    /* AC Cut */
#define KEY_HELP        138    /* AL Integrated Help Center */
#define KEY_MENU        139    /* Menu (show menu) */
#define KEY_CALC        140    /* AL Calculator */
#define KEY_SETUP        141
#define KEY_SLEEP        142    /* SC System Sleep */
#define KEY_WAKEUP        143    /* System Wake Up */
#define KEY_FILE        144    /* AL Local Machine Browser */
#define KEY_SENDFILE        145
#define KEY_DELETEFILE        146
#define KEY_XFER        147
#define KEY_PROG1        148
#define KEY_PROG2        149
#define KEY_WWW            150    /* AL Internet Browser */
#define KEY_MSDOS        151
#define KEY_COFFEE        152    /* AL Terminal Lock/Screensaver */
#define KEY_SCREENLOCK        KEY_COFFEE
#define KEY_ROTATE_DISPLAY    153    /* Display orientation for e.g. tablets */
#define KEY_DIRECTION        KEY_ROTATE_DISPLAY
#define KEY_CYCLEWINDOWS    154
#define KEY_MAIL        155
#define KEY_BOOKMARKS        156    /* AC Bookmarks */
#define KEY_COMPUTER        157
#define KEY_BACK        158    /* AC Back */
#define KEY_FORWARD        159    /* AC Forward */
#define KEY_CLOSECD        160
#define KEY_EJECTCD        161
#define KEY_EJECTCLOSECD    162
#define KEY_NEXTSONG        163
#define KEY_PLAYPAUSE        164
#define KEY_PREVIOUSSONG    165
#define KEY_STOPCD        166
#define KEY_RECORD        167
#define KEY_REWIND        168
#define KEY_PHONE        169    /* Media Select Telephone */
#define KEY_ISO            170
#define KEY_CONFIG        171    /* AL Consumer Control Configuration */
#define KEY_HOMEPAGE        172    /* AC Home */
#define KEY_REFRESH        173    /* AC Refresh */
#define KEY_EXIT        174    /* AC Exit */
#define KEY_MOVE        175
#define KEY_EDIT        176
#define KEY_SCROLLUP        177
#define KEY_SCROLLDOWN        178
#define KEY_KPLEFTPAREN        179
#define KEY_KPRIGHTPAREN    180
#define KEY_NEW            181    /* AC New */
#define KEY_REDO        182    /* AC Redo/Repeat */
 
#define KEY_F13            183
#define KEY_F14            184
#define KEY_F15            185
#define KEY_F16            186
#define KEY_F17            187
#define KEY_F18            188
#define KEY_F19            189
#define KEY_F20            190
#define KEY_F21            191
#define KEY_F22            192
#define KEY_F23            193
#define KEY_F24            194
 
#define KEY_PLAYCD        200
#define KEY_PAUSECD        201
#define KEY_PROG3        202
#define KEY_PROG4        203
#define KEY_ALL_APPLICATIONS    204    /* AC Desktop Show All Applications */
#define KEY_DASHBOARD        KEY_ALL_APPLICATIONS
#define KEY_SUSPEND        205
#define KEY_CLOSE        206    /* AC Close */
#define KEY_PLAY        207
#define KEY_FASTFORWARD        208
#define KEY_BASSBOOST        209
#define KEY_PRINT        210    /* AC Print */
#define KEY_HP            211
#define KEY_CAMERA        212
#define KEY_SOUND        213
#define KEY_QUESTION        214
#define KEY_EMAIL        215
#define KEY_CHAT        216
#define KEY_SEARCH        217
#define KEY_CONNECT        218
#define KEY_FINANCE        219    /* AL Checkbook/Finance */
#define KEY_SPORT        220
#define KEY_SHOP        221
#define KEY_ALTERASE        222
#define KEY_CANCEL        223    /* AC Cancel */
#define KEY_BRIGHTNESSDOWN    224
#define KEY_BRIGHTNESSUP    225
#define KEY_MEDIA        226
 
#define KEY_SWITCHVIDEOMODE    227    /* Cycle between available video
                      outputs (Monitor/LCD/TV-out/etc) */
#define KEY_KBDILLUMTOGGLE    228
#define KEY_KBDILLUMDOWN    229
#define KEY_KBDILLUMUP        230
 
#define KEY_SEND        231    /* AC Send */
#define KEY_REPLY        232    /* AC Reply */
#define KEY_FORWARDMAIL        233    /* AC Forward Msg */
#define KEY_SAVE        234    /* AC Save */
#define KEY_DOCUMENTS        235
 
#define KEY_BATTERY        236
 
#define KEY_BLUETOOTH        237
#define KEY_WLAN        238
#define KEY_UWB            239
 
#define KEY_UNKNOWN        240
 
#define KEY_VIDEO_NEXT        241    /* drive next video source */
#define KEY_VIDEO_PREV        242    /* drive previous video source */
#define KEY_BRIGHTNESS_CYCLE    243    /* brightness up, after max is min */
#define KEY_BRIGHTNESS_AUTO    244    /* Set Auto Brightness: manual
                     brightness control is off,
                     rely on ambient */
#define KEY_BRIGHTNESS_ZERO    KEY_BRIGHTNESS_AUTO
#define KEY_DISPLAY_OFF        245    /* display device to off state */
 
#define KEY_WWAN        246    /* Wireless WAN (LTE, UMTS, GSM, etc.) */
#define KEY_WIMAX        KEY_WWAN
#define KEY_RFKILL        247    /* Key that controls all radios */
 
#define KEY_MICMUTE        248    /* Mute / unmute the microphone */
 
/* Code 255 is reserved for special needs of AT keyboard driver */
 
#define BTN_MISC        0x100
#define BTN_0            0x100
#define BTN_1            0x101
#define BTN_2            0x102
#define BTN_3            0x103
#define BTN_4            0x104
#define BTN_5            0x105
#define BTN_6            0x106
#define BTN_7            0x107
#define BTN_8            0x108
#define BTN_9            0x109
 
#define BTN_MOUSE        0x110
#define BTN_LEFT        0x110
#define BTN_RIGHT        0x111
#define BTN_MIDDLE        0x112
#define BTN_SIDE        0x113
#define BTN_EXTRA        0x114
#define BTN_FORWARD        0x115
#define BTN_BACK        0x116
#define BTN_TASK        0x117
 
#define BTN_JOYSTICK        0x120
#define BTN_TRIGGER        0x120
#define BTN_THUMB        0x121
#define BTN_THUMB2        0x122
#define BTN_TOP            0x123
#define BTN_TOP2        0x124
#define BTN_PINKIE        0x125
#define BTN_BASE        0x126
#define BTN_BASE2        0x127
#define BTN_BASE3        0x128
#define BTN_BASE4        0x129
#define BTN_BASE5        0x12a
#define BTN_BASE6        0x12b
#define BTN_DEAD        0x12f
 
#define BTN_GAMEPAD        0x130
#define BTN_SOUTH        0x130
#define BTN_A            BTN_SOUTH
#define BTN_EAST        0x131
#define BTN_B            BTN_EAST
#define BTN_C            0x132
#define BTN_NORTH        0x133
#define BTN_X            BTN_NORTH
#define BTN_WEST        0x134
#define BTN_Y            BTN_WEST
#define BTN_Z            0x135
#define BTN_TL            0x136
#define BTN_TR            0x137
#define BTN_TL2            0x138
#define BTN_TR2            0x139
#define BTN_SELECT        0x13a
#define BTN_START        0x13b
#define BTN_MODE        0x13c
#define BTN_THUMBL        0x13d
#define BTN_THUMBR        0x13e
 
#define BTN_DIGI        0x140
#define BTN_TOOL_PEN        0x140
#define BTN_TOOL_RUBBER        0x141
#define BTN_TOOL_BRUSH        0x142
#define BTN_TOOL_PENCIL        0x143
#define BTN_TOOL_AIRBRUSH    0x144
#define BTN_TOOL_FINGER        0x145
#define BTN_TOOL_MOUSE        0x146
#define BTN_TOOL_LENS        0x147
#define BTN_TOOL_QUINTTAP    0x148    /* Five fingers on trackpad */
#define BTN_STYLUS3        0x149
#define BTN_TOUCH        0x14a
#define BTN_STYLUS        0x14b
#define BTN_STYLUS2        0x14c
#define BTN_TOOL_DOUBLETAP    0x14d
#define BTN_TOOL_TRIPLETAP    0x14e
#define BTN_TOOL_QUADTAP    0x14f    /* Four fingers on trackpad */
 
#define BTN_WHEEL        0x150
#define BTN_GEAR_DOWN        0x150
#define BTN_GEAR_UP        0x151
 
#define KEY_OK            0x160
#define KEY_SELECT        0x161
#define KEY_GOTO        0x162
#define KEY_CLEAR        0x163
#define KEY_POWER2        0x164
#define KEY_OPTION        0x165
#define KEY_INFO        0x166    /* AL OEM Features/Tips/Tutorial */
#define KEY_TIME        0x167
#define KEY_VENDOR        0x168
#define KEY_ARCHIVE        0x169
#define KEY_PROGRAM        0x16a    /* Media Select Program Guide */
#define KEY_CHANNEL        0x16b
#define KEY_FAVORITES        0x16c
#define KEY_EPG            0x16d
#define KEY_PVR            0x16e    /* Media Select Home */
#define KEY_MHP            0x16f
#define KEY_LANGUAGE        0x170
#define KEY_TITLE        0x171
#define KEY_SUBTITLE        0x172
#define KEY_ANGLE        0x173
#define KEY_FULL_SCREEN        0x174    /* AC View Toggle */
#define KEY_ZOOM        KEY_FULL_SCREEN
#define KEY_MODE        0x175
#define KEY_KEYBOARD        0x176
#define KEY_ASPECT_RATIO    0x177    /* HUTRR37: Aspect */
#define KEY_SCREEN        KEY_ASPECT_RATIO
#define KEY_PC            0x178    /* Media Select Computer */
#define KEY_TV            0x179    /* Media Select TV */
#define KEY_TV2            0x17a    /* Media Select Cable */
#define KEY_VCR            0x17b    /* Media Select VCR */
#define KEY_VCR2        0x17c    /* VCR Plus */
#define KEY_SAT            0x17d    /* Media Select Satellite */
#define KEY_SAT2        0x17e
#define KEY_CD            0x17f    /* Media Select CD */
#define KEY_TAPE        0x180    /* Media Select Tape */
#define KEY_RADIO        0x181
#define KEY_TUNER        0x182    /* Media Select Tuner */
#define KEY_PLAYER        0x183
#define KEY_TEXT        0x184
#define KEY_DVD            0x185    /* Media Select DVD */
#define KEY_AUX            0x186
#define KEY_MP3            0x187
#define KEY_AUDIO        0x188    /* AL Audio Browser */
#define KEY_VIDEO        0x189    /* AL Movie Browser */
#define KEY_DIRECTORY        0x18a
#define KEY_LIST        0x18b
#define KEY_MEMO        0x18c    /* Media Select Messages */
#define KEY_CALENDAR        0x18d
#define KEY_RED            0x18e
#define KEY_GREEN        0x18f
#define KEY_YELLOW        0x190
#define KEY_BLUE        0x191
#define KEY_CHANNELUP        0x192    /* Channel Increment */
#define KEY_CHANNELDOWN        0x193    /* Channel Decrement */
#define KEY_FIRST        0x194
#define KEY_LAST        0x195    /* Recall Last */
#define KEY_AB            0x196
#define KEY_NEXT        0x197
#define KEY_RESTART        0x198
#define KEY_SLOW        0x199
#define KEY_SHUFFLE        0x19a
#define KEY_BREAK        0x19b
#define KEY_PREVIOUS        0x19c
#define KEY_DIGITS        0x19d
#define KEY_TEEN        0x19e
#define KEY_TWEN        0x19f
#define KEY_VIDEOPHONE        0x1a0    /* Media Select Video Phone */
#define KEY_GAMES        0x1a1    /* Media Select Games */
#define KEY_ZOOMIN        0x1a2    /* AC Zoom In */
#define KEY_ZOOMOUT        0x1a3    /* AC Zoom Out */
#define KEY_ZOOMRESET        0x1a4    /* AC Zoom */
#define KEY_WORDPROCESSOR    0x1a5    /* AL Word Processor */
#define KEY_EDITOR        0x1a6    /* AL Text Editor */
#define KEY_SPREADSHEET        0x1a7    /* AL Spreadsheet */
#define KEY_GRAPHICSEDITOR    0x1a8    /* AL Graphics Editor */
#define KEY_PRESENTATION    0x1a9    /* AL Presentation App */
#define KEY_DATABASE        0x1aa    /* AL Database App */
#define KEY_NEWS        0x1ab    /* AL Newsreader */
#define KEY_VOICEMAIL        0x1ac    /* AL Voicemail */
#define KEY_ADDRESSBOOK        0x1ad    /* AL Contacts/Address Book */
#define KEY_MESSENGER        0x1ae    /* AL Instant Messaging */
#define KEY_DISPLAYTOGGLE    0x1af    /* Turn display (LCD) on and off */
#define KEY_BRIGHTNESS_TOGGLE    KEY_DISPLAYTOGGLE
#define KEY_SPELLCHECK        0x1b0   /* AL Spell Check */
#define KEY_LOGOFF        0x1b1   /* AL Logoff */
 
#define KEY_DOLLAR        0x1b2
#define KEY_EURO        0x1b3
 
#define KEY_FRAMEBACK        0x1b4    /* Consumer - transport controls */
#define KEY_FRAMEFORWARD    0x1b5
#define KEY_CONTEXT_MENU    0x1b6    /* GenDesc - system context menu */
#define KEY_MEDIA_REPEAT    0x1b7    /* Consumer - transport control */
#define KEY_10CHANNELSUP    0x1b8    /* 10 channels up (10+) */
#define KEY_10CHANNELSDOWN    0x1b9    /* 10 channels down (10-) */
#define KEY_IMAGES        0x1ba    /* AL Image Browser */
#define KEY_NOTIFICATION_CENTER    0x1bc    /* Show/hide the notification center */
#define KEY_PICKUP_PHONE    0x1bd    /* Answer incoming call */
#define KEY_HANGUP_PHONE    0x1be    /* Decline incoming call */
 
#define KEY_DEL_EOL        0x1c0
#define KEY_DEL_EOS        0x1c1
#define KEY_INS_LINE        0x1c2
#define KEY_DEL_LINE        0x1c3
 
#define KEY_FN            0x1d0
#define KEY_FN_ESC        0x1d1
#define KEY_FN_F1        0x1d2
#define KEY_FN_F2        0x1d3
#define KEY_FN_F3        0x1d4
#define KEY_FN_F4        0x1d5
#define KEY_FN_F5        0x1d6
#define KEY_FN_F6        0x1d7
#define KEY_FN_F7        0x1d8
#define KEY_FN_F8        0x1d9
#define KEY_FN_F9        0x1da
#define KEY_FN_F10        0x1db
#define KEY_FN_F11        0x1dc
#define KEY_FN_F12        0x1dd
#define KEY_FN_1        0x1de
#define KEY_FN_2        0x1df
#define KEY_FN_D        0x1e0
#define KEY_FN_E        0x1e1
#define KEY_FN_F        0x1e2
#define KEY_FN_S        0x1e3
#define KEY_FN_B        0x1e4
#define KEY_FN_RIGHT_SHIFT    0x1e5
 
#define KEY_BRL_DOT1        0x1f1
#define KEY_BRL_DOT2        0x1f2
#define KEY_BRL_DOT3        0x1f3
#define KEY_BRL_DOT4        0x1f4
#define KEY_BRL_DOT5        0x1f5
#define KEY_BRL_DOT6        0x1f6
#define KEY_BRL_DOT7        0x1f7
#define KEY_BRL_DOT8        0x1f8
#define KEY_BRL_DOT9        0x1f9
#define KEY_BRL_DOT10        0x1fa
 
#define KEY_NUMERIC_0        0x200    /* used by phones, remote controls, */
#define KEY_NUMERIC_1        0x201    /* and other keypads */
#define KEY_NUMERIC_2        0x202
#define KEY_NUMERIC_3        0x203
#define KEY_NUMERIC_4        0x204
#define KEY_NUMERIC_5        0x205
#define KEY_NUMERIC_6        0x206
#define KEY_NUMERIC_7        0x207
#define KEY_NUMERIC_8        0x208
#define KEY_NUMERIC_9        0x209
#define KEY_NUMERIC_STAR    0x20a
#define KEY_NUMERIC_POUND    0x20b
#define KEY_NUMERIC_A        0x20c    /* Phone key A - HUT Telephony 0xb9 */
#define KEY_NUMERIC_B        0x20d
#define KEY_NUMERIC_C        0x20e
#define KEY_NUMERIC_D        0x20f
 
#define KEY_CAMERA_FOCUS    0x210
#define KEY_WPS_BUTTON        0x211    /* WiFi Protected Setup key */
 
#define KEY_TOUCHPAD_TOGGLE    0x212    /* Request switch touchpad on or off */
#define KEY_TOUCHPAD_ON        0x213
#define KEY_TOUCHPAD_OFF    0x214
 
#define KEY_CAMERA_ZOOMIN    0x215
#define KEY_CAMERA_ZOOMOUT    0x216
#define KEY_CAMERA_UP        0x217
#define KEY_CAMERA_DOWN        0x218
#define KEY_CAMERA_LEFT        0x219
#define KEY_CAMERA_RIGHT    0x21a
 
#define KEY_ATTENDANT_ON    0x21b
#define KEY_ATTENDANT_OFF    0x21c
#define KEY_ATTENDANT_TOGGLE    0x21d    /* Attendant call on or off */
#define KEY_LIGHTS_TOGGLE    0x21e    /* Reading light on or off */
 
#define BTN_DPAD_UP        0x220
#define BTN_DPAD_DOWN        0x221
#define BTN_DPAD_LEFT        0x222
#define BTN_DPAD_RIGHT        0x223
 
#define KEY_ALS_TOGGLE        0x230    /* Ambient light sensor */
#define KEY_ROTATE_LOCK_TOGGLE    0x231    /* Display rotation lock */
 
#define KEY_BUTTONCONFIG        0x240    /* AL Button Configuration */
#define KEY_TASKMANAGER        0x241    /* AL Task/Project Manager */
#define KEY_JOURNAL        0x242    /* AL Log/Journal/Timecard */
#define KEY_CONTROLPANEL        0x243    /* AL Control Panel */
#define KEY_APPSELECT        0x244    /* AL Select Task/Application */
#define KEY_SCREENSAVER        0x245    /* AL Screen Saver */
#define KEY_VOICECOMMAND        0x246    /* Listening Voice Command */
#define KEY_ASSISTANT        0x247    /* AL Context-aware desktop assistant */
#define KEY_KBD_LAYOUT_NEXT    0x248    /* AC Next Keyboard Layout Select */
#define KEY_EMOJI_PICKER    0x249    /* Show/hide emoji picker (HUTRR101) */
#define KEY_DICTATE        0x24a    /* Start or Stop Voice Dictation Session (HUTRR99) */
 
#define KEY_BRIGHTNESS_MIN        0x250    /* Set Brightness to Minimum */
#define KEY_BRIGHTNESS_MAX        0x251    /* Set Brightness to Maximum */
 
#define KEY_KBDINPUTASSIST_PREV        0x260
#define KEY_KBDINPUTASSIST_NEXT        0x261
#define KEY_KBDINPUTASSIST_PREVGROUP        0x262
#define KEY_KBDINPUTASSIST_NEXTGROUP        0x263
#define KEY_KBDINPUTASSIST_ACCEPT        0x264
#define KEY_KBDINPUTASSIST_CANCEL        0x265
 
/* Diagonal movement keys */
#define KEY_RIGHT_UP            0x266
#define KEY_RIGHT_DOWN            0x267
#define KEY_LEFT_UP            0x268
#define KEY_LEFT_DOWN            0x269
 
#define KEY_ROOT_MENU            0x26a /* Show Device's Root Menu */
/* Show Top Menu of the Media (e.g. DVD) */
#define KEY_MEDIA_TOP_MENU        0x26b
#define KEY_NUMERIC_11            0x26c
#define KEY_NUMERIC_12            0x26d
/*
 * Toggle Audio Description: refers to an audio service that helps blind and
 * visually impaired consumers understand the action in a program. Note: in
 * some countries this is referred to as "Video Description".
 */
#define KEY_AUDIO_DESC            0x26e
#define KEY_3D_MODE            0x26f
#define KEY_NEXT_FAVORITE        0x270
#define KEY_STOP_RECORD            0x271
#define KEY_PAUSE_RECORD        0x272
#define KEY_VOD                0x273 /* Video on Demand */
#define KEY_UNMUTE            0x274
#define KEY_FASTREVERSE            0x275
#define KEY_SLOWREVERSE            0x276
/*
 * Control a data application associated with the currently viewed channel,
 * e.g. teletext or data broadcast application (MHEG, MHP, HbbTV, etc.)
 */
#define KEY_DATA            0x277
#define KEY_ONSCREEN_KEYBOARD        0x278
/* Electronic privacy screen control */
#define KEY_PRIVACY_SCREEN_TOGGLE    0x279
 
/* Select an area of screen to be copied */
#define KEY_SELECTIVE_SCREENSHOT    0x27a
 
/*
 * Some keyboards have keys which do not have a defined meaning, these keys
 * are intended to be programmed / bound to macros by the user. For most
 * keyboards with these macro-keys the key-sequence to inject, or action to
 * take, is all handled by software on the host side. So from the kernel's
 * point of view these are just normal keys.
 *
 * The KEY_MACRO# codes below are intended for such keys, which may be labeled
 * e.g. G1-G18, or S1 - S30. The KEY_MACRO# codes MUST NOT be used for keys
 * where the marking on the key does indicate a defined meaning / purpose.
 *
 * The KEY_MACRO# codes MUST also NOT be used as fallback for when no existing
 * KEY_FOO define matches the marking / purpose. In this case a new KEY_FOO
 * define MUST be added.
 */
#define KEY_MACRO1            0x290
#define KEY_MACRO2            0x291
#define KEY_MACRO3            0x292
#define KEY_MACRO4            0x293
#define KEY_MACRO5            0x294
#define KEY_MACRO6            0x295
#define KEY_MACRO7            0x296
#define KEY_MACRO8            0x297
#define KEY_MACRO9            0x298
#define KEY_MACRO10            0x299
#define KEY_MACRO11            0x29a
#define KEY_MACRO12            0x29b
#define KEY_MACRO13            0x29c
#define KEY_MACRO14            0x29d
#define KEY_MACRO15            0x29e
#define KEY_MACRO16            0x29f
#define KEY_MACRO17            0x2a0
#define KEY_MACRO18            0x2a1
#define KEY_MACRO19            0x2a2
#define KEY_MACRO20            0x2a3
#define KEY_MACRO21            0x2a4
#define KEY_MACRO22            0x2a5
#define KEY_MACRO23            0x2a6
#define KEY_MACRO24            0x2a7
#define KEY_MACRO25            0x2a8
#define KEY_MACRO26            0x2a9
#define KEY_MACRO27            0x2aa
#define KEY_MACRO28            0x2ab
#define KEY_MACRO29            0x2ac
#define KEY_MACRO30            0x2ad
 
/*
 * Some keyboards with the macro-keys described above have some extra keys
 * for controlling the host-side software responsible for the macro handling:
 * -A macro recording start/stop key. Note that not all keyboards which emit
 *  KEY_MACRO_RECORD_START will also emit KEY_MACRO_RECORD_STOP if
 *  KEY_MACRO_RECORD_STOP is not advertised, then KEY_MACRO_RECORD_START
 *  should be interpreted as a recording start/stop toggle;
 * -Keys for switching between different macro (pre)sets, either a key for
 *  cycling through the configured presets or keys to directly select a preset.
 */
#define KEY_MACRO_RECORD_START        0x2b0
#define KEY_MACRO_RECORD_STOP        0x2b1
#define KEY_MACRO_PRESET_CYCLE        0x2b2
#define KEY_MACRO_PRESET1        0x2b3
#define KEY_MACRO_PRESET2        0x2b4
#define KEY_MACRO_PRESET3        0x2b5
 
/*
 * Some keyboards have a buildin LCD panel where the contents are controlled
 * by the host. Often these have a number of keys directly below the LCD
 * intended for controlling a menu shown on the LCD. These keys often don't
 * have any labeling so we just name them KEY_KBD_LCD_MENU#
 */
#define KEY_KBD_LCD_MENU1        0x2b8
#define KEY_KBD_LCD_MENU2        0x2b9
#define KEY_KBD_LCD_MENU3        0x2ba
#define KEY_KBD_LCD_MENU4        0x2bb
#define KEY_KBD_LCD_MENU5        0x2bc
 
#define BTN_TRIGGER_HAPPY        0x2c0
#define BTN_TRIGGER_HAPPY1        0x2c0
#define BTN_TRIGGER_HAPPY2        0x2c1
#define BTN_TRIGGER_HAPPY3        0x2c2
#define BTN_TRIGGER_HAPPY4        0x2c3
#define BTN_TRIGGER_HAPPY5        0x2c4
#define BTN_TRIGGER_HAPPY6        0x2c5
#define BTN_TRIGGER_HAPPY7        0x2c6
#define BTN_TRIGGER_HAPPY8        0x2c7
#define BTN_TRIGGER_HAPPY9        0x2c8
#define BTN_TRIGGER_HAPPY10        0x2c9
#define BTN_TRIGGER_HAPPY11        0x2ca
#define BTN_TRIGGER_HAPPY12        0x2cb
#define BTN_TRIGGER_HAPPY13        0x2cc
#define BTN_TRIGGER_HAPPY14        0x2cd
#define BTN_TRIGGER_HAPPY15        0x2ce
#define BTN_TRIGGER_HAPPY16        0x2cf
#define BTN_TRIGGER_HAPPY17        0x2d0
#define BTN_TRIGGER_HAPPY18        0x2d1
#define BTN_TRIGGER_HAPPY19        0x2d2
#define BTN_TRIGGER_HAPPY20        0x2d3
#define BTN_TRIGGER_HAPPY21        0x2d4
#define BTN_TRIGGER_HAPPY22        0x2d5
#define BTN_TRIGGER_HAPPY23        0x2d6
#define BTN_TRIGGER_HAPPY24        0x2d7
#define BTN_TRIGGER_HAPPY25        0x2d8
#define BTN_TRIGGER_HAPPY26        0x2d9
#define BTN_TRIGGER_HAPPY27        0x2da
#define BTN_TRIGGER_HAPPY28        0x2db
#define BTN_TRIGGER_HAPPY29        0x2dc
#define BTN_TRIGGER_HAPPY30        0x2dd
#define BTN_TRIGGER_HAPPY31        0x2de
#define BTN_TRIGGER_HAPPY32        0x2df
#define BTN_TRIGGER_HAPPY33        0x2e0
#define BTN_TRIGGER_HAPPY34        0x2e1
#define BTN_TRIGGER_HAPPY35        0x2e2
#define BTN_TRIGGER_HAPPY36        0x2e3
#define BTN_TRIGGER_HAPPY37        0x2e4
#define BTN_TRIGGER_HAPPY38        0x2e5
#define BTN_TRIGGER_HAPPY39        0x2e6
#define BTN_TRIGGER_HAPPY40        0x2e7
 
/* We avoid low common keys in module aliases so they don't get huge. */
#define KEY_MIN_INTERESTING    KEY_MUTE
#define KEY_MAX            0x2ff
#define KEY_CNT            (KEY_MAX+1)
 
/*
 * Relative axes
 */
 
#define REL_X            0x00
#define REL_Y            0x01
#define REL_Z            0x02
#define REL_RX            0x03
#define REL_RY            0x04
#define REL_RZ            0x05
#define REL_HWHEEL        0x06
#define REL_DIAL        0x07
#define REL_WHEEL        0x08
#define REL_MISC        0x09
/*
 * 0x0a is reserved and should not be used in input drivers.
 * It was used by HID as REL_MISC+1 and userspace needs to detect if
 * the next REL_* event is correct or is just REL_MISC + n.
 * We define here REL_RESERVED so userspace can rely on it and detect
 * the situation described above.
 */
#define REL_RESERVED        0x0a
#define REL_WHEEL_HI_RES    0x0b
#define REL_HWHEEL_HI_RES    0x0c
#define REL_MAX            0x0f
#define REL_CNT            (REL_MAX+1)
 
/*
 * Absolute axes
 */
 
#define ABS_X            0x00
#define ABS_Y            0x01
#define ABS_Z            0x02
#define ABS_RX            0x03
#define ABS_RY            0x04
#define ABS_RZ            0x05
#define ABS_THROTTLE        0x06
#define ABS_RUDDER        0x07
#define ABS_WHEEL        0x08
#define ABS_GAS            0x09
#define ABS_BRAKE        0x0a
#define ABS_HAT0X        0x10
#define ABS_HAT0Y        0x11
#define ABS_HAT1X        0x12
#define ABS_HAT1Y        0x13
#define ABS_HAT2X        0x14
#define ABS_HAT2Y        0x15
#define ABS_HAT3X        0x16
#define ABS_HAT3Y        0x17
#define ABS_PRESSURE        0x18
#define ABS_DISTANCE        0x19
#define ABS_TILT_X        0x1a
#define ABS_TILT_Y        0x1b
#define ABS_TOOL_WIDTH        0x1c
 
#define ABS_VOLUME        0x20
 
#define ABS_MISC        0x28
 
/*
 * 0x2e is reserved and should not be used in input drivers.
 * It was used by HID as ABS_MISC+6 and userspace needs to detect if
 * the next ABS_* event is correct or is just ABS_MISC + n.
 * We define here ABS_RESERVED so userspace can rely on it and detect
 * the situation described above.
 */
#define ABS_RESERVED        0x2e
 
#define ABS_MT_SLOT        0x2f    /* MT slot being modified */
#define ABS_MT_TOUCH_MAJOR    0x30    /* Major axis of touching ellipse */
#define ABS_MT_TOUCH_MINOR    0x31    /* Minor axis (omit if circular) */
#define ABS_MT_WIDTH_MAJOR    0x32    /* Major axis of approaching ellipse */
#define ABS_MT_WIDTH_MINOR    0x33    /* Minor axis (omit if circular) */
#define ABS_MT_ORIENTATION    0x34    /* Ellipse orientation */
#define ABS_MT_POSITION_X    0x35    /* Center X touch position */
#define ABS_MT_POSITION_Y    0x36    /* Center Y touch position */
#define ABS_MT_TOOL_TYPE    0x37    /* Type of touching device */
#define ABS_MT_BLOB_ID        0x38    /* Group a set of packets as a blob */
#define ABS_MT_TRACKING_ID    0x39    /* Unique ID of initiated contact */
#define ABS_MT_PRESSURE        0x3a    /* Pressure on contact area */
#define ABS_MT_DISTANCE        0x3b    /* Contact hover distance */
#define ABS_MT_TOOL_X        0x3c    /* Center X tool position */
#define ABS_MT_TOOL_Y        0x3d    /* Center Y tool position */
 
 
#define ABS_MAX            0x3f
#define ABS_CNT            (ABS_MAX+1)
 
/*
 * Switch events
 */
 
#define SW_LID            0x00  /* set = lid shut */
#define SW_TABLET_MODE        0x01  /* set = tablet mode */
#define SW_HEADPHONE_INSERT    0x02  /* set = inserted */
#define SW_RFKILL_ALL        0x03  /* rfkill master switch, type "any"
                    set = radio enabled */
#define SW_RADIO        SW_RFKILL_ALL    /* deprecated */
#define SW_MICROPHONE_INSERT    0x04  /* set = inserted */
#define SW_DOCK            0x05  /* set = plugged into dock */
#define SW_LINEOUT_INSERT    0x06  /* set = inserted */
#define SW_JACK_PHYSICAL_INSERT 0x07  /* set = mechanical switch set */
#define SW_VIDEOOUT_INSERT    0x08  /* set = inserted */
#define SW_CAMERA_LENS_COVER    0x09  /* set = lens covered */
#define SW_KEYPAD_SLIDE        0x0a  /* set = keypad slide out */
#define SW_FRONT_PROXIMITY    0x0b  /* set = front proximity sensor active */
#define SW_ROTATE_LOCK        0x0c  /* set = rotate locked/disabled */
#define SW_LINEIN_INSERT    0x0d  /* set = inserted */
#define SW_MUTE_DEVICE        0x0e  /* set = device disabled */
#define SW_PEN_INSERTED        0x0f  /* set = pen inserted */
#define SW_MACHINE_COVER    0x10  /* set = cover closed */
#define SW_MAX            0x10
#define SW_CNT            (SW_MAX+1)
 
/*
 * Misc events
 */
 
#define MSC_SERIAL        0x00
#define MSC_PULSELED        0x01
#define MSC_GESTURE        0x02
#define MSC_RAW            0x03
#define MSC_SCAN        0x04
#define MSC_TIMESTAMP        0x05
#define MSC_MAX            0x07
#define MSC_CNT            (MSC_MAX+1)
 
/*
 * LEDs
 */
 
#define LED_NUML        0x00
#define LED_CAPSL        0x01
#define LED_SCROLLL        0x02
#define LED_COMPOSE        0x03
#define LED_KANA        0x04
#define LED_SLEEP        0x05
#define LED_SUSPEND        0x06
#define LED_MUTE        0x07
#define LED_MISC        0x08
#define LED_MAIL        0x09
#define LED_CHARGING        0x0a
#define LED_MAX            0x0f
#define LED_CNT            (LED_MAX+1)
 
/*
 * Autorepeat values
 */
 
#define REP_DELAY        0x00
#define REP_PERIOD        0x01
#define REP_MAX            0x01
#define REP_CNT            (REP_MAX+1)
 
/*
 * Sounds
 */
 
#define SND_CLICK        0x00
#define SND_BELL        0x01
#define SND_TONE        0x02
#define SND_MAX            0x07
#define SND_CNT            (SND_MAX+1)
 
#endif