1 /* Copyright © 2019 Raheman Vaiya.
2  *
3  * Permission is hereby granted, free of charge, to any person obtaining a
4  * copy of this software and associated documentation files (the "Software"),
5  * to deal in the Software without restriction, including without limitation
6  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
7  * and/or sell copies of the Software, and to permit persons to whom the
8  * Software is furnished to do so, subject to the following conditions:
9  *
10  * The above copyright notice and this permission notice (including the next
11  * paragraph) shall be included in all copies or substantial portions of the
12  * Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20  * DEALINGS IN THE SOFTWARE.
21  */
22 
23 #ifndef _KEYS_H_
24 #define _KEYS_H_
25 #define _KEYS_H_
26 
27 #ifdef __FreeBSD_disabled__
28 #include <dev/evdev/input-event-codes.h>
29 #else
30 #include <linux/input-event-codes.h>
31 #endif
32 
33 #include <stdint.h>
34 
35 #define MOD_ALT_GR 0x10
36 #define MOD_CTRL 0x8
37 #define MOD_SHIFT 0x4
38 #define MOD_SUPER 0x2
39 #define MOD_ALT 0x1
40 
41 #define KEY_NOOP 0x27b
42 
43 //Used for macros, bit of a kludge.
44 
45 #define MOD_TIMEOUT 0x20 //keysequence represents a timeout
46 
47 //Reserve the last 10 bits for the timeout value in ms.
48 #define TIMEOUT_KEY(ms) ((ms << 22) | 0x200000)
49 #define GET_TIMEOUT(key) (key >> 22)
50 #define MAX_TIMEOUT_LEN ((1<<10)-1)
51 
52 
53 struct keycode_table_ent {
54 	const char *name;
55 	const char *alt_name;
56 	const char *shifted_name;
57 };
58 
59 static const struct keycode_table_ent keycode_table[] = {
60 	[KEY_ESC] = { "esc", "escape", NULL },
61 	[KEY_1] = { "1", NULL, "!" },
62 	[KEY_2] = { "2", NULL, "@" },
63 	[KEY_3] = { "3", NULL, "#" },
64 	[KEY_4] = { "4", NULL, "$" },
65 	[KEY_5] = { "5", NULL, "%" },
66 	[KEY_6] = { "6", NULL, "^" },
67 	[KEY_7] = { "7", NULL, "&" },
68 	[KEY_8] = { "8", NULL, "*" },
69 	[KEY_9] = { "9", NULL, "(" },
70 	[KEY_0] = { "0", NULL, ")" },
71 	[KEY_MINUS] = { "-", "minus", "_" },
72 	[KEY_EQUAL] = { "=", "equal", "+" },
73 	[KEY_BACKSPACE] = { "backspace", NULL, NULL },
74 	[KEY_TAB] = { "tab", NULL, NULL },
75 	[KEY_Q] = { "q", NULL, "Q" },
76 	[KEY_W] = { "w", NULL, "W" },
77 	[KEY_E] = { "e", NULL, "E" },
78 	[KEY_R] = { "r", NULL, "R" },
79 	[KEY_T] = { "t", NULL, "T" },
80 	[KEY_Y] = { "y", NULL, "Y" },
81 	[KEY_U] = { "u", NULL, "U" },
82 	[KEY_I] = { "i", NULL, "I" },
83 	[KEY_O] = { "o", NULL, "O" },
84 	[KEY_P] = { "p", NULL, "P" },
85 	[KEY_LEFTBRACE] = { "[", "leftbrace", "{" },
86 	[KEY_RIGHTBRACE] = { "]", "rightbrace", "}" },
87 	[KEY_ENTER] = { "enter", NULL, NULL },
88 	[KEY_LEFTCTRL] = { "control", "leftcontrol", NULL },
89 	[KEY_A] = { "a", NULL, "A" },
90 	[KEY_S] = { "s", NULL, "S" },
91 	[KEY_D] = { "d", NULL, "D" },
92 	[KEY_F] = { "f", NULL, "F" },
93 	[KEY_G] = { "g", NULL, "G" },
94 	[KEY_H] = { "h", NULL, "H" },
95 	[KEY_J] = { "j", NULL, "J" },
96 	[KEY_K] = { "k", NULL, "K" },
97 	[KEY_L] = { "l", NULL, "L" },
98 	[KEY_SEMICOLON] = { ";", "semicolon", ":" },
99 	[KEY_APOSTROPHE] = { "'", "apostrophe", "\"" },
100 	[KEY_GRAVE] = { "`", "grave", "~" },
101 	[KEY_LEFTSHIFT] = { "shift", "leftshift", NULL },
102 	[KEY_BACKSLASH] = { "\\", "backslash", "|" },
103 	[KEY_Z] = { "z", NULL, "Z" },
104 	[KEY_X] = { "x", NULL, "X" },
105 	[KEY_C] = { "c", NULL, "C" },
106 	[KEY_V] = { "v", NULL, "V" },
107 	[KEY_B] = { "b", NULL, "B" },
108 	[KEY_N] = { "n", NULL, "N" },
109 	[KEY_M] = { "m", NULL, "M" },
110 	[KEY_COMMA] = { ",", "comma", "<" },
111 	[KEY_DOT] = { ".", "dot", ">" },
112 	[KEY_SLASH] = { "/", "slash", "?" },
113 	[KEY_RIGHTSHIFT] = { "rightshift", NULL, NULL },
114 	[KEY_KPASTERISK] = { "kpasterisk", NULL, NULL },
115 	[KEY_LEFTALT] = { "alt", "leftalt", NULL },
116 	[KEY_SPACE] = { "space", NULL, NULL },
117 	[KEY_CAPSLOCK] = { "capslock", NULL, NULL },
118 	[KEY_F1] = { "f1", NULL, NULL },
119 	[KEY_F2] = { "f2", NULL, NULL },
120 	[KEY_F3] = { "f3", NULL, NULL },
121 	[KEY_F4] = { "f4", NULL, NULL },
122 	[KEY_F5] = { "f5", NULL, NULL },
123 	[KEY_F6] = { "f6", NULL, NULL },
124 	[KEY_F7] = { "f7", NULL, NULL },
125 	[KEY_F8] = { "f8", NULL, NULL },
126 	[KEY_F9] = { "f9", NULL, NULL },
127 	[KEY_F10] = { "f10", NULL, NULL },
128 	[KEY_NUMLOCK] = { "numlock", NULL, NULL },
129 	[KEY_SCROLLLOCK] = { "scrolllock", NULL, NULL },
130 	[KEY_KP7] = { "kp7", NULL, NULL },
131 	[KEY_KP8] = { "kp8", NULL, NULL },
132 	[KEY_KP9] = { "kp9", NULL, NULL },
133 	[KEY_KPMINUS] = { "kpminus", NULL, NULL },
134 	[KEY_KP4] = { "kp4", NULL, NULL },
135 	[KEY_KP5] = { "kp5", NULL, NULL },
136 	[KEY_KP6] = { "kp6", NULL, NULL },
137 	[KEY_KPPLUS] = { "kpplus", NULL, NULL },
138 	[KEY_KP1] = { "kp1", NULL, NULL },
139 	[KEY_KP2] = { "kp2", NULL, NULL },
140 	[KEY_KP3] = { "kp3", NULL, NULL },
141 	[KEY_KP0] = { "kp0", NULL, NULL },
142 	[KEY_KPDOT] = { "kpdot", NULL, NULL },
143 	[KEY_ZENKAKUHANKAKU] = { "zenkakuhankaku", NULL, NULL },
144 	[KEY_102ND] = { "102nd", NULL, NULL },
145 	[KEY_F11] = { "f11", NULL, NULL },
146 	[KEY_F12] = { "f12", NULL, NULL },
147 	[KEY_RO] = { "ro", NULL, NULL },
148 	[KEY_KATAKANA] = { "katakana", NULL, NULL },
149 	[KEY_HIRAGANA] = { "hiragana", NULL, NULL },
150 	[KEY_HENKAN] = { "henkan", NULL, NULL },
151 	[KEY_KATAKANAHIRAGANA] = { "katakanahiragana", NULL, NULL },
152 	[KEY_MUHENKAN] = { "muhenkan", NULL, NULL },
153 	[KEY_KPJPCOMMA] = { "kpjpcomma", NULL, NULL },
154 	[KEY_KPENTER] = { "kpenter", NULL, NULL },
155 	[KEY_RIGHTCTRL] = { "rightcontrol", NULL, NULL },
156 	[KEY_KPSLASH] = { "kpslash", NULL, NULL },
157 	[KEY_SYSRQ] = { "sysrq", NULL, NULL },
158 	[KEY_RIGHTALT] = { "rightalt", NULL, NULL },
159 	[KEY_LINEFEED] = { "linefeed", NULL, NULL },
160 	[KEY_HOME] = { "home", NULL, NULL },
161 	[KEY_UP] = { "up", NULL, NULL },
162 	[KEY_PAGEUP] = { "pageup", NULL, NULL },
163 	[KEY_LEFT] = { "left", NULL, NULL },
164 	[KEY_RIGHT] = { "right", NULL, NULL },
165 	[KEY_END] = { "end", NULL, NULL },
166 	[KEY_DOWN] = { "down", NULL, NULL },
167 	[KEY_PAGEDOWN] = { "pagedown", NULL, NULL },
168 	[KEY_INSERT] = { "insert", NULL, NULL },
169 	[KEY_DELETE] = { "delete", NULL, NULL },
170 	[KEY_MACRO] = { "macro", NULL, NULL },
171 	[KEY_MUTE] = { "mute", NULL, NULL },
172 	[KEY_VOLUMEDOWN] = { "volumedown", NULL, NULL },
173 	[KEY_VOLUMEUP] = { "volumeup", NULL, NULL },
174 	[KEY_POWER] = { "power", NULL, NULL },
175 	[KEY_KPEQUAL] = { "kpequal", NULL, NULL },
176 	[KEY_KPPLUSMINUS] = { "kpplusminus", NULL, NULL },
177 	[KEY_PAUSE] = { "pause", NULL, NULL },
178 	[KEY_SCALE] = { "scale", NULL, NULL },
179 	[KEY_KPCOMMA] = { "kpcomma", NULL, NULL },
180 	[KEY_HANGEUL] = { "hangeul", NULL, NULL },
181 	[KEY_HANJA] = { "hanja", NULL, NULL },
182 	[KEY_YEN] = { "yen", NULL, NULL },
183 	[KEY_LEFTMETA] = { "meta", "leftmeta", NULL },
184 	[KEY_RIGHTMETA] = { "rightmeta", NULL, NULL },
185 	[KEY_COMPOSE] = { "compose", NULL, NULL },
186 	[KEY_STOP] = { "stop", NULL, NULL },
187 	[KEY_AGAIN] = { "again", NULL, NULL },
188 	[KEY_PROPS] = { "props", NULL, NULL },
189 	[KEY_UNDO] = { "undo", NULL, NULL },
190 	[KEY_FRONT] = { "front", NULL, NULL },
191 	[KEY_COPY] = { "copy", NULL, NULL },
192 	[KEY_OPEN] = { "open", NULL, NULL },
193 	[KEY_PASTE] = { "paste", NULL, NULL },
194 	[KEY_FIND] = { "find", NULL, NULL },
195 	[KEY_CUT] = { "cut", NULL, NULL },
196 	[KEY_HELP] = { "help", NULL, NULL },
197 	[KEY_MENU] = { "menu", NULL, NULL },
198 	[KEY_CALC] = { "calc", NULL, NULL },
199 	[KEY_SETUP] = { "setup", NULL, NULL },
200 	[KEY_SLEEP] = { "sleep", NULL, NULL },
201 	[KEY_WAKEUP] = { "wakeup", NULL, NULL },
202 	[KEY_FILE] = { "file", NULL, NULL },
203 	[KEY_SENDFILE] = { "sendfile", NULL, NULL },
204 	[KEY_DELETEFILE] = { "deletefile", NULL, NULL },
205 	[KEY_XFER] = { "xfer", NULL, NULL },
206 	[KEY_PROG1] = { "prog1", NULL, NULL },
207 	[KEY_PROG2] = { "prog2", NULL, NULL },
208 	[KEY_WWW] = { "www", NULL, NULL },
209 	[KEY_MSDOS] = { "msdos", NULL, NULL },
210 	[KEY_COFFEE] = { "coffee", NULL, NULL },
211 	[KEY_ROTATE_DISPLAY] = { "display", NULL, NULL },
212 	[KEY_CYCLEWINDOWS] = { "cyclewindows", NULL, NULL },
213 	[KEY_MAIL] = { "mail", NULL, NULL },
214 	[KEY_BOOKMARKS] = { "bookmarks", NULL, NULL },
215 	[KEY_COMPUTER] = { "computer", NULL, NULL },
216 	[KEY_BACK] = { "back", NULL, NULL },
217 	[KEY_FORWARD] = { "forward", NULL, NULL },
218 	[KEY_CLOSECD] = { "closecd", NULL, NULL },
219 	[KEY_EJECTCD] = { "ejectcd", NULL, NULL },
220 	[KEY_EJECTCLOSECD] = { "ejectclosecd", NULL, NULL },
221 	[KEY_NEXTSONG] = { "nextsong", NULL, NULL },
222 	[KEY_PLAYPAUSE] = { "playpause", NULL, NULL },
223 	[KEY_PREVIOUSSONG] = { "previoussong", NULL, NULL },
224 	[KEY_STOPCD] = { "stopcd", NULL, NULL },
225 	[KEY_RECORD] = { "record", NULL, NULL },
226 	[KEY_REWIND] = { "rewind", NULL, NULL },
227 	[KEY_PHONE] = { "phone", NULL, NULL },
228 	[KEY_ISO] = { "iso", NULL, NULL },
229 	[KEY_CONFIG] = { "config", NULL, NULL },
230 	[KEY_HOMEPAGE] = { "homepage", NULL, NULL },
231 	[KEY_REFRESH] = { "refresh", NULL, NULL },
232 	[KEY_EXIT] = { "exit", NULL, NULL },
233 	[KEY_MOVE] = { "move", NULL, NULL },
234 	[KEY_EDIT] = { "edit", NULL, NULL },
235 	[KEY_SCROLLUP] = { "scrollup", NULL, NULL },
236 	[KEY_SCROLLDOWN] = { "scrolldown", NULL, NULL },
237 	[KEY_KPLEFTPAREN] = { "kpleftparen", NULL, NULL },
238 	[KEY_KPRIGHTPAREN] = { "kprightparen", NULL, NULL },
239 	[KEY_NEW] = { "new", NULL, NULL },
240 	[KEY_REDO] = { "redo", NULL, NULL },
241 	[KEY_F13] = { "f13", NULL, NULL },
242 	[KEY_F14] = { "f14", NULL, NULL },
243 	[KEY_F15] = { "f15", NULL, NULL },
244 	[KEY_F16] = { "f16", NULL, NULL },
245 	[KEY_F17] = { "f17", NULL, NULL },
246 	[KEY_F18] = { "f18", NULL, NULL },
247 	[KEY_F19] = { "f19", NULL, NULL },
248 	[KEY_F20] = { "f20", NULL, NULL },
249 	[KEY_F21] = { "f21", NULL, NULL },
250 	[KEY_F22] = { "f22", NULL, NULL },
251 	[KEY_F23] = { "f23", NULL, NULL },
252 	[KEY_F24] = { "f24", NULL, NULL },
253 	[KEY_PLAYCD] = { "playcd", NULL, NULL },
254 	[KEY_PAUSECD] = { "pausecd", NULL, NULL },
255 	[KEY_PROG3] = { "prog3", NULL, NULL },
256 	[KEY_PROG4] = { "prog4", NULL, NULL },
257 	[KEY_DASHBOARD] = { "dashboard", NULL, NULL },
258 	[KEY_SUSPEND] = { "suspend", NULL, NULL },
259 	[KEY_CLOSE] = { "close", NULL, NULL },
260 	[KEY_PLAY] = { "play", NULL, NULL },
261 	[KEY_FASTFORWARD] = { "fastforward", NULL, NULL },
262 	[KEY_BASSBOOST] = { "bassboost", NULL, NULL },
263 	[KEY_PRINT] = { "print", NULL, NULL },
264 	[KEY_HP] = { "hp", NULL, NULL },
265 	[KEY_CAMERA] = { "camera", NULL, NULL },
266 	[KEY_SOUND] = { "sound", NULL, NULL },
267 	[KEY_QUESTION] = { "question", NULL, NULL },
268 	[KEY_EMAIL] = { "email", NULL, NULL },
269 	[KEY_CHAT] = { "chat", NULL, NULL },
270 	[KEY_SEARCH] = { "search", NULL, NULL },
271 	[KEY_CONNECT] = { "connect", NULL, NULL },
272 	[KEY_FINANCE] = { "finance", NULL, NULL },
273 	[KEY_SPORT] = { "sport", NULL, NULL },
274 	[KEY_SHOP] = { "shop", NULL, NULL },
275 	[KEY_ALTERASE] = { "alterase", NULL, NULL },
276 	[KEY_CANCEL] = { "cancel", NULL, NULL },
277 	[KEY_BRIGHTNESSDOWN] = { "brightnessdown", NULL, NULL },
278 	[KEY_BRIGHTNESSUP] = { "brightnessup", NULL, NULL },
279 	[KEY_MEDIA] = { "media", NULL, NULL },
280 	[KEY_SWITCHVIDEOMODE] = { "switchvideomode", NULL, NULL },
281 	[KEY_KBDILLUMTOGGLE] = { "kbdillumtoggle", NULL, NULL },
282 	[KEY_KBDILLUMDOWN] = { "kbdillumdown", NULL, NULL },
283 	[KEY_KBDILLUMUP] = { "kbdillumup", NULL, NULL },
284 	[KEY_SEND] = { "send", NULL, NULL },
285 	[KEY_REPLY] = { "reply", NULL, NULL },
286 	[KEY_FORWARDMAIL] = { "forwardmail", NULL, NULL },
287 	[KEY_SAVE] = { "save", NULL, NULL },
288 	[KEY_DOCUMENTS] = { "documents", NULL, NULL },
289 	[KEY_BATTERY] = { "battery", NULL, NULL },
290 	[KEY_BLUETOOTH] = { "bluetooth", NULL, NULL },
291 	[KEY_WLAN] = { "wlan", NULL, NULL },
292 	[KEY_UWB] = { "uwb", NULL, NULL },
293 	[KEY_UNKNOWN] = { "unknown", NULL, NULL },
294 	[KEY_VIDEO_NEXT] = { "next", NULL, NULL },
295 	[KEY_VIDEO_PREV] = { "prev", NULL, NULL },
296 	[KEY_BRIGHTNESS_CYCLE] = { "cycle", NULL, NULL },
297 	[KEY_BRIGHTNESS_AUTO] = { "auto", NULL, NULL },
298 	[KEY_DISPLAY_OFF] = { "off", NULL, NULL },
299 	[KEY_WWAN] = { "wwan", NULL, NULL },
300 	[KEY_RFKILL] = { "rfkill", NULL, NULL },
301 	[KEY_MICMUTE] = { "micmute", NULL, NULL },
302 	[KEY_OK] = { "ok", NULL, NULL },
303 	[KEY_SELECT] = { "select", NULL, NULL },
304 	[KEY_GOTO] = { "goto", NULL, NULL },
305 	[KEY_CLEAR] = { "clear", NULL, NULL },
306 	[KEY_POWER2] = { "power2", NULL, NULL },
307 	[KEY_OPTION] = { "option", NULL, NULL },
308 	[KEY_INFO] = { "info", NULL, NULL },
309 	[KEY_TIME] = { "time", NULL, NULL },
310 	[KEY_VENDOR] = { "vendor", NULL, NULL },
311 	[KEY_ARCHIVE] = { "archive", NULL, NULL },
312 	[KEY_PROGRAM] = { "program", NULL, NULL },
313 	[KEY_CHANNEL] = { "channel", NULL, NULL },
314 	[KEY_FAVORITES] = { "favorites", NULL, NULL },
315 	[KEY_EPG] = { "epg", NULL, NULL },
316 	[KEY_PVR] = { "pvr", NULL, NULL },
317 	[KEY_MHP] = { "mhp", NULL, NULL },
318 	[KEY_LANGUAGE] = { "language", NULL, NULL },
319 	[KEY_TITLE] = { "title", NULL, NULL },
320 	[KEY_SUBTITLE] = { "subtitle", NULL, NULL },
321 	[KEY_ANGLE] = { "angle", NULL, NULL },
322 	[KEY_ZOOM] = { "zoom", NULL, NULL },
323 	[KEY_MODE] = { "mode", NULL, NULL },
324 	[KEY_KEYBOARD] = { "keyboard", NULL, NULL },
325 	[KEY_SCREEN] = { "screen", NULL, NULL },
326 	[KEY_PC] = { "pc", NULL, NULL },
327 	[KEY_TV] = { "tv", NULL, NULL },
328 	[KEY_TV2] = { "tv2", NULL, NULL },
329 	[KEY_VCR] = { "vcr", NULL, NULL },
330 	[KEY_VCR2] = { "vcr2", NULL, NULL },
331 	[KEY_SAT] = { "sat", NULL, NULL },
332 	[KEY_SAT2] = { "sat2", NULL, NULL },
333 	[KEY_CD] = { "cd", NULL, NULL },
334 	[KEY_TAPE] = { "tape", NULL, NULL },
335 	[KEY_RADIO] = { "radio", NULL, NULL },
336 	[KEY_TUNER] = { "tuner", NULL, NULL },
337 	[KEY_PLAYER] = { "player", NULL, NULL },
338 	[KEY_TEXT] = { "text", NULL, NULL },
339 	[KEY_DVD] = { "dvd", NULL, NULL },
340 	[KEY_AUX] = { "aux", NULL, NULL },
341 	[KEY_MP3] = { "mp3", NULL, NULL },
342 	[KEY_AUDIO] = { "audio", NULL, NULL },
343 	[KEY_VIDEO] = { "video", NULL, NULL },
344 	[KEY_DIRECTORY] = { "directory", NULL, NULL },
345 	[KEY_LIST] = { "list", NULL, NULL },
346 	[KEY_MEMO] = { "memo", NULL, NULL },
347 	[KEY_CALENDAR] = { "calendar", NULL, NULL },
348 	[KEY_RED] = { "red", NULL, NULL },
349 	[KEY_GREEN] = { "green", NULL, NULL },
350 	[KEY_YELLOW] = { "yellow", NULL, NULL },
351 	[KEY_BLUE] = { "blue", NULL, NULL },
352 	[KEY_CHANNELUP] = { "channelup", NULL, NULL },
353 	[KEY_CHANNELDOWN] = { "channeldown", NULL, NULL },
354 	[KEY_FIRST] = { "first", NULL, NULL },
355 	[KEY_LAST] = { "last", NULL, NULL },
356 	[KEY_AB] = { "ab", NULL, NULL },
357 	[KEY_NEXT] = { "next", NULL, NULL },
358 	[KEY_RESTART] = { "restart", NULL, NULL },
359 	[KEY_SLOW] = { "slow", NULL, NULL },
360 	[KEY_SHUFFLE] = { "shuffle", NULL, NULL },
361 	[KEY_BREAK] = { "break", NULL, NULL },
362 	[KEY_PREVIOUS] = { "previous", NULL, NULL },
363 	[KEY_DIGITS] = { "digits", NULL, NULL },
364 	[KEY_TEEN] = { "teen", NULL, NULL },
365 	[KEY_TWEN] = { "twen", NULL, NULL },
366 	[KEY_VIDEOPHONE] = { "videophone", NULL, NULL },
367 	[KEY_GAMES] = { "games", NULL, NULL },
368 	[KEY_ZOOMIN] = { "zoomin", NULL, NULL },
369 	[KEY_ZOOMOUT] = { "zoomout", NULL, NULL },
370 	[KEY_ZOOMRESET] = { "zoomreset", NULL, NULL },
371 	[KEY_WORDPROCESSOR] = { "wordprocessor", NULL, NULL },
372 	[KEY_EDITOR] = { "editor", NULL, NULL },
373 	[KEY_SPREADSHEET] = { "spreadsheet", NULL, NULL },
374 	[KEY_GRAPHICSEDITOR] = { "graphicseditor", NULL, NULL },
375 	[KEY_PRESENTATION] = { "presentation", NULL, NULL },
376 	[KEY_DATABASE] = { "database", NULL, NULL },
377 	[KEY_NEWS] = { "news", NULL, NULL },
378 	[KEY_VOICEMAIL] = { "voicemail", NULL, NULL },
379 	[KEY_ADDRESSBOOK] = { "addressbook", NULL, NULL },
380 	[KEY_MESSENGER] = { "messenger", NULL, NULL },
381 	[KEY_DISPLAYTOGGLE] = { "displaytoggle", NULL, NULL },
382 	[KEY_SPELLCHECK] = { "spellcheck", NULL, NULL },
383 	[KEY_LOGOFF] = { "logoff", NULL, NULL },
384 	[KEY_DOLLAR] = { "dollar", NULL, NULL },
385 	[KEY_EURO] = { "euro", NULL, NULL },
386 	[KEY_FRAMEBACK] = { "frameback", NULL, NULL },
387 	[KEY_FRAMEFORWARD] = { "frameforward", NULL, NULL },
388 	[KEY_CONTEXT_MENU] = { "context_menu", NULL, NULL },
389 	[KEY_MEDIA_REPEAT] = { "repeat", NULL, NULL },
390 	[KEY_10CHANNELSUP] = { "10channelsup", NULL, NULL },
391 	[KEY_10CHANNELSDOWN] = { "10channelsdown", NULL, NULL },
392 	[KEY_IMAGES] = { "images", NULL, NULL },
393 	[KEY_DEL_EOL] = { "eol", NULL, NULL },
394 	[KEY_DEL_EOS] = { "eos", NULL, NULL },
395 	[KEY_INS_LINE] = { "ins_line", NULL, NULL },
396 	[KEY_DEL_LINE] = { "del_line", NULL, NULL },
397 	[KEY_FN] = { "fn", NULL, NULL },
398 	[KEY_FN_ESC] = { "esc", NULL, NULL },
399 	[KEY_FN_F1] = { "f1", NULL, NULL },
400 	[KEY_FN_F2] = { "f2", NULL, NULL },
401 	[KEY_FN_F3] = { "f3", NULL, NULL },
402 	[KEY_FN_F4] = { "f4", NULL, NULL },
403 	[KEY_FN_F5] = { "f5", NULL, NULL },
404 	[KEY_FN_F6] = { "f6", NULL, NULL },
405 	[KEY_FN_F7] = { "f7", NULL, NULL },
406 	[KEY_FN_F8] = { "f8", NULL, NULL },
407 	[KEY_FN_F9] = { "f9", NULL, NULL },
408 	[KEY_FN_F10] = { "f10", NULL, NULL },
409 	[KEY_FN_F11] = { "f11", NULL, NULL },
410 	[KEY_FN_F12] = { "f12", NULL, NULL },
411 	[KEY_FN_1] = { "1", NULL, NULL },
412 	[KEY_FN_2] = { "2", NULL, NULL },
413 	[KEY_FN_D] = { "d", NULL, NULL },
414 	[KEY_FN_E] = { "e", NULL, NULL },
415 	[KEY_FN_F] = { "f", NULL, NULL },
416 	[KEY_FN_S] = { "s", NULL, NULL },
417 	[KEY_FN_B] = { "b", NULL, NULL },
418 	[KEY_BRL_DOT1] = { "dot1", NULL, NULL },
419 	[KEY_BRL_DOT2] = { "dot2", NULL, NULL },
420 	[KEY_BRL_DOT3] = { "dot3", NULL, NULL },
421 	[KEY_BRL_DOT4] = { "dot4", NULL, NULL },
422 	[KEY_BRL_DOT5] = { "dot5", NULL, NULL },
423 	[KEY_BRL_DOT6] = { "dot6", NULL, NULL },
424 	[KEY_BRL_DOT7] = { "dot7", NULL, NULL },
425 	[KEY_BRL_DOT8] = { "dot8", NULL, NULL },
426 	[KEY_BRL_DOT9] = { "dot9", NULL, NULL },
427 	[KEY_BRL_DOT10] = { "dot10", NULL, NULL },
428 	[KEY_NUMERIC_0] = { "np0", NULL, NULL },
429 	[KEY_NUMERIC_1] = { "np1", NULL, NULL },
430 	[KEY_NUMERIC_2] = { "np2", NULL, NULL },
431 	[KEY_NUMERIC_3] = { "np3", NULL, NULL },
432 	[KEY_NUMERIC_4] = { "np4", NULL, NULL },
433 	[KEY_NUMERIC_5] = { "np5", NULL, NULL },
434 	[KEY_NUMERIC_6] = { "np6", NULL, NULL },
435 	[KEY_NUMERIC_7] = { "np7", NULL, NULL },
436 	[KEY_NUMERIC_8] = { "np8", NULL, NULL },
437 	[KEY_NUMERIC_9] = { "np9", NULL, NULL },
438 	[KEY_NUMERIC_STAR] = { "npstar", NULL, NULL },
439 	[KEY_NUMERIC_POUND] = { "nppound", NULL, NULL },
440 	[KEY_NUMERIC_A] = { "npa", NULL, NULL },
441 	[KEY_NUMERIC_B] = { "npb", NULL, NULL },
442 	[KEY_NUMERIC_C] = { "npc", NULL, NULL },
443 	[KEY_NUMERIC_D] = { "npd", NULL, NULL },
444 	[KEY_CAMERA_FOCUS] = { "focus", NULL, NULL },
445 	[KEY_WPS_BUTTON] = { "button", NULL, NULL },
446 	[KEY_TOUCHPAD_TOGGLE] = { "toggle", NULL, NULL },
447 	[KEY_TOUCHPAD_ON] = { "on", NULL, NULL },
448 	[KEY_TOUCHPAD_OFF] = { "off", NULL, NULL },
449 	[KEY_CAMERA_ZOOMIN] = { "zoomin", NULL, NULL },
450 	[KEY_CAMERA_ZOOMOUT] = { "zoomout", NULL, NULL },
451 	[KEY_CAMERA_UP] = { "up", NULL, NULL },
452 	[KEY_CAMERA_DOWN] = { "down", NULL, NULL },
453 	[KEY_CAMERA_LEFT] = { "left", NULL, NULL },
454 	[KEY_CAMERA_RIGHT] = { "right", NULL, NULL },
455 	[KEY_ATTENDANT_ON] = { "on", NULL, NULL },
456 	[KEY_ATTENDANT_OFF] = { "off", NULL, NULL },
457 	[KEY_ATTENDANT_TOGGLE] = { "attendant_toggle", NULL, NULL },
458 	[KEY_LIGHTS_TOGGLE] = { "lights_toggle", NULL, NULL },
459 	[KEY_ALS_TOGGLE] = { "als_toggle", NULL, NULL },
460 	[KEY_BUTTONCONFIG] = { "buttonconfig", NULL, NULL },
461 	[KEY_TASKMANAGER] = { "taskmanager", NULL, NULL },
462 	[KEY_JOURNAL] = { "journal", NULL, NULL },
463 	[KEY_CONTROLPANEL] = { "controlpanel", NULL, NULL },
464 	[KEY_APPSELECT] = { "appselect", NULL, NULL },
465 	[KEY_SCREENSAVER] = { "screensaver", NULL, NULL },
466 	[KEY_VOICECOMMAND] = { "voicecommand", NULL, NULL },
467 	[KEY_BRIGHTNESS_MIN] = { "min", NULL, NULL },
468 	[KEY_BRIGHTNESS_MAX] = { "max", NULL, NULL },
469 	[KEY_KBDINPUTASSIST_PREV] = { "prev", NULL, NULL },
470 	[KEY_KBDINPUTASSIST_NEXT] = { "next", NULL, NULL },
471 	[KEY_KBDINPUTASSIST_PREVGROUP] = { "prevgroup", NULL, NULL },
472 	[KEY_KBDINPUTASSIST_NEXTGROUP] = { "nextgroup", NULL, NULL },
473 	[KEY_KBDINPUTASSIST_ACCEPT] = { "accept", NULL, NULL },
474 	[KEY_KBDINPUTASSIST_CANCEL] = { "cancel", NULL, NULL },
475 	[KEY_RIGHT_UP] = { "up", NULL, NULL },
476 	[KEY_RIGHT_DOWN] = { "down", NULL, NULL },
477 	[KEY_LEFT_UP] = { "up", NULL, NULL },
478 	[KEY_LEFT_DOWN] = { "down", NULL, NULL },
479 	[KEY_ROOT_MENU] = { "root_menu", NULL, NULL },
480 	[KEY_MEDIA_TOP_MENU] = { "media_top_menu", NULL, NULL },
481 	[KEY_NUMERIC_11] = { "11", NULL, NULL },
482 	[KEY_NUMERIC_12] = { "12", NULL, NULL },
483 	[KEY_AUDIO_DESC] = { "desc", NULL, NULL },
484 	[KEY_3D_MODE] = { "mode", NULL, NULL },
485 	[KEY_NEXT_FAVORITE] = { "favorite", NULL, NULL },
486 	[KEY_STOP_RECORD] = { "stop_record", NULL, NULL },
487 	[KEY_PAUSE_RECORD] = { "pause_record", NULL, NULL },
488 	[KEY_VOD] = { "vod", NULL, NULL },
489 	[KEY_UNMUTE] = { "unmute", NULL, NULL },
490 	[KEY_FASTREVERSE] = { "fastreverse", NULL, NULL },
491 	[KEY_SLOWREVERSE] = { "slowreverse", NULL, NULL },
492 	[KEY_DATA] = { "data", NULL, NULL },
493 	[KEY_NOOP] = { "noop", NULL, NULL },
494 
495 
496 	[BTN_0] = {"btn 0", NULL, NULL},
497 	[BTN_1] = {"btn 1", NULL, NULL},
498 	[BTN_2] = {"btn 2", NULL, NULL},
499 	[BTN_3] = {"btn 3", NULL, NULL},
500 	[BTN_4] = {"btn 4", NULL, NULL},
501 	[BTN_5] = {"btn 5", NULL, NULL},
502 	[BTN_6] = {"btn 6", NULL, NULL},
503 	[BTN_7] = {"btn 7", NULL, NULL},
504 	[BTN_8] = {"btn 8", NULL, NULL},
505 	[BTN_9] = {"btn 9", NULL, NULL},
506 
507 	[BTN_LEFT] = {"btn left", NULL, NULL},
508 	[BTN_RIGHT] = {"btn right", NULL, NULL},
509 	[BTN_MIDDLE] = {"btn middle", NULL, NULL},
510 	[BTN_SIDE] = {"btn side", NULL, NULL},
511 	[BTN_EXTRA] = {"btn extra", NULL, NULL},
512 	[BTN_FORWARD] = {"btn forward", NULL, NULL},
513 	[BTN_BACK] = {"btn back", NULL, NULL},
514 	[BTN_TASK] = {"btn task", NULL, NULL},
515 
516 	[KEY_MAX] = {0}
517 };
518 
519 #endif
520