cognitive_inputs/
codes.rs

1// Copyright 2017 The Perceptia Project Developers
2//
3// Permission is hereby granted, free of charge, to any person obtaining a copy of this software
4// and associated documentation files (the "Software"), to deal in the Software without
5// restriction, including without limitation the rights to use, copy, modify, merge, publish,
6// distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
7// Software is furnished to do so, subject to the following conditions:
8//
9// The above copyright notice and this permission notice shall be included in all copies or
10// substantial portions of the Software.
11//
12// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
13// BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
14// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
15// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
17
18//! Definitions of codes from `input-event-codes.h`.
19//!
20//! TODO: This should be part of separate crate, but none not-deprecated seem to have enough
21//! low-level support for them. Maybe create new crate containing only this file?
22
23// Device properties and quirks
24pub const INPUT_PROP_POINTER:        u16 = 0x00; // needs a pointer
25pub const INPUT_PROP_DIRECT:         u16 = 0x01; // direct input devices
26pub const INPUT_PROP_BUTTONPAD:      u16 = 0x02; // has buttons under pad
27pub const INPUT_PROP_SEMI_MT:        u16 = 0x03; // touch rectangle only
28pub const INPUT_PROP_TOPBUTTONPAD:   u16 = 0x04; // softbuttons at top of pad
29pub const INPUT_PROP_POINTING_STICK: u16 = 0x05; // is a pointing stick
30pub const INPUT_PROP_ACCELEROMETER:  u16 = 0x06; // has accelerometer
31
32pub const INPUT_PROP_MAX: u16 = 0x1f;
33pub const INPUT_PROP_CNT: u16 = INPUT_PROP_MAX + 1;
34
35// Event types
36pub const EV_SYN:       u16 = 0x00;
37pub const EV_KEY:       u16 = 0x01;
38pub const EV_REL:       u16 = 0x02;
39pub const EV_ABS:       u16 = 0x03;
40pub const EV_MSC:       u16 = 0x04;
41pub const EV_SW:        u16 = 0x05;
42pub const EV_LED:       u16 = 0x11;
43pub const EV_SND:       u16 = 0x12;
44pub const EV_REP:       u16 = 0x14;
45pub const EV_FF:        u16 = 0x15;
46pub const EV_PWR:       u16 = 0x16;
47pub const EV_FF_STATUS: u16 = 0x17;
48pub const EV_MAX:       u16 = 0x1f;
49pub const EV_CNT:       u16 = EV_MAX + 1;
50
51// Synchronization events.
52pub const SYN_REPORT:    u16 = 0;
53pub const SYN_CONFIG:    u16 = 1;
54pub const SYN_MT_REPORT: u16 = 2;
55pub const SYN_DROPPED:   u16 = 3;
56pub const SYN_MAX:       u16 = 0xf;
57pub const SYN_CNT:       u16 = SYN_MAX + 1;
58
59// Keys and buttons
60//
61// Most of the keys/buttons are modeled after USB HUT 1.12
62// (see http://www.usb.org/developers/hidpage).
63// Abbreviations in the comments:
64// AC - Application Control
65// AL - Application Launch Button
66// SC - System Control
67pub const KEY_RESERVED:   u16 = 0;
68pub const KEY_ESC:        u16 = 1;
69pub const KEY_1:          u16 = 2;
70pub const KEY_2:          u16 = 3;
71pub const KEY_3:          u16 = 4;
72pub const KEY_4:          u16 = 5;
73pub const KEY_5:          u16 = 6;
74pub const KEY_6:          u16 = 7;
75pub const KEY_7:          u16 = 8;
76pub const KEY_8:          u16 = 9;
77pub const KEY_9:          u16 = 10;
78pub const KEY_10:         u16 = 11;
79pub const KEY_MINUS:      u16 = 12;
80pub const KEY_EQUAL:      u16 = 13;
81pub const KEY_BACKSPACE:  u16 = 14;
82pub const KEY_TAB:        u16 = 15;
83pub const KEY_Q:          u16 = 16;
84pub const KEY_W:          u16 = 17;
85pub const KEY_E:          u16 = 18;
86pub const KEY_R:          u16 = 19;
87pub const KEY_T:          u16 = 20;
88pub const KEY_Y:          u16 = 21;
89pub const KEY_U:          u16 = 22;
90pub const KEY_I:          u16 = 23;
91pub const KEY_O:          u16 = 24;
92pub const KEY_P:          u16 = 25;
93pub const KEY_LEFTBRACE:  u16 = 26;
94pub const KEY_RIGHTBRACE: u16 = 27;
95pub const KEY_ENTER:      u16 = 28;
96pub const KEY_LEFTCTRL:   u16 = 29;
97pub const KEY_A:          u16 = 30;
98pub const KEY_S:          u16 = 31;
99pub const KEY_D:          u16 = 32;
100pub const KEY_F:          u16 = 33;
101pub const KEY_G:          u16 = 34;
102pub const KEY_H:          u16 = 35;
103pub const KEY_J:          u16 = 36;
104pub const KEY_K:          u16 = 37;
105pub const KEY_L:          u16 = 38;
106pub const KEY_SEMICOLON:  u16 = 39;
107pub const KEY_APOSTROPHE: u16 = 40;
108pub const KEY_GRAVE:      u16 = 41;
109pub const KEY_LEFTSHIFT:  u16 = 42;
110pub const KEY_BACKSLASH:  u16 = 43;
111pub const KEY_Z:          u16 = 44;
112pub const KEY_X:          u16 = 45;
113pub const KEY_C:          u16 = 46;
114pub const KEY_V:          u16 = 47;
115pub const KEY_B:          u16 = 48;
116pub const KEY_N:          u16 = 49;
117pub const KEY_M:          u16 = 50;
118pub const KEY_COMMA:      u16 = 51;
119pub const KEY_DOT:        u16 = 52;
120pub const KEY_SLASH:      u16 = 53;
121pub const KEY_RIGHTSHIFT: u16 = 54;
122pub const KEY_KPASTERISK: u16 = 55;
123pub const KEY_LEFTALT:    u16 = 56;
124pub const KEY_SPACE:      u16 = 57;
125pub const KEY_CAPSLOCK:   u16 = 58;
126pub const KEY_F1:         u16 = 59;
127pub const KEY_F2:         u16 = 60;
128pub const KEY_F3:         u16 = 61;
129pub const KEY_F4:         u16 = 62;
130pub const KEY_F5:         u16 = 63;
131pub const KEY_F6:         u16 = 64;
132pub const KEY_F7:         u16 = 65;
133pub const KEY_F8:         u16 = 66;
134pub const KEY_F9:         u16 = 67;
135pub const KEY_F10:        u16 = 68;
136pub const KEY_NUMLOCK:    u16 = 69;
137pub const KEY_SCROLLLOCK: u16 = 70;
138pub const KEY_KP7:        u16 = 71;
139pub const KEY_KP8:        u16 = 72;
140pub const KEY_KP9:        u16 = 73;
141pub const KEY_KPMINUS:    u16 = 74;
142pub const KEY_KP4:        u16 = 75;
143pub const KEY_KP5:        u16 = 76;
144pub const KEY_KP6:        u16 = 77;
145pub const KEY_KPPLUS:     u16 = 78;
146pub const KEY_KP1:        u16 = 79;
147pub const KEY_KP2:        u16 = 80;
148pub const KEY_KP3:        u16 = 81;
149pub const KEY_KP0:        u16 = 82;
150pub const KEY_KPDOT:      u16 = 83;
151
152pub const KEY_ZENKAKUHANKAKU:   u16 = 85;
153pub const KEY_102ND:            u16 = 86;
154pub const KEY_F11:              u16 = 87;
155pub const KEY_F12:              u16 = 88;
156pub const KEY_RO:               u16 = 89;
157pub const KEY_KATAKANA:         u16 = 90;
158pub const KEY_HIRAGANA:         u16 = 91;
159pub const KEY_HENKAN:           u16 = 92;
160pub const KEY_KATAKANAHIRAGANA: u16 = 93;
161pub const KEY_MUHENKAN:         u16 = 94;
162pub const KEY_KPJPCOMMA:        u16 = 95;
163pub const KEY_KPENTER:          u16 = 96;
164pub const KEY_RIGHTCTRL:        u16 = 97;
165pub const KEY_KPSLASH:          u16 = 98;
166pub const KEY_SYSRQ:            u16 = 99;
167pub const KEY_RIGHTALT:         u16 = 100;
168pub const KEY_LINEFEED:         u16 = 101;
169pub const KEY_HOME:             u16 = 102;
170pub const KEY_UP:               u16 = 103;
171pub const KEY_PAGEUP:           u16 = 104;
172pub const KEY_LEFT:             u16 = 105;
173pub const KEY_RIGHT:            u16 = 106;
174pub const KEY_END:              u16 = 107;
175pub const KEY_DOWN:             u16 = 108;
176pub const KEY_PAGEDOWN:         u16 = 109;
177pub const KEY_INSERT:           u16 = 110;
178pub const KEY_DELETE:           u16 = 111;
179pub const KEY_MACRO:            u16 = 112;
180pub const KEY_MUTE:             u16 = 113;
181pub const KEY_VOLUMEDOWN:       u16 = 114;
182pub const KEY_VOLUMEUP:         u16 = 115;
183pub const KEY_POWER:            u16 = 116; // SC System Power Down
184pub const KEY_KPEQUAL:          u16 = 117;
185pub const KEY_KPPLUSMINUS:      u16 = 118;
186pub const KEY_PAUSE:            u16 = 119;
187pub const KEY_SCALE:            u16 = 120; // AL Compiz Scale (Expose)
188
189pub const KEY_KPCOMMA:   u16 = 121;
190pub const KEY_HANGEUL:   u16 = 122;
191pub const KEY_HANGUEL:   u16 = KEY_HANGEUL;
192pub const KEY_HANJA:     u16 = 123;
193pub const KEY_YEN:       u16 = 124;
194pub const KEY_LEFTMETA:  u16 = 125;
195pub const KEY_RIGHTMETA: u16 = 126;
196pub const KEY_COMPOSE:   u16 = 127;
197
198pub const KEY_STOP:           u16 = 128; // AC Stop
199pub const KEY_AGAIN:          u16 = 129;
200pub const KEY_PROPS:          u16 = 130; // AC Properties
201pub const KEY_UNDO:           u16 = 131; // AC Undo
202pub const KEY_FRONT:          u16 = 132;
203pub const KEY_COPY:           u16 = 133; // AC Copy
204pub const KEY_OPEN:           u16 = 134; // AC Open
205pub const KEY_PASTE:          u16 = 135; // AC Paste
206pub const KEY_FIND:           u16 = 136; // AC Search
207pub const KEY_CUT:            u16 = 137; // AC Cut
208pub const KEY_HELP:           u16 = 138; // AL Integrated Help Center
209pub const KEY_MENU:           u16 = 139; // Menu (show menu)
210pub const KEY_CALC:           u16 = 140; // AL Calculator
211pub const KEY_SETUP:          u16 = 141;
212pub const KEY_SLEEP:          u16 = 142; // SC System Sleep
213pub const KEY_WAKEUP:         u16 = 143; // System Wake Up
214pub const KEY_FILE:           u16 = 144; // AL Local Machine Browser
215pub const KEY_SENDFILE:       u16 = 145;
216pub const KEY_DELETEFILE:     u16 = 146;
217pub const KEY_XFER:           u16 = 147;
218pub const KEY_PROG1:          u16 = 148;
219pub const KEY_PROG2:          u16 = 149;
220pub const KEY_WWW:            u16 = 150; // AL Internet Browser
221pub const KEY_MSDOS:          u16 = 151;
222pub const KEY_COFFEE:         u16 = 152; // AL Terminal Lock/Screensaver
223pub const KEY_SCREENLOCK:     u16 = KEY_COFFEE;
224pub const KEY_ROTATE_DISPLAY: u16 = 153; // Display orientation for e.g. tablets
225pub const KEY_DIRECTION:      u16 = KEY_ROTATE_DISPLAY;
226pub const KEY_CYCLEWINDOWS:   u16 = 154;
227pub const KEY_MAIL:           u16 = 155;
228pub const KEY_BOOKMARKS:      u16 = 156; // AC Bookmarks
229pub const KEY_COMPUTER:       u16 = 157;
230pub const KEY_BACK:           u16 = 158; // AC Back
231pub const KEY_FORWARD:        u16 = 159; // AC Forward
232pub const KEY_CLOSECD:        u16 = 160;
233pub const KEY_EJECTCD:        u16 = 161;
234pub const KEY_EJECTCLOSECD:   u16 = 162;
235pub const KEY_NEXTSONG:       u16 = 163;
236pub const KEY_PLAYPAUSE:      u16 = 164;
237pub const KEY_PREVIOUSSONG:   u16 = 165;
238pub const KEY_STOPCD:         u16 = 166;
239pub const KEY_RECORD:         u16 = 167;
240pub const KEY_REWIND:         u16 = 168;
241pub const KEY_PHONE:          u16 = 169; // Media Select Telephone
242pub const KEY_ISO:            u16 = 170;
243pub const KEY_CONFIG:         u16 = 171; // AL Consumer Control Configuration 
244pub const KEY_HOMEPAGE:       u16 = 172; // AC Home
245pub const KEY_REFRESH:        u16 = 173; // AC Refresh
246pub const KEY_EXIT:           u16 = 174; // AC Exit
247pub const KEY_MOVE:           u16 = 175;
248pub const KEY_EDIT:           u16 = 176;
249pub const KEY_SCROLLUP:       u16 = 177;
250pub const KEY_SCROLLDOWN:     u16 = 178;
251pub const KEY_KPLEFTPAREN:    u16 = 179;
252pub const KEY_KPRIGHTPAREN:   u16 = 180;
253pub const KEY_NEW:            u16 = 181; // AC New
254pub const KEY_REDO:           u16 = 182; // AC Redo/Repeat
255
256pub const KEY_F13: u16 = 183;
257pub const KEY_F14: u16 = 184;
258pub const KEY_F15: u16 = 185;
259pub const KEY_F16: u16 = 186;
260pub const KEY_F17: u16 = 187;
261pub const KEY_F18: u16 = 188;
262pub const KEY_F19: u16 = 189;
263pub const KEY_F20: u16 = 190;
264pub const KEY_F21: u16 = 191;
265pub const KEY_F22: u16 = 192;
266pub const KEY_F23: u16 = 193;
267pub const KEY_F24: u16 = 194;
268
269pub const KEY_PLAYCD:         u16 = 200;
270pub const KEY_PAUSECD:        u16 = 201;
271pub const KEY_PROG3:          u16 = 202;
272pub const KEY_PROG4:          u16 = 203;
273pub const KEY_DASHBOARD:      u16 = 204; // AL Dashboard
274pub const KEY_SUSPEND:        u16 = 205;
275pub const KEY_CLOSE:          u16 = 206; // AC Close
276pub const KEY_PLAY:           u16 = 207;
277pub const KEY_FASTFORWARD:    u16 = 208;
278pub const KEY_BASSBOOST:      u16 = 209;
279pub const KEY_PRINT:          u16 = 210; // AC Print
280pub const KEY_HP:             u16 = 211;
281pub const KEY_CAMERA:         u16 = 212;
282pub const KEY_SOUND:          u16 = 213;
283pub const KEY_QUESTION:       u16 = 214;
284pub const KEY_EMAIL:          u16 = 215;
285pub const KEY_CHAT:           u16 = 216;
286pub const KEY_SEARCH:         u16 = 217;
287pub const KEY_CONNECT:        u16 = 218;
288pub const KEY_FINANCE:        u16 = 219; // AL Checkbook/Finance
289pub const KEY_SPORT:          u16 = 220;
290pub const KEY_SHOP:           u16 = 221;
291pub const KEY_ALTERASE:       u16 = 222;
292pub const KEY_CANCEL:         u16 = 223; // AC Cancel
293pub const KEY_BRIGHTNESSDOWN: u16 = 224;
294pub const KEY_BRIGHTNESSUP:   u16 = 225;
295pub const KEY_MEDIA:          u16 = 226;
296
297pub const KEY_SWITCHVIDEOMODE: u16 = 227; // Cycle between available video outputs (Monitor/LCD/TV-out/etc)
298pub const KEY_KBDILLUMTOGGLE:  u16 = 228;
299pub const KEY_KBDILLUMDOWN:    u16 = 229;
300pub const KEY_KBDILLUMUP:      u16 = 230;
301
302pub const KEY_SEND:        u16 = 231; // AC Send
303pub const KEY_REPLY:       u16 = 232; // AC Reply
304pub const KEY_FORWARDMAIL: u16 = 233; // AC Forward Msg
305pub const KEY_SAVE:        u16 = 234; // AC Save
306pub const KEY_DOCUMENTS:   u16 = 235;
307
308pub const KEY_BATTERY: u16 = 236;
309
310pub const KEY_BLUETOOTH: u16 = 237;
311pub const KEY_WLAN:      u16 = 238;
312pub const KEY_UWB:       u16 = 239;
313
314pub const KEY_UNKNOWN: u16 = 240;
315
316pub const KEY_VIDEO_NEXT:       u16 = 241; // drive next video source
317pub const KEY_VIDEO_PREV:       u16 = 242; // drive previous video source
318pub const KEY_BRIGHTNESS_CYCLE: u16 = 243; // brightness up, after max is min
319pub const KEY_BRIGHTNESS_AUTO:  u16 = 244; // Set Auto Brightness: manual brightness control is off, rely on ambient
320pub const KEY_BRIGHTNESS_ZERO:  u16 = KEY_BRIGHTNESS_AUTO;
321pub const KEY_DISPLAY_OFF:      u16 = 245; // display device to off state
322
323pub const KEY_WWAN:   u16 = 246; // Wireless WAN (LTE, UMTS, GSM, etc.)
324pub const KEY_WIMAX:  u16 = KEY_WWAN;
325pub const KEY_RFKILL: u16 = 247; // Key that controls all radios
326
327pub const KEY_MICMUTE: u16 = 248; // Mute / unmute the microphone
328
329// Code 255 is reserved for special needs of AT keyboard driver
330
331pub const BTN_MISC: u16 = 0x100;
332pub const BTN_0:    u16 = 0x100;
333pub const BTN_1:    u16 = 0x101;
334pub const BTN_2:    u16 = 0x102;
335pub const BTN_3:    u16 = 0x103;
336pub const BTN_4:    u16 = 0x104;
337pub const BTN_5:    u16 = 0x105;
338pub const BTN_6:    u16 = 0x106;
339pub const BTN_7:    u16 = 0x107;
340pub const BTN_8:    u16 = 0x108;
341pub const BTN_9:    u16 = 0x109;
342
343pub const BTN_MOUSE:   u16 = 0x110;
344pub const BTN_LEFT:    u16 = 0x110;
345pub const BTN_RIGHT:   u16 = 0x111;
346pub const BTN_MIDDLE:  u16 = 0x112;
347pub const BTN_SIDE:    u16 = 0x113;
348pub const BTN_EXTRA:   u16 = 0x114;
349pub const BTN_FORWARD: u16 = 0x115;
350pub const BTN_BACK:    u16 = 0x116;
351pub const BTN_TASK:    u16 = 0x117;
352
353pub const BTN_JOYSTICK: u16 = 0x120;
354pub const BTN_TRIGGER:  u16 = 0x120;
355pub const BTN_THUMB:    u16 = 0x121;
356pub const BTN_THUMB2:   u16 = 0x122;
357pub const BTN_TOP:      u16 = 0x123;
358pub const BTN_TOP2:     u16 = 0x124;
359pub const BTN_PINKIE:   u16 = 0x125;
360pub const BTN_BASE:     u16 = 0x126;
361pub const BTN_BASE2:    u16 = 0x127;
362pub const BTN_BASE3:    u16 = 0x128;
363pub const BTN_BASE4:    u16 = 0x129;
364pub const BTN_BASE5:    u16 = 0x12a;
365pub const BTN_BASE6:    u16 = 0x12b;
366pub const BTN_DEAD:     u16 = 0x12f;
367
368pub const BTN_GAMEPAD: u16 = 0x130;
369pub const BTN_SOUTH:   u16 = 0x130;
370pub const BTN_A:       u16 = BTN_SOUTH;
371pub const BTN_EAST:    u16 = 0x131;
372pub const BTN_B:       u16 = BTN_EAST;
373pub const BTN_C:       u16 = 0x132;
374pub const BTN_NORTH:   u16 = 0x133;
375pub const BTN_X:       u16 = BTN_NORTH;
376pub const BTN_WEST:    u16 = 0x134;
377pub const BTN_Y:       u16 = BTN_WEST;
378pub const BTN_Z:       u16 = 0x135;
379pub const BTN_TL:      u16 = 0x136;
380pub const BTN_TR:      u16 = 0x137;
381pub const BTN_TL2:     u16 = 0x138;
382pub const BTN_TR2:     u16 = 0x139;
383pub const BTN_SELECT:  u16 = 0x13a;
384pub const BTN_START:   u16 = 0x13b;
385pub const BTN_MODE:    u16 = 0x13c;
386pub const BTN_THUMBL:  u16 = 0x13d;
387pub const BTN_THUMBR:  u16 = 0x13e;
388
389pub const BTN_DIGI:           u16 = 0x140;
390pub const BTN_TOOL_PEN:       u16 = 0x140;
391pub const BTN_TOOL_RUBBER:    u16 = 0x141;
392pub const BTN_TOOL_BRUSH:     u16 = 0x142;
393pub const BTN_TOOL_PENCIL:    u16 = 0x143;
394pub const BTN_TOOL_AIRBRUSH:  u16 = 0x144;
395pub const BTN_TOOL_FINGER:    u16 = 0x145;
396pub const BTN_TOOL_MOUSE:     u16 = 0x146;
397pub const BTN_TOOL_LENS:      u16 = 0x147;
398pub const BTN_TOOL_QUINTTAP:  u16 = 0x148; // Five fingers on trackpad
399pub const BTN_TOUCH:          u16 = 0x14a;
400pub const BTN_STYLUS:         u16 = 0x14b;
401pub const BTN_STYLUS2:        u16 = 0x14c;
402pub const BTN_TOOL_DOUBLETAP: u16 = 0x14d;
403pub const BTN_TOOL_TRIPLETAP: u16 = 0x14e;
404pub const BTN_TOOL_QUADTAP:   u16 = 0x14f; // Four fingers on trackpad
405
406pub const BTN_WHEEL:     u16 = 0x150;
407pub const BTN_GEAR_DOWN: u16 = 0x150;
408pub const BTN_GEAR_UP:   u16 = 0x151;
409
410pub const KEY_OK:                u16 = 0x160;
411pub const KEY_SELECT:            u16 = 0x161;
412pub const KEY_GOTO:              u16 = 0x162;
413pub const KEY_CLEAR:             u16 = 0x163;
414pub const KEY_POWER2:            u16 = 0x164;
415pub const KEY_OPTION:            u16 = 0x165;
416pub const KEY_INFO:              u16 = 0x166; // AL OEM Features/Tips/Tutorial
417pub const KEY_TIME:              u16 = 0x167;
418pub const KEY_VENDOR:            u16 = 0x168;
419pub const KEY_ARCHIVE:           u16 = 0x169;
420pub const KEY_PROGRAM:           u16 = 0x16a; // Media Select Program Guide
421pub const KEY_CHANNEL:           u16 = 0x16b;
422pub const KEY_FAVORITES:         u16 = 0x16c;
423pub const KEY_EPG:               u16 = 0x16d;
424pub const KEY_PVR:               u16 = 0x16e; // Media Select Home
425pub const KEY_MHP:               u16 = 0x16f;
426pub const KEY_LANGUAGE:          u16 = 0x170;
427pub const KEY_TITLE:             u16 = 0x171;
428pub const KEY_SUBTITLE:          u16 = 0x172;
429pub const KEY_ANGLE:             u16 = 0x173;
430pub const KEY_ZOOM:              u16 = 0x174;
431pub const KEY_MODE:              u16 = 0x175;
432pub const KEY_KEYBOARD:          u16 = 0x176;
433pub const KEY_SCREEN:            u16 = 0x177;
434pub const KEY_PC:                u16 = 0x178; // Media Select Computer
435pub const KEY_TV:                u16 = 0x179; // Media Select TV
436pub const KEY_TV2:               u16 = 0x17a; // Media Select Cable
437pub const KEY_VCR:               u16 = 0x17b; // Media Select VCR
438pub const KEY_VCR2:              u16 = 0x17c; // VCR Plus
439pub const KEY_SAT:               u16 = 0x17d; // Media Select Satellite
440pub const KEY_SAT2:              u16 = 0x17e;
441pub const KEY_CD:                u16 = 0x17f; // Media Select CD
442pub const KEY_TAPE:              u16 = 0x180; // Media Select Tape
443pub const KEY_RADIO:             u16 = 0x181;
444pub const KEY_TUNER:             u16 = 0x182; // Media Select Tuner
445pub const KEY_PLAYER:            u16 = 0x183;
446pub const KEY_TEXT:              u16 = 0x184;
447pub const KEY_DVD:               u16 = 0x185; // Media Select DVD
448pub const KEY_AUX:               u16 = 0x186;
449pub const KEY_MP3:               u16 = 0x187;
450pub const KEY_AUDIO:             u16 = 0x188; // AL Audio Browser
451pub const KEY_VIDEO:             u16 = 0x189; // AL Movie Browser
452pub const KEY_DIRECTORY:         u16 = 0x18a;
453pub const KEY_LIST:              u16 = 0x18b;
454pub const KEY_MEMO:              u16 = 0x18c; // Media Select Messages
455pub const KEY_CALENDAR:          u16 = 0x18d;
456pub const KEY_RED:               u16 = 0x18e;
457pub const KEY_GREEN:             u16 = 0x18f;
458pub const KEY_YELLOW:            u16 = 0x190;
459pub const KEY_BLUE:              u16 = 0x191;
460pub const KEY_CHANNELUP:         u16 = 0x192; // Channel Increment
461pub const KEY_CHANNELDOWN:       u16 = 0x193; // Channel Decrement
462pub const KEY_FIRST:             u16 = 0x194;
463pub const KEY_LAST:              u16 = 0x195; // Recall Last
464pub const KEY_AB:                u16 = 0x196;
465pub const KEY_NEXT:              u16 = 0x197;
466pub const KEY_RESTART:           u16 = 0x198;
467pub const KEY_SLOW:              u16 = 0x199;
468pub const KEY_SHUFFLE:           u16 = 0x19a;
469pub const KEY_BREAK:             u16 = 0x19b;
470pub const KEY_PREVIOUS:          u16 = 0x19c;
471pub const KEY_DIGITS:            u16 = 0x19d;
472pub const KEY_TEEN:              u16 = 0x19e;
473pub const KEY_TWEN:              u16 = 0x19f;
474pub const KEY_VIDEOPHONE:        u16 = 0x1a0; // Media Select Video Phone
475pub const KEY_GAMES:             u16 = 0x1a1; // Media Select Games
476pub const KEY_ZOOMIN:            u16 = 0x1a2; // AC Zoom In
477pub const KEY_ZOOMOUT:           u16 = 0x1a3; // AC Zoom Out
478pub const KEY_ZOOMRESET:         u16 = 0x1a4; // AC Zoom
479pub const KEY_WORDPROCESSOR:     u16 = 0x1a5; // AL Word Processor
480pub const KEY_EDITOR:            u16 = 0x1a6; // AL Text Editor
481pub const KEY_SPREADSHEET:       u16 = 0x1a7; // AL Spreadsheet
482pub const KEY_GRAPHICSEDITOR:    u16 = 0x1a8; // AL Graphics Editor
483pub const KEY_PRESENTATION:      u16 = 0x1a9; // AL Presentation App
484pub const KEY_DATABASE:          u16 = 0x1aa; // AL Database App
485pub const KEY_NEWS:              u16 = 0x1ab; // AL Newsreader
486pub const KEY_VOICEMAIL:         u16 = 0x1ac; // AL Voicemail
487pub const KEY_ADDRESSBOOK:       u16 = 0x1ad; // AL Contacts/Address Book
488pub const KEY_MESSENGER:         u16 = 0x1ae; // AL Instant Messaging
489pub const KEY_DISPLAYTOGGLE:     u16 = 0x1af; // Turn display (LCD) on and off
490pub const KEY_BRIGHTNESS_TOGGLE: u16 = KEY_DISPLAYTOGGLE;
491pub const KEY_SPELLCHECK:        u16 = 0x1b0; // AL Spell Check
492pub const KEY_LOGOFF:            u16 = 0x1b1; // AL Logoff
493
494pub const KEY_DOLLAR: u16 = 0x1b2;
495pub const KEY_EURO:   u16 = 0x1b3;
496
497pub const KEY_FRAMEBACK:      u16 = 0x1b4; // Consumer - transport controls
498pub const KEY_FRAMEFORWARD:   u16 = 0x1b5;
499pub const KEY_CONTEXT_MENU:   u16 = 0x1b6; // GenDesc - system context menu
500pub const KEY_MEDIA_REPEAT:   u16 = 0x1b7; // Consumer - transport control
501pub const KEY_10CHANNELSUP:   u16 = 0x1b8; // 10 channels up (10+)
502pub const KEY_10CHANNELSDOWN: u16 = 0x1b9; // 10 channels down (10-)
503pub const KEY_IMAGES:         u16 = 0x1ba; // AL Image Browser
504
505pub const KEY_DEL_EOL:  u16 = 0x1c0;
506pub const KEY_DEL_EOS:  u16 = 0x1c1;
507pub const KEY_INS_LINE: u16 = 0x1c2;
508pub const KEY_DEL_LINE: u16 = 0x1c3;
509
510pub const KEY_FN:     u16 = 0x1d0;
511pub const KEY_FN_ESC: u16 = 0x1d1;
512pub const KEY_FN_F1:  u16 = 0x1d2;
513pub const KEY_FN_F2:  u16 = 0x1d3;
514pub const KEY_FN_F3:  u16 = 0x1d4;
515pub const KEY_FN_F4:  u16 = 0x1d5;
516pub const KEY_FN_F5:  u16 = 0x1d6;
517pub const KEY_FN_F6:  u16 = 0x1d7;
518pub const KEY_FN_F7:  u16 = 0x1d8;
519pub const KEY_FN_F8:  u16 = 0x1d9;
520pub const KEY_FN_F9:  u16 = 0x1da;
521pub const KEY_FN_F10: u16 = 0x1db;
522pub const KEY_FN_F11: u16 = 0x1dc;
523pub const KEY_FN_F12: u16 = 0x1dd;
524pub const KEY_FN_1:   u16 = 0x1de;
525pub const KEY_FN_2:   u16 = 0x1df;
526pub const KEY_FN_D:   u16 = 0x1e0;
527pub const KEY_FN_E:   u16 = 0x1e1;
528pub const KEY_FN_F:   u16 = 0x1e2;
529pub const KEY_FN_S:   u16 = 0x1e3;
530pub const KEY_FN_B:   u16 = 0x1e4;
531
532pub const KEY_BRL_DOT1:  u16 = 0x1f1;
533pub const KEY_BRL_DOT2:  u16 = 0x1f2;
534pub const KEY_BRL_DOT3:  u16 = 0x1f3;
535pub const KEY_BRL_DOT4:  u16 = 0x1f4;
536pub const KEY_BRL_DOT5:  u16 = 0x1f5;
537pub const KEY_BRL_DOT6:  u16 = 0x1f6;
538pub const KEY_BRL_DOT7:  u16 = 0x1f7;
539pub const KEY_BRL_DOT8:  u16 = 0x1f8;
540pub const KEY_BRL_DOT9:  u16 = 0x1f9;
541pub const KEY_BRL_DOT10: u16 = 0x1fa;
542
543pub const KEY_NUMERIC_0:     u16 = 0x200; // used by phones, remote controls,
544pub const KEY_NUMERIC_1:     u16 = 0x201; // and other keypads
545pub const KEY_NUMERIC_2:     u16 = 0x202;
546pub const KEY_NUMERIC_3:     u16 = 0x203;
547pub const KEY_NUMERIC_4:     u16 = 0x204;
548pub const KEY_NUMERIC_5:     u16 = 0x205;
549pub const KEY_NUMERIC_6:     u16 = 0x206;
550pub const KEY_NUMERIC_7:     u16 = 0x207;
551pub const KEY_NUMERIC_8:     u16 = 0x208;
552pub const KEY_NUMERIC_9:     u16 = 0x209;
553pub const KEY_NUMERIC_STAR:  u16 = 0x20a;
554pub const KEY_NUMERIC_POUND: u16 = 0x20b;
555pub const KEY_NUMERIC_A:     u16 = 0x20c; // Phone key A - HUT Telephony 0xb9
556pub const KEY_NUMERIC_B:     u16 = 0x20d;
557pub const KEY_NUMERIC_C:     u16 = 0x20e;
558pub const KEY_NUMERIC_D:     u16 = 0x20f;
559
560pub const KEY_CAMERA_FOCUS: u16 = 0x210;
561pub const KEY_WPS_BUTTON:   u16 = 0x211; // WiFi Protected Setup key
562
563pub const KEY_TOUCHPAD_TOGGLE: u16 = 0x212; // Request switch touchpad on or off
564pub const KEY_TOUCHPAD_ON:     u16 = 0x213;
565pub const KEY_TOUCHPAD_OFF:    u16 = 0x214;
566
567pub const KEY_CAMERA_ZOOMIN:  u16 = 0x215;
568pub const KEY_CAMERA_ZOOMOUT: u16 = 0x216;
569pub const KEY_CAMERA_UP:      u16 = 0x217;
570pub const KEY_CAMERA_DOWN:    u16 = 0x218;
571pub const KEY_CAMERA_LEFT:    u16 = 0x219;
572pub const KEY_CAMERA_RIGHT:   u16 = 0x21a;
573
574pub const KEY_ATTENDANT_ON:     u16 = 0x21b;
575pub const KEY_ATTENDANT_OFF:    u16 = 0x21c;
576pub const KEY_ATTENDANT_TOGGLE: u16 = 0x21d; // Attendant call on or off
577pub const KEY_LIGHTS_TOGGLE:    u16 = 0x21e; // Reading light on or off
578
579pub const BTN_DPAD_UP:    u16 = 0x220;
580pub const BTN_DPAD_DOWN:  u16 = 0x221;
581pub const BTN_DPAD_LEFT:  u16 = 0x222;
582pub const BTN_DPAD_RIGHT: u16 = 0x223;
583
584pub const KEY_ALS_TOGGLE: u16 = 0x230; // Ambient light sensor
585
586pub const KEY_BUTTONCONFIG: u16 = 0x240;  // AL Button Configuration
587pub const KEY_TASKMANAGER:  u16 = 0x241;  // AL Task/Project Manager
588pub const KEY_JOURNAL:      u16 = 0x242;  // AL Log/Journal/Timecard
589pub const KEY_CONTROLPANEL: u16 = 0x243;  // AL Control Panel
590pub const KEY_APPSELECT:    u16 = 0x244;  // AL Select Task/Application
591pub const KEY_SCREENSAVER:  u16 = 0x245;  // AL Screen Saver
592pub const KEY_VOICECOMMAND: u16 = 0x246;  // Listening Voice Command
593
594pub const KEY_BRIGHTNESS_MIN: u16 = 0x250; // Set Brightness to Minimum
595pub const KEY_BRIGHTNESS_MAX: u16 = 0x251; // Set Brightness to Maximum
596
597pub const KEY_KBDINPUTASSIST_PREV:      u16 = 0x260;
598pub const KEY_KBDINPUTASSIST_NEXT:      u16 = 0x261;
599pub const KEY_KBDINPUTASSIST_PREVGROUP: u16 = 0x262;
600pub const KEY_KBDINPUTASSIST_NEXTGROUP: u16 = 0x263;
601pub const KEY_KBDINPUTASSIST_ACCEPT:    u16 = 0x264;
602pub const KEY_KBDINPUTASSIST_CANCEL:    u16 = 0x265;
603
604pub const BTN_TRIGGER_HAPPY:   u16 = 0x2c0;
605pub const BTN_TRIGGER_HAPPY1:  u16 = 0x2c0;
606pub const BTN_TRIGGER_HAPPY2:  u16 = 0x2c1;
607pub const BTN_TRIGGER_HAPPY3:  u16 = 0x2c2;
608pub const BTN_TRIGGER_HAPPY4:  u16 = 0x2c3;
609pub const BTN_TRIGGER_HAPPY5:  u16 = 0x2c4;
610pub const BTN_TRIGGER_HAPPY6:  u16 = 0x2c5;
611pub const BTN_TRIGGER_HAPPY7:  u16 = 0x2c6;
612pub const BTN_TRIGGER_HAPPY8:  u16 = 0x2c7;
613pub const BTN_TRIGGER_HAPPY9:  u16 = 0x2c8;
614pub const BTN_TRIGGER_HAPPY10: u16 = 0x2c9;
615pub const BTN_TRIGGER_HAPPY11: u16 = 0x2ca;
616pub const BTN_TRIGGER_HAPPY12: u16 = 0x2cb;
617pub const BTN_TRIGGER_HAPPY13: u16 = 0x2cc;
618pub const BTN_TRIGGER_HAPPY14: u16 = 0x2cd;
619pub const BTN_TRIGGER_HAPPY15: u16 = 0x2ce;
620pub const BTN_TRIGGER_HAPPY16: u16 = 0x2cf;
621pub const BTN_TRIGGER_HAPPY17: u16 = 0x2d0;
622pub const BTN_TRIGGER_HAPPY18: u16 = 0x2d1;
623pub const BTN_TRIGGER_HAPPY19: u16 = 0x2d2;
624pub const BTN_TRIGGER_HAPPY20: u16 = 0x2d3;
625pub const BTN_TRIGGER_HAPPY21: u16 = 0x2d4;
626pub const BTN_TRIGGER_HAPPY22: u16 = 0x2d5;
627pub const BTN_TRIGGER_HAPPY23: u16 = 0x2d6;
628pub const BTN_TRIGGER_HAPPY24: u16 = 0x2d7;
629pub const BTN_TRIGGER_HAPPY25: u16 = 0x2d8;
630pub const BTN_TRIGGER_HAPPY26: u16 = 0x2d9;
631pub const BTN_TRIGGER_HAPPY27: u16 = 0x2da;
632pub const BTN_TRIGGER_HAPPY28: u16 = 0x2db;
633pub const BTN_TRIGGER_HAPPY29: u16 = 0x2dc;
634pub const BTN_TRIGGER_HAPPY30: u16 = 0x2dd;
635pub const BTN_TRIGGER_HAPPY31: u16 = 0x2de;
636pub const BTN_TRIGGER_HAPPY32: u16 = 0x2df;
637pub const BTN_TRIGGER_HAPPY33: u16 = 0x2e0;
638pub const BTN_TRIGGER_HAPPY34: u16 = 0x2e1;
639pub const BTN_TRIGGER_HAPPY35: u16 = 0x2e2;
640pub const BTN_TRIGGER_HAPPY36: u16 = 0x2e3;
641pub const BTN_TRIGGER_HAPPY37: u16 = 0x2e4;
642pub const BTN_TRIGGER_HAPPY38: u16 = 0x2e5;
643pub const BTN_TRIGGER_HAPPY39: u16 = 0x2e6;
644pub const BTN_TRIGGER_HAPPY40: u16 = 0x2e7;
645
646// We avoid low common keys in module aliases so they don't get huge.
647pub const KEY_MIN_INTERESTING: u16 = KEY_MUTE;
648pub const KEY_MAX:             u16 = 0x2ff;
649pub const KEY_CNT:             u16 = KEY_MAX + 1;
650
651// Relative axes
652pub const REL_X:      u16 = 0x00;
653pub const REL_Y:      u16 = 0x01;
654pub const REL_Z:      u16 = 0x02;
655pub const REL_RX:     u16 = 0x03;
656pub const REL_RY:     u16 = 0x04;
657pub const REL_RZ:     u16 = 0x05;
658pub const REL_HWHEEL: u16 = 0x06;
659pub const REL_DIAL:   u16 = 0x07;
660pub const REL_WHEEL:  u16 = 0x08;
661pub const REL_MISC:   u16 = 0x09;
662pub const REL_MAX:    u16 = 0x0f;
663pub const REL_CNT:    u16 = REL_MAX + 1;
664
665// Absolute axes
666pub const ABS_X:          u16 = 0x00;
667pub const ABS_Y:          u16 = 0x01;
668pub const ABS_Z:          u16 = 0x02;
669pub const ABS_RX:         u16 = 0x03;
670pub const ABS_RY:         u16 = 0x04;
671pub const ABS_RZ:         u16 = 0x05;
672pub const ABS_THROTTLE:   u16 = 0x06;
673pub const ABS_RUDDER:     u16 = 0x07;
674pub const ABS_WHEEL:      u16 = 0x08;
675pub const ABS_GAS:        u16 = 0x09;
676pub const ABS_BRAKE:      u16 = 0x0a;
677pub const ABS_HAT0X:      u16 = 0x10;
678pub const ABS_HAT0Y:      u16 = 0x11;
679pub const ABS_HAT1X:      u16 = 0x12;
680pub const ABS_HAT1Y:      u16 = 0x13;
681pub const ABS_HAT2X:      u16 = 0x14;
682pub const ABS_HAT2Y:      u16 = 0x15;
683pub const ABS_HAT3X:      u16 = 0x16;
684pub const ABS_HAT3Y:      u16 = 0x17;
685pub const ABS_PRESSURE:   u16 = 0x18;
686pub const ABS_DISTANCE:   u16 = 0x19;
687pub const ABS_TILT_X:     u16 = 0x1a;
688pub const ABS_TILT_Y:     u16 = 0x1b;
689pub const ABS_TOOL_WIDTH: u16 = 0x1c;
690
691pub const ABS_VOLUME: u16 = 0x20;
692
693pub const ABS_MISC: u16 = 0x28;
694
695pub const ABS_MT_SLOT:        u16 = 0x2f; // MT slot being modified
696pub const ABS_MT_TOUCH_MAJOR: u16 = 0x30; // Major axis of touching ellipse
697pub const ABS_MT_TOUCH_MINOR: u16 = 0x31; // Minor axis (omit if circular)
698pub const ABS_MT_WIDTH_MAJOR: u16 = 0x32; // Major axis of approaching ellipse
699pub const ABS_MT_WIDTH_MINOR: u16 = 0x33; // Minor axis (omit if circular)
700pub const ABS_MT_ORIENTATION: u16 = 0x34; // Ellipse orientation
701pub const ABS_MT_POSITION_X:  u16 = 0x35; // Center X touch position
702pub const ABS_MT_POSITION_Y:  u16 = 0x36; // Center Y touch position
703pub const ABS_MT_TOOL_TYPE:   u16 = 0x37; // Type of touching device
704pub const ABS_MT_BLOB_ID:     u16 = 0x38; // Group a set of packets as a blob
705pub const ABS_MT_TRACKING_ID: u16 = 0x39; // Unique ID of initiated contact
706pub const ABS_MT_PRESSURE:    u16 = 0x3a; // Pressure on contact area
707pub const ABS_MT_DISTANCE:    u16 = 0x3b; // Contact hover distance
708pub const ABS_MT_TOOL_X:      u16 = 0x3c; // Center X tool position
709pub const ABS_MT_TOOL_Y:      u16 = 0x3d; // Center Y tool position
710
711
712pub const ABS_MAX: u16 = 0x3f;
713pub const ABS_CNT: u16 = ABS_MAX + 1;
714
715// Switch events
716pub const SW_LID:                  u16 = 0x00;  // set = lid shut
717pub const SW_TABLET_MODE:          u16 = 0x01;  // set = tablet mode
718pub const SW_HEADPHONE_INSERT:     u16 = 0x02;  // set = inserted
719pub const SW_RFKILL_ALL:           u16 = 0x03;  // rfkill master switch, type "any" set = radio enabled
720pub const SW_RADIO:                u16 = SW_RFKILL_ALL; // deprecated
721pub const SW_MICROPHONE_INSERT:    u16 = 0x04;  // set = inserted
722pub const SW_DOCK:                 u16 = 0x05;  // set = plugged into dock
723pub const SW_LINEOUT_INSERT:       u16 = 0x06;  // set = inserted
724pub const SW_JACK_PHYSICAL_INSERT: u16 = 0x07;  // set = mechanical switch set
725pub const SW_VIDEOOUT_INSERT:      u16 = 0x08;  // set = inserted
726pub const SW_CAMERA_LENS_COVER:    u16 = 0x09;  // set = lens covered
727pub const SW_KEYPAD_SLIDE:         u16 = 0x0a;  // set = keypad slide out
728pub const SW_FRONT_PROXIMITY:      u16 = 0x0b;  // set = front proximity sensor active
729pub const SW_ROTATE_LOCK:          u16 = 0x0c;  // set = rotate locked/disabled
730pub const SW_LINEIN_INSERT:        u16 = 0x0d;  // set = inserted
731pub const SW_MUTE_DEVICE:          u16 = 0x0e;  // set = device disabled
732pub const SW_MAX:                  u16 = 0x0f;
733pub const SW_CNT:                  u16 = SW_MAX + 1;
734
735// Misc events
736pub const MSC_SERIAL:    u16 = 0x00;
737pub const MSC_PULSELED:  u16 = 0x01;
738pub const MSC_GESTURE:   u16 = 0x02;
739pub const MSC_RAW:       u16 = 0x03;
740pub const MSC_SCAN:      u16 = 0x04;
741pub const MSC_TIMESTAMP: u16 = 0x05;
742pub const MSC_MAX:       u16 = 0x07;
743pub const MSC_CNT:       u16 = MSC_MAX + 1;
744
745// LEDs
746pub const LED_NUML:     u16 = 0x00;
747pub const LED_CAPSL:    u16 = 0x01;
748pub const LED_SCROLLL:  u16 = 0x02;
749pub const LED_COMPOSE:  u16 = 0x03;
750pub const LED_KANA:     u16 = 0x04;
751pub const LED_SLEEP:    u16 = 0x05;
752pub const LED_SUSPEND:  u16 = 0x06;
753pub const LED_MUTE:     u16 = 0x07;
754pub const LED_MISC:     u16 = 0x08;
755pub const LED_MAIL:     u16 = 0x09;
756pub const LED_CHARGING: u16 = 0x0a;
757pub const LED_MAX:      u16 = 0x0f;
758pub const LED_CNT:      u16 = LED_MAX + 1;
759
760// Autorepeat values
761pub const REP_DELAY:  u16 = 0x00;
762pub const REP_PERIOD: u16 = 0x01;
763pub const REP_MAX:    u16 = 0x01;
764pub const REP_CNT:    u16 = REP_MAX + 1;
765
766// Sounds
767pub const SND_CLICK: u16 = 0x00;
768pub const SND_BELL:  u16 = 0x01;
769pub const SND_TONE:  u16 = 0x02;
770pub const SND_MAX:   u16 = 0x07;
771pub const SND_CNT:   u16 = SND_MAX + 1;