sweetacid_evdev/
scancodes.rs

1/// Scancodes for key presses.
2///
3/// Each associated constant for this struct represents a distinct key.
4#[derive(Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
5#[repr(transparent)]
6pub struct Key(pub u16);
7
8impl Key {
9    #[inline]
10    pub const fn new(code: u16) -> Self {
11        Self(code)
12    }
13
14    #[inline]
15    pub const fn code(self) -> u16 {
16        self.0
17    }
18
19    pub(crate) const COUNT: usize = libc::KEY_CNT;
20}
21
22const fn bit_elts<T>(bits: usize) -> usize {
23    let width = std::mem::size_of::<T>() * 8;
24    bits / width + (bits % width != 0) as usize
25}
26// TODO: replace with BitArr!() once const generics is stable and BitView is implemented for any [T; N]
27const KEY_ARRAY_LEN: usize = bit_elts::<u8>(Key::COUNT);
28type KeyArray = [u8; KEY_ARRAY_LEN];
29const KEY_ARRAY_INIT: KeyArray = [0; KEY_ARRAY_LEN];
30
31evdev_enum!(
32    Key,
33    Array: Box<[u8; KEY_ARRAY_LEN]>,
34    |x| bitvec::slice::BitSlice::from_slice(&x[..]).unwrap(),
35    |x| bitvec::slice::BitSlice::from_slice_mut(&mut x[..]).unwrap(),
36    |x| &mut x[..],
37    || Box::new(KEY_ARRAY_INIT),
38    KEY_RESERVED = 0,
39    KEY_ESC = 1,
40    KEY_1 = 2,
41    KEY_2 = 3,
42    KEY_3 = 4,
43    KEY_4 = 5,
44    KEY_5 = 6,
45    KEY_6 = 7,
46    KEY_7 = 8,
47    KEY_8 = 9,
48    KEY_9 = 10,
49    KEY_0 = 11,
50    KEY_MINUS = 12,
51    KEY_EQUAL = 13,
52    KEY_BACKSPACE = 14,
53    KEY_TAB = 15,
54    KEY_Q = 16,
55    KEY_W = 17,
56    KEY_E = 18,
57    KEY_R = 19,
58    KEY_T = 20,
59    KEY_Y = 21,
60    KEY_U = 22,
61    KEY_I = 23,
62    KEY_O = 24,
63    KEY_P = 25,
64    KEY_LEFTBRACE = 26,
65    KEY_RIGHTBRACE = 27,
66    KEY_ENTER = 28,
67    KEY_LEFTCTRL = 29,
68    KEY_A = 30,
69    KEY_S = 31,
70    KEY_D = 32,
71    KEY_F = 33,
72    KEY_G = 34,
73    KEY_H = 35,
74    KEY_J = 36,
75    KEY_K = 37,
76    KEY_L = 38,
77    KEY_SEMICOLON = 39,
78    KEY_APOSTROPHE = 40,
79    KEY_GRAVE = 41,
80    KEY_LEFTSHIFT = 42,
81    KEY_BACKSLASH = 43,
82    KEY_Z = 44,
83    KEY_X = 45,
84    KEY_C = 46,
85    KEY_V = 47,
86    KEY_B = 48,
87    KEY_N = 49,
88    KEY_M = 50,
89    KEY_COMMA = 51,
90    KEY_DOT = 52,
91    KEY_SLASH = 53,
92    KEY_RIGHTSHIFT = 54,
93    KEY_KPASTERISK = 55,
94    KEY_LEFTALT = 56,
95    KEY_SPACE = 57,
96    KEY_CAPSLOCK = 58,
97    KEY_F1 = 59,
98    KEY_F2 = 60,
99    KEY_F3 = 61,
100    KEY_F4 = 62,
101    KEY_F5 = 63,
102    KEY_F6 = 64,
103    KEY_F7 = 65,
104    KEY_F8 = 66,
105    KEY_F9 = 67,
106    KEY_F10 = 68,
107    KEY_NUMLOCK = 69,
108    KEY_SCROLLLOCK = 70,
109    KEY_KP7 = 71,
110    KEY_KP8 = 72,
111    KEY_KP9 = 73,
112    KEY_KPMINUS = 74,
113    KEY_KP4 = 75,
114    KEY_KP5 = 76,
115    KEY_KP6 = 77,
116    KEY_KPPLUS = 78,
117    KEY_KP1 = 79,
118    KEY_KP2 = 80,
119    KEY_KP3 = 81,
120    KEY_KP0 = 82,
121    KEY_KPDOT = 83,
122    KEY_ZENKAKUHANKAKU = 85,
123    KEY_102ND = 86,
124    KEY_F11 = 87,
125    KEY_F12 = 88,
126    KEY_RO = 89,
127    KEY_KATAKANA = 90,
128    KEY_HIRAGANA = 91,
129    KEY_HENKAN = 92,
130    KEY_KATAKANAHIRAGANA = 93,
131    KEY_MUHENKAN = 94,
132    KEY_KPJPCOMMA = 95,
133    KEY_KPENTER = 96,
134    KEY_RIGHTCTRL = 97,
135    KEY_KPSLASH = 98,
136    KEY_SYSRQ = 99,
137    KEY_RIGHTALT = 100,
138    KEY_LINEFEED = 101,
139    KEY_HOME = 102,
140    KEY_UP = 103,
141    KEY_PAGEUP = 104,
142    KEY_LEFT = 105,
143    KEY_RIGHT = 106,
144    KEY_END = 107,
145    KEY_DOWN = 108,
146    KEY_PAGEDOWN = 109,
147    KEY_INSERT = 110,
148    KEY_DELETE = 111,
149    KEY_MACRO = 112,
150    KEY_MUTE = 113,
151    KEY_VOLUMEDOWN = 114,
152    KEY_VOLUMEUP = 115,
153    KEY_POWER = 116, /* SC System Power Down */
154    KEY_KPEQUAL = 117,
155    KEY_KPPLUSMINUS = 118,
156    KEY_PAUSE = 119,
157    KEY_SCALE = 120, /* AL Compiz Scale (Expose) */
158    KEY_KPCOMMA = 121,
159    KEY_HANGEUL = 122,
160    KEY_HANJA = 123,
161    KEY_YEN = 124,
162    KEY_LEFTMETA = 125,
163    KEY_RIGHTMETA = 126,
164    KEY_COMPOSE = 127,
165    KEY_STOP = 128, /* AC Stop */
166    KEY_AGAIN = 129,
167    KEY_PROPS = 130, /* AC Properties */
168    KEY_UNDO = 131,  /* AC Undo */
169    KEY_FRONT = 132,
170    KEY_COPY = 133,  /* AC Copy */
171    KEY_OPEN = 134,  /* AC Open */
172    KEY_PASTE = 135, /* AC Paste */
173    KEY_FIND = 136,  /* AC Search */
174    KEY_CUT = 137,   /* AC Cut */
175    KEY_HELP = 138,  /* AL Integrated Help Center */
176    KEY_MENU = 139,  /* Menu (show menu) */
177    KEY_CALC = 140,  /* AL Calculator */
178    KEY_SETUP = 141,
179    KEY_SLEEP = 142,  /* SC System Sleep */
180    KEY_WAKEUP = 143, /* System Wake Up */
181    KEY_FILE = 144,   /* AL Local Machine Browser */
182    KEY_SENDFILE = 145,
183    KEY_DELETEFILE = 146,
184    KEY_XFER = 147,
185    KEY_PROG1 = 148,
186    KEY_PROG2 = 149,
187    KEY_WWW = 150, /* AL Internet Browser */
188    KEY_MSDOS = 151,
189    KEY_COFFEE = 152, /* AL Terminal Lock/Screensaver */
190    KEY_DIRECTION = 153,
191    KEY_ROTATE_DISPLAY = 153,
192    KEY_CYCLEWINDOWS = 154,
193    KEY_MAIL = 155,
194    KEY_BOOKMARKS = 156, /* AC Bookmarks */
195    KEY_COMPUTER = 157,
196    KEY_BACK = 158,    /* AC Back */
197    KEY_FORWARD = 159, /* AC Forward */
198    KEY_CLOSECD = 160,
199    KEY_EJECTCD = 161,
200    KEY_EJECTCLOSECD = 162,
201    KEY_NEXTSONG = 163,
202    KEY_PLAYPAUSE = 164,
203    KEY_PREVIOUSSONG = 165,
204    KEY_STOPCD = 166,
205    KEY_RECORD = 167,
206    KEY_REWIND = 168,
207    KEY_PHONE = 169, /* Media Select Telephone */
208    KEY_ISO = 170,
209    KEY_CONFIG = 171,   /* AL Consumer Control Configuration */
210    KEY_HOMEPAGE = 172, /* AC Home */
211    KEY_REFRESH = 173,  /* AC Refresh */
212    KEY_EXIT = 174,     /* AC Exit */
213    KEY_MOVE = 175,
214    KEY_EDIT = 176,
215    KEY_SCROLLUP = 177,
216    KEY_SCROLLDOWN = 178,
217    KEY_KPLEFTPAREN = 179,
218    KEY_KPRIGHTPAREN = 180,
219    KEY_NEW = 181,  /* AC New */
220    KEY_REDO = 182, /* AC Redo/Repeat */
221    KEY_F13 = 183,
222    KEY_F14 = 184,
223    KEY_F15 = 185,
224    KEY_F16 = 186,
225    KEY_F17 = 187,
226    KEY_F18 = 188,
227    KEY_F19 = 189,
228    KEY_F20 = 190,
229    KEY_F21 = 191,
230    KEY_F22 = 192,
231    KEY_F23 = 193,
232    KEY_F24 = 194,
233    KEY_PLAYCD = 200,
234    KEY_PAUSECD = 201,
235    KEY_PROG3 = 202,
236    KEY_PROG4 = 203,
237    KEY_DASHBOARD = 204, /* AL Dashboard */
238    KEY_SUSPEND = 205,
239    KEY_CLOSE = 206, /* AC Close */
240    KEY_PLAY = 207,
241    KEY_FASTFORWARD = 208,
242    KEY_BASSBOOST = 209,
243    KEY_PRINT = 210, /* AC Print */
244    KEY_HP = 211,
245    KEY_CAMERA = 212,
246    KEY_SOUND = 213,
247    KEY_QUESTION = 214,
248    KEY_EMAIL = 215,
249    KEY_CHAT = 216,
250    KEY_SEARCH = 217,
251    KEY_CONNECT = 218,
252    KEY_FINANCE = 219,
253    KEY_SPORT = 220,
254    KEY_SHOP = 221,
255    KEY_ALTERASE = 222,
256    KEY_CANCEL = 223,
257    KEY_BRIGHTNESSDOWN = 224,
258    KEY_BRIGHTNESSUP = 225,
259    KEY_MEDIA = 226,
260    KEY_SWITCHVIDEOMODE = 227,
261    KEY_KBDILLUMTOGGLE = 228,
262    KEY_KBDILLUMDOWN = 229,
263    KEY_KBDILLUMUP = 230,
264    KEY_SEND = 231,
265    KEY_REPLY = 232,
266    KEY_FORWARDMAIL = 233,
267    KEY_SAVE = 234,
268    KEY_DOCUMENTS = 235,
269    KEY_BATTERY = 236,
270    KEY_BLUETOOTH = 237,
271    KEY_WLAN = 238,
272    KEY_UWB = 239,
273    KEY_UNKNOWN = 240,
274    KEY_VIDEO_NEXT = 241,
275    KEY_VIDEO_PREV = 242,
276    KEY_BRIGHTNESS_CYCLE = 243,
277    KEY_BRIGHTNESS_AUTO = 244,
278    KEY_DISPLAY_OFF = 245,
279    KEY_WWAN = 246,
280    KEY_RFKILL = 247,
281    KEY_MICMUTE = 248,
282    BTN_0 = 0x100,
283    BTN_1 = 0x101,
284    BTN_2 = 0x102,
285    BTN_3 = 0x103,
286    BTN_4 = 0x104,
287    BTN_5 = 0x105,
288    BTN_6 = 0x106,
289    BTN_7 = 0x107,
290    BTN_8 = 0x108,
291    BTN_9 = 0x109,
292    BTN_LEFT = 0x110,
293    BTN_RIGHT = 0x111,
294    BTN_MIDDLE = 0x112,
295    BTN_SIDE = 0x113,
296    BTN_EXTRA = 0x114,
297    BTN_FORWARD = 0x115,
298    BTN_BACK = 0x116,
299    BTN_TASK = 0x117,
300    BTN_TRIGGER = 0x120,
301    BTN_THUMB = 0x121,
302    BTN_THUMB2 = 0x122,
303    BTN_TOP = 0x123,
304    BTN_TOP2 = 0x124,
305    BTN_PINKIE = 0x125,
306    BTN_BASE = 0x126,
307    BTN_BASE2 = 0x127,
308    BTN_BASE3 = 0x128,
309    BTN_BASE4 = 0x129,
310    BTN_BASE5 = 0x12a,
311    BTN_BASE6 = 0x12b,
312    BTN_DEAD = 0x12f,
313    BTN_SOUTH = 0x130,
314    BTN_EAST = 0x131,
315    BTN_C = 0x132,
316    BTN_NORTH = 0x133,
317    BTN_WEST = 0x134,
318    BTN_Z = 0x135,
319    BTN_TL = 0x136,
320    BTN_TR = 0x137,
321    BTN_TL2 = 0x138,
322    BTN_TR2 = 0x139,
323    BTN_SELECT = 0x13a,
324    BTN_START = 0x13b,
325    BTN_MODE = 0x13c,
326    BTN_THUMBL = 0x13d,
327    BTN_THUMBR = 0x13e,
328    BTN_TOOL_PEN = 0x140,
329    BTN_TOOL_RUBBER = 0x141,
330    BTN_TOOL_BRUSH = 0x142,
331    BTN_TOOL_PENCIL = 0x143,
332    BTN_TOOL_AIRBRUSH = 0x144,
333    BTN_TOOL_FINGER = 0x145,
334    BTN_TOOL_MOUSE = 0x146,
335    BTN_TOOL_LENS = 0x147,
336    BTN_TOOL_QUINTTAP = 0x148, /* Five fingers on trackpad */
337    BTN_TOUCH = 0x14a,
338    BTN_STYLUS = 0x14b,
339    BTN_STYLUS2 = 0x14c,
340    BTN_TOOL_DOUBLETAP = 0x14d,
341    BTN_TOOL_TRIPLETAP = 0x14e,
342    BTN_TOOL_QUADTAP = 0x14f, /* Four fingers on trackpad */
343    BTN_GEAR_DOWN = 0x150,
344    BTN_GEAR_UP = 0x151,
345    KEY_OK = 0x160,
346    KEY_SELECT = 0x161,
347    KEY_GOTO = 0x162,
348    KEY_CLEAR = 0x163,
349    KEY_POWER2 = 0x164,
350    KEY_OPTION = 0x165,
351    KEY_INFO = 0x166, /* AL OEM Features/Tips/Tutorial */
352    KEY_TIME = 0x167,
353    KEY_VENDOR = 0x168,
354    KEY_ARCHIVE = 0x169,
355    KEY_PROGRAM = 0x16a, /* Media Select Program Guide */
356    KEY_CHANNEL = 0x16b,
357    KEY_FAVORITES = 0x16c,
358    KEY_EPG = 0x16d,
359    KEY_PVR = 0x16e, /* Media Select Home */
360    KEY_MHP = 0x16f,
361    KEY_LANGUAGE = 0x170,
362    KEY_TITLE = 0x171,
363    KEY_SUBTITLE = 0x172,
364    KEY_ANGLE = 0x173,
365    KEY_ZOOM = 0x174,
366    KEY_FULL_SCREEN = 0x174,
367    KEY_MODE = 0x175,
368    KEY_KEYBOARD = 0x176,
369    KEY_SCREEN = 0x177,
370    KEY_PC = 0x178,   /* Media Select Computer */
371    KEY_TV = 0x179,   /* Media Select TV */
372    KEY_TV2 = 0x17a,  /* Media Select Cable */
373    KEY_VCR = 0x17b,  /* Media Select VCR */
374    KEY_VCR2 = 0x17c, /* VCR Plus */
375    KEY_SAT = 0x17d,  /* Media Select Satellite */
376    KEY_SAT2 = 0x17e,
377    KEY_CD = 0x17f,   /* Media Select CD */
378    KEY_TAPE = 0x180, /* Media Select Tape */
379    KEY_RADIO = 0x181,
380    KEY_TUNER = 0x182, /* Media Select Tuner */
381    KEY_PLAYER = 0x183,
382    KEY_TEXT = 0x184,
383    KEY_DVD = 0x185, /* Media Select DVD */
384    KEY_AUX = 0x186,
385    KEY_MP3 = 0x187,
386    KEY_AUDIO = 0x188, /* AL Audio Browser */
387    KEY_VIDEO = 0x189, /* AL Movie Browser */
388    KEY_DIRECTORY = 0x18a,
389    KEY_LIST = 0x18b,
390    KEY_MEMO = 0x18c, /* Media Select Messages */
391    KEY_CALENDAR = 0x18d,
392    KEY_RED = 0x18e,
393    KEY_GREEN = 0x18f,
394    KEY_YELLOW = 0x190,
395    KEY_BLUE = 0x191,
396    KEY_CHANNELUP = 0x192,   /* Channel Increment */
397    KEY_CHANNELDOWN = 0x193, /* Channel Decrement */
398    KEY_FIRST = 0x194,
399    KEY_LAST = 0x195, /* Recall Last */
400    KEY_AB = 0x196,
401    KEY_NEXT = 0x197,
402    KEY_RESTART = 0x198,
403    KEY_SLOW = 0x199,
404    KEY_SHUFFLE = 0x19a,
405    KEY_BREAK = 0x19b,
406    KEY_PREVIOUS = 0x19c,
407    KEY_DIGITS = 0x19d,
408    KEY_TEEN = 0x19e,
409    KEY_TWEN = 0x19f,
410    KEY_VIDEOPHONE = 0x1a0,     /* Media Select Video Phone */
411    KEY_GAMES = 0x1a1,          /* Media Select Games */
412    KEY_ZOOMIN = 0x1a2,         /* AC Zoom In */
413    KEY_ZOOMOUT = 0x1a3,        /* AC Zoom Out */
414    KEY_ZOOMRESET = 0x1a4,      /* AC Zoom */
415    KEY_WORDPROCESSOR = 0x1a5,  /* AL Word Processor */
416    KEY_EDITOR = 0x1a6,         /* AL Text Editor */
417    KEY_SPREADSHEET = 0x1a7,    /* AL Spreadsheet */
418    KEY_GRAPHICSEDITOR = 0x1a8, /* AL Graphics Editor */
419    KEY_PRESENTATION = 0x1a9,   /* AL Presentation App */
420    KEY_DATABASE = 0x1aa,       /* AL Database App */
421    KEY_NEWS = 0x1ab,           /* AL Newsreader */
422    KEY_VOICEMAIL = 0x1ac,      /* AL Voicemail */
423    KEY_ADDRESSBOOK = 0x1ad,    /* AL Contacts/Address Book */
424    KEY_MESSENGER = 0x1ae,      /* AL Instant Messaging */
425    KEY_DISPLAYTOGGLE = 0x1af,  /* Turn display (LCD) on and off */
426    KEY_SPELLCHECK = 0x1b0,     /* AL Spell Check */
427    KEY_LOGOFF = 0x1b1,         /* AL Logoff */
428    KEY_DOLLAR = 0x1b2,
429    KEY_EURO = 0x1b3,
430    KEY_FRAMEBACK = 0x1b4, /* Consumer - transport controls */
431    KEY_FRAMEFORWARD = 0x1b5,
432    KEY_CONTEXT_MENU = 0x1b6,   /* GenDesc - system context menu */
433    KEY_MEDIA_REPEAT = 0x1b7,   /* Consumer - transport control */
434    KEY_10CHANNELSUP = 0x1b8,   /* 10 channels up (10+) */
435    KEY_10CHANNELSDOWN = 0x1b9, /* 10 channels down (10-) */
436    KEY_IMAGES = 0x1ba,         /* AL Image Browser */
437    KEY_DEL_EOL = 0x1c0,
438    KEY_DEL_EOS = 0x1c1,
439    KEY_INS_LINE = 0x1c2,
440    KEY_DEL_LINE = 0x1c3,
441    KEY_FN = 0x1d0,
442    KEY_FN_ESC = 0x1d1,
443    KEY_FN_F1 = 0x1d2,
444    KEY_FN_F2 = 0x1d3,
445    KEY_FN_F3 = 0x1d4,
446    KEY_FN_F4 = 0x1d5,
447    KEY_FN_F5 = 0x1d6,
448    KEY_FN_F6 = 0x1d7,
449    KEY_FN_F7 = 0x1d8,
450    KEY_FN_F8 = 0x1d9,
451    KEY_FN_F9 = 0x1da,
452    KEY_FN_F10 = 0x1db,
453    KEY_FN_F11 = 0x1dc,
454    KEY_FN_F12 = 0x1dd,
455    KEY_FN_1 = 0x1de,
456    KEY_FN_2 = 0x1df,
457    KEY_FN_D = 0x1e0,
458    KEY_FN_E = 0x1e1,
459    KEY_FN_F = 0x1e2,
460    KEY_FN_S = 0x1e3,
461    KEY_FN_B = 0x1e4,
462    KEY_BRL_DOT1 = 0x1f1,
463    KEY_BRL_DOT2 = 0x1f2,
464    KEY_BRL_DOT3 = 0x1f3,
465    KEY_BRL_DOT4 = 0x1f4,
466    KEY_BRL_DOT5 = 0x1f5,
467    KEY_BRL_DOT6 = 0x1f6,
468    KEY_BRL_DOT7 = 0x1f7,
469    KEY_BRL_DOT8 = 0x1f8,
470    KEY_BRL_DOT9 = 0x1f9,
471    KEY_BRL_DOT10 = 0x1fa,
472    KEY_NUMERIC_0 = 0x200, /* used by phones, remote controls, */
473    KEY_NUMERIC_1 = 0x201, /* and other keypads */
474    KEY_NUMERIC_2 = 0x202,
475    KEY_NUMERIC_3 = 0x203,
476    KEY_NUMERIC_4 = 0x204,
477    KEY_NUMERIC_5 = 0x205,
478    KEY_NUMERIC_6 = 0x206,
479    KEY_NUMERIC_7 = 0x207,
480    KEY_NUMERIC_8 = 0x208,
481    KEY_NUMERIC_9 = 0x209,
482    KEY_NUMERIC_STAR = 0x20a,
483    KEY_NUMERIC_POUND = 0x20b,
484    KEY_NUMERIC_A = 0x20c, /* Phone key A - HUT Telephony 0xb9 */
485    KEY_NUMERIC_B = 0x20d,
486    KEY_NUMERIC_C = 0x20e,
487    KEY_NUMERIC_D = 0x20f,
488    KEY_CAMERA_FOCUS = 0x210,
489    KEY_WPS_BUTTON = 0x211,      /* WiFi Protected Setup key */
490    KEY_TOUCHPAD_TOGGLE = 0x212, /* Request switch touchpad on or off */
491    KEY_TOUCHPAD_ON = 0x213,
492    KEY_TOUCHPAD_OFF = 0x214,
493    KEY_CAMERA_ZOOMIN = 0x215,
494    KEY_CAMERA_ZOOMOUT = 0x216,
495    KEY_CAMERA_UP = 0x217,
496    KEY_CAMERA_DOWN = 0x218,
497    KEY_CAMERA_LEFT = 0x219,
498    KEY_CAMERA_RIGHT = 0x21a,
499    KEY_ATTENDANT_ON = 0x21b,
500    KEY_ATTENDANT_OFF = 0x21c,
501    KEY_ATTENDANT_TOGGLE = 0x21d, /* Attendant call on or off */
502    KEY_LIGHTS_TOGGLE = 0x21e,    /* Reading light on or off */
503    BTN_DPAD_UP = 0x220,
504    BTN_DPAD_DOWN = 0x221,
505    BTN_DPAD_LEFT = 0x222,
506    BTN_DPAD_RIGHT = 0x223,
507    KEY_ALS_TOGGLE = 0x230,   /* Ambient light sensor */
508    KEY_BUTTONCONFIG = 0x240, /* AL Button Configuration */
509    KEY_TASKMANAGER = 0x241,  /* AL Task/Project Manager */
510    KEY_JOURNAL = 0x242,      /* AL Log/Journal/Timecard */
511    KEY_CONTROLPANEL = 0x243, /* AL Control Panel */
512    KEY_APPSELECT = 0x244,    /* AL Select Task/Application */
513    KEY_SCREENSAVER = 0x245,  /* AL Screen Saver */
514    KEY_VOICECOMMAND = 0x246, /* Listening Voice Command */
515    KEY_ASSISTANT = 0x247,
516    KEY_KBD_LAYOUT_NEXT = 0x248,
517    KEY_BRIGHTNESS_MIN = 0x250, /* Set Brightness to Minimum */
518    KEY_BRIGHTNESS_MAX = 0x251, /* Set Brightness to Maximum */
519    KEY_KBDINPUTASSIST_PREV = 0x260,
520    KEY_KBDINPUTASSIST_NEXT = 0x261,
521    KEY_KBDINPUTASSIST_PREVGROUP = 0x262,
522    KEY_KBDINPUTASSIST_NEXTGROUP = 0x263,
523    KEY_KBDINPUTASSIST_ACCEPT = 0x264,
524    KEY_KBDINPUTASSIST_CANCEL = 0x265,
525    KEY_RIGHT_UP = 0x266,
526    KEY_RIGHT_DOWN = 0x267,
527    KEY_LEFT_UP = 0x268,
528    KEY_LEFT_DOWN = 0x269,
529    KEY_ROOT_MENU = 0x26a,
530    KEY_MEDIA_TOP_MENU = 0x26b,
531    KEY_NUMERIC_11 = 0x26c,
532    KEY_NUMERIC_12 = 0x26d,
533    KEY_AUDIO_DESC = 0x26e,
534    KEY_3D_MODE = 0x26f,
535    KEY_NEXT_FAVORITE = 0x270,
536    KEY_STOP_RECORD = 0x271,
537    KEY_PAUSE_RECORD = 0x272,
538    KEY_VOD = 0x273, /* Video on Demand */
539    KEY_UNMUTE = 0x274,
540    KEY_FASTREVERSE = 0x275,
541    KEY_SLOWREVERSE = 0x276,
542    KEY_DATA = 0x277,
543    KEY_ONSCREEN_KEYBOARD = 0x278,
544    KEY_PRIVACY_SCREEN_TOGGLE = 0x279,
545    KEY_SELECTIVE_SCREENSHOT = 0x27a,
546    BTN_TRIGGER_HAPPY1 = 0x2c0,
547    BTN_TRIGGER_HAPPY2 = 0x2c1,
548    BTN_TRIGGER_HAPPY3 = 0x2c2,
549    BTN_TRIGGER_HAPPY4 = 0x2c3,
550    BTN_TRIGGER_HAPPY5 = 0x2c4,
551    BTN_TRIGGER_HAPPY6 = 0x2c5,
552    BTN_TRIGGER_HAPPY7 = 0x2c6,
553    BTN_TRIGGER_HAPPY8 = 0x2c7,
554    BTN_TRIGGER_HAPPY9 = 0x2c8,
555    BTN_TRIGGER_HAPPY10 = 0x2c9,
556    BTN_TRIGGER_HAPPY11 = 0x2ca,
557    BTN_TRIGGER_HAPPY12 = 0x2cb,
558    BTN_TRIGGER_HAPPY13 = 0x2cc,
559    BTN_TRIGGER_HAPPY14 = 0x2cd,
560    BTN_TRIGGER_HAPPY15 = 0x2ce,
561    BTN_TRIGGER_HAPPY16 = 0x2cf,
562    BTN_TRIGGER_HAPPY17 = 0x2d0,
563    BTN_TRIGGER_HAPPY18 = 0x2d1,
564    BTN_TRIGGER_HAPPY19 = 0x2d2,
565    BTN_TRIGGER_HAPPY20 = 0x2d3,
566    BTN_TRIGGER_HAPPY21 = 0x2d4,
567    BTN_TRIGGER_HAPPY22 = 0x2d5,
568    BTN_TRIGGER_HAPPY23 = 0x2d6,
569    BTN_TRIGGER_HAPPY24 = 0x2d7,
570    BTN_TRIGGER_HAPPY25 = 0x2d8,
571    BTN_TRIGGER_HAPPY26 = 0x2d9,
572    BTN_TRIGGER_HAPPY27 = 0x2da,
573    BTN_TRIGGER_HAPPY28 = 0x2db,
574    BTN_TRIGGER_HAPPY29 = 0x2dc,
575    BTN_TRIGGER_HAPPY30 = 0x2dd,
576    BTN_TRIGGER_HAPPY31 = 0x2de,
577    BTN_TRIGGER_HAPPY32 = 0x2df,
578    BTN_TRIGGER_HAPPY33 = 0x2e0,
579    BTN_TRIGGER_HAPPY34 = 0x2e1,
580    BTN_TRIGGER_HAPPY35 = 0x2e2,
581    BTN_TRIGGER_HAPPY36 = 0x2e3,
582    BTN_TRIGGER_HAPPY37 = 0x2e4,
583    BTN_TRIGGER_HAPPY38 = 0x2e5,
584    BTN_TRIGGER_HAPPY39 = 0x2e6,
585    BTN_TRIGGER_HAPPY40 = 0x2e7,
586);
587
588#[test]
589fn from_str() {
590    use std::str::FromStr;
591
592    assert_eq!(Key::from_str("KEY_A"), Ok(Key::KEY_A));
593    assert!(Key::from_str("KEY_FOOBAR").is_err());
594}