From 580e61a36d52552334b4e6c3b89491e9d7a20e43 Mon Sep 17 00:00:00 2001 From: Raheman Vaiya Date: Wed, 18 Aug 2021 22:41:06 -0400 Subject: [PATCH] Made symbols valid key names. --- CHANGELOG.md | 2 + README.md | 8 +- src/config.c | 20 +- src/keys.h | 886 +++++++++++++++++++++++++-------------------------- src/main.c | 21 +- 5 files changed, 476 insertions(+), 461 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cab9457..c5c082e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,8 @@ Main Changes: - Modifiers are now just treated as layers - The default layer is now called main - The modifier layout is distinct from the key layout +- Symbols can be used in place of their names (e.g ';' instead of 'semicolon') +- Shifted symbols can now be specified directly (e.g & instead of S-7) Config migration map: diff --git a/README.md b/README.md index 32c556f..18e21dc 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ using kernel level input primitives (evdev, uinput). # Features -keyd has several unique features many of which are traditionally only +keyd has several unique features many of which are traditionally only found in custom keyboard firmware like [QMK](https://github.com/qmk/qmk_firmware). Some of the more interesting ones include: @@ -87,8 +87,8 @@ keyboard which is unaffected by the changes. [symbols] - d = S-grave - f = slash + d = ~ + f = / ... # Recommended config @@ -135,7 +135,7 @@ approach and has a different design philosophy. Notably keyd was written entirely in C with performance and simplicitly in mind and will likely never be as configurable as kmonad (which is extensible -in Haskell). Having said that, it supplies (in the author's opinion) the +in Haskell). Having said that, it supplies (in the author's opinion) the most valuable features in less than 2000 lines of C while providing a simple language agnostic config format. diff --git a/src/config.c b/src/config.c index b2a731e..78f757f 100644 --- a/src/config.c +++ b/src/config.c @@ -100,7 +100,7 @@ const char *keyseq_to_string(uint32_t keyseq) uint16_t mods = keyseq >> 16; uint16_t code = keyseq & 0x00FF; - const char *key = keycode_strings[code]; + const char *key = keycode_table[code].name; if(mods & MOD_CTRL) { strcpy(s+i, "C-"); @@ -127,7 +127,7 @@ const char *keyseq_to_string(uint32_t keyseq) } if(key) - strcpy(s+i, keycode_strings[code]); + strcpy(s+i, keycode_table[code].name); else strcpy(s+i, "UNKNOWN"); @@ -296,7 +296,8 @@ static int parse_layer_heading(const char *s, char name[256], char parent[256]) return 0; } -static uint32_t parse_keyseq(const char *s) { +static uint32_t parse_keyseq(const char *s) +{ const char *c = s; size_t i; uint32_t mods = 0; @@ -326,10 +327,15 @@ static uint32_t parse_keyseq(const char *s) { c += 2; } - for(i = 0;i < sizeof keycode_strings / sizeof keycode_strings[0];i++) { - if(keycode_strings[i] && !strcmp(keycode_strings[i], c)) { + for(i = 0;i < KEY_MAX;i++) { + const struct keycode_table_ent *ent = &keycode_table[i]; + + if(ent->name && !strcmp(ent->name, c)) return (mods << 16) | i; - } + if(ent->alt_name && !strcmp(ent->alt_name, c)) + return (mods << 16) | i; + if(ent->shifted_name && !strcmp(ent->shifted_name, c)) + return (mods | MOD_SHIFT) << 16 | i; } return 0; @@ -343,6 +349,8 @@ static int parse_kvp(char *s, char **_k, char **_v) if(!*s) return -1; k = s; + if(*s == '=') s++; //Allow the first character to be = as a special case. + while(*s && !isspace(*s) && *s != '=') s++; if(!*s) return -1; diff --git a/src/keys.h b/src/keys.h index 6706203..e4a5d25 100644 --- a/src/keys.h +++ b/src/keys.h @@ -27,457 +27,453 @@ #include #include -#define ISMOD(keycode) \ - (((keycode) == KEY_LEFTCTRL) ||\ - ((keycode) == KEY_LEFTALT) ||\ - ((keycode) == KEY_LEFTSHIFT) ||\ - ((keycode) == KEY_LEFTMETA) ||\ - ((keycode) == KEY_RIGHTCTRL) ||\ - ((keycode) == KEY_RIGHTALT) ||\ - ((keycode) == KEY_RIGHTSHIFT) ||\ - ((keycode) == KEY_RIGHTMETA)) - #define MOD_ALT_GR 0x10 #define MOD_CTRL 0x8 #define MOD_SHIFT 0x4 #define MOD_SUPER 0x2 #define MOD_ALT 0x1 -static const char *keycode_strings[] = { - [KEY_ESC] = "esc", - [KEY_1] = "1", - [KEY_2] = "2", - [KEY_3] = "3", - [KEY_4] = "4", - [KEY_5] = "5", - [KEY_6] = "6", - [KEY_7] = "7", - [KEY_8] = "8", - [KEY_9] = "9", - [KEY_0] = "0", - [KEY_MINUS] = "minus", - [KEY_EQUAL] = "equal", - [KEY_BACKSPACE] = "backspace", - [KEY_TAB] = "tab", - [KEY_Q] = "q", - [KEY_W] = "w", - [KEY_E] = "e", - [KEY_R] = "r", - [KEY_T] = "t", - [KEY_Y] = "y", - [KEY_U] = "u", - [KEY_I] = "i", - [KEY_O] = "o", - [KEY_P] = "p", - [KEY_LEFTBRACE] = "leftbrace", - [KEY_RIGHTBRACE] = "rightbrace", - [KEY_ENTER] = "enter", - [KEY_LEFTCTRL] = "leftctrl", - [KEY_A] = "a", - [KEY_S] = "s", - [KEY_D] = "d", - [KEY_F] = "f", - [KEY_G] = "g", - [KEY_H] = "h", - [KEY_J] = "j", - [KEY_K] = "k", - [KEY_L] = "l", - [KEY_SEMICOLON] = "semicolon", - [KEY_APOSTROPHE] = "apostrophe", - [KEY_GRAVE] = "grave", - [KEY_LEFTSHIFT] = "leftshift", - [KEY_BACKSLASH] = "backslash", - [KEY_Z] = "z", - [KEY_X] = "x", - [KEY_C] = "c", - [KEY_V] = "v", - [KEY_B] = "b", - [KEY_N] = "n", - [KEY_M] = "m", - [KEY_COMMA] = "comma", - [KEY_DOT] = "dot", - [KEY_SLASH] = "slash", - [KEY_RIGHTSHIFT] = "rightshift", - [KEY_KPASTERISK] = "kpasterisk", - [KEY_LEFTALT] = "leftalt", - [KEY_SPACE] = "space", - [KEY_CAPSLOCK] = "capslock", - [KEY_F1] = "f1", - [KEY_F2] = "f2", - [KEY_F3] = "f3", - [KEY_F4] = "f4", - [KEY_F5] = "f5", - [KEY_F6] = "f6", - [KEY_F7] = "f7", - [KEY_F8] = "f8", - [KEY_F9] = "f9", - [KEY_F10] = "f10", - [KEY_NUMLOCK] = "numlock", - [KEY_SCROLLLOCK] = "scrolllock", - [KEY_KP7] = "kp7", - [KEY_KP8] = "kp8", - [KEY_KP9] = "kp9", - [KEY_KPMINUS] = "kpminus", - [KEY_KP4] = "kp4", - [KEY_KP5] = "kp5", - [KEY_KP6] = "kp6", - [KEY_KPPLUS] = "kpplus", - [KEY_KP1] = "kp1", - [KEY_KP2] = "kp2", - [KEY_KP3] = "kp3", - [KEY_KP0] = "kp0", - [KEY_KPDOT] = "kpdot", - [KEY_ZENKAKUHANKAKU] = "zenkakuhankaku", - [KEY_102ND] = "102nd", - [KEY_F11] = "f11", - [KEY_F12] = "f12", - [KEY_RO] = "ro", - [KEY_KATAKANA] = "katakana", - [KEY_HIRAGANA] = "hiragana", - [KEY_HENKAN] = "henkan", - [KEY_KATAKANAHIRAGANA] = "katakanahiragana", - [KEY_MUHENKAN] = "muhenkan", - [KEY_KPJPCOMMA] = "kpjpcomma", - [KEY_KPENTER] = "kpenter", - [KEY_RIGHTCTRL] = "rightctrl", - [KEY_KPSLASH] = "kpslash", - [KEY_SYSRQ] = "sysrq", - [KEY_RIGHTALT] = "rightalt", - [KEY_LINEFEED] = "linefeed", - [KEY_HOME] = "home", - [KEY_UP] = "up", - [KEY_PAGEUP] = "pageup", - [KEY_LEFT] = "left", - [KEY_RIGHT] = "right", - [KEY_END] = "end", - [KEY_DOWN] = "down", - [KEY_PAGEDOWN] = "pagedown", - [KEY_INSERT] = "insert", - [KEY_DELETE] = "delete", - [KEY_MACRO] = "macro", - [KEY_MUTE] = "mute", - [KEY_VOLUMEDOWN] = "volumedown", - [KEY_VOLUMEUP] = "volumeup", - [KEY_POWER] = "power", - [KEY_KPEQUAL] = "kpequal", - [KEY_KPPLUSMINUS] = "kpplusminus", - [KEY_PAUSE] = "pause", - [KEY_SCALE] = "scale", - [KEY_KPCOMMA] = "kpcomma", - [KEY_HANGEUL] = "hangeul", - [KEY_HANJA] = "hanja", - [KEY_YEN] = "yen", - [KEY_LEFTMETA] = "leftmeta", - [KEY_RIGHTMETA] = "rightmeta", - [KEY_COMPOSE] = "compose", - [KEY_STOP] = "stop", - [KEY_AGAIN] = "again", - [KEY_PROPS] = "props", - [KEY_UNDO] = "undo", - [KEY_FRONT] = "front", - [KEY_COPY] = "copy", - [KEY_OPEN] = "open", - [KEY_PASTE] = "paste", - [KEY_FIND] = "find", - [KEY_CUT] = "cut", - [KEY_HELP] = "help", - [KEY_MENU] = "menu", - [KEY_CALC] = "calc", - [KEY_SETUP] = "setup", - [KEY_SLEEP] = "sleep", - [KEY_WAKEUP] = "wakeup", - [KEY_FILE] = "file", - [KEY_SENDFILE] = "sendfile", - [KEY_DELETEFILE] = "deletefile", - [KEY_XFER] = "xfer", - [KEY_PROG1] = "prog1", - [KEY_PROG2] = "prog2", - [KEY_WWW] = "www", - [KEY_MSDOS] = "msdos", - [KEY_COFFEE] = "coffee", - [KEY_ROTATE_DISPLAY] = "display", - [KEY_CYCLEWINDOWS] = "cyclewindows", - [KEY_MAIL] = "mail", - [KEY_BOOKMARKS] = "bookmarks", - [KEY_COMPUTER] = "computer", - [KEY_BACK] = "back", - [KEY_FORWARD] = "forward", - [KEY_CLOSECD] = "closecd", - [KEY_EJECTCD] = "ejectcd", - [KEY_EJECTCLOSECD] = "ejectclosecd", - [KEY_NEXTSONG] = "nextsong", - [KEY_PLAYPAUSE] = "playpause", - [KEY_PREVIOUSSONG] = "previoussong", - [KEY_STOPCD] = "stopcd", - [KEY_RECORD] = "record", - [KEY_REWIND] = "rewind", - [KEY_PHONE] = "phone", - [KEY_ISO] = "iso", - [KEY_CONFIG] = "config", - [KEY_HOMEPAGE] = "homepage", - [KEY_REFRESH] = "refresh", - [KEY_EXIT] = "exit", - [KEY_MOVE] = "move", - [KEY_EDIT] = "edit", - [KEY_SCROLLUP] = "scrollup", - [KEY_SCROLLDOWN] = "scrolldown", - [KEY_KPLEFTPAREN] = "kpleftparen", - [KEY_KPRIGHTPAREN] = "kprightparen", - [KEY_NEW] = "new", - [KEY_REDO] = "redo", - [KEY_F13] = "f13", - [KEY_F14] = "f14", - [KEY_F15] = "f15", - [KEY_F16] = "f16", - [KEY_F17] = "f17", - [KEY_F18] = "f18", - [KEY_F19] = "f19", - [KEY_F20] = "f20", - [KEY_F21] = "f21", - [KEY_F22] = "f22", - [KEY_F23] = "f23", - [KEY_F24] = "f24", - [KEY_PLAYCD] = "playcd", - [KEY_PAUSECD] = "pausecd", - [KEY_PROG3] = "prog3", - [KEY_PROG4] = "prog4", - [KEY_DASHBOARD] = "dashboard", - [KEY_SUSPEND] = "suspend", - [KEY_CLOSE] = "close", - [KEY_PLAY] = "play", - [KEY_FASTFORWARD] = "fastforward", - [KEY_BASSBOOST] = "bassboost", - [KEY_PRINT] = "print", - [KEY_HP] = "hp", - [KEY_CAMERA] = "camera", - [KEY_SOUND] = "sound", - [KEY_QUESTION] = "question", - [KEY_EMAIL] = "email", - [KEY_CHAT] = "chat", - [KEY_SEARCH] = "search", - [KEY_CONNECT] = "connect", - [KEY_FINANCE] = "finance", - [KEY_SPORT] = "sport", - [KEY_SHOP] = "shop", - [KEY_ALTERASE] = "alterase", - [KEY_CANCEL] = "cancel", - [KEY_BRIGHTNESSDOWN] = "brightnessdown", - [KEY_BRIGHTNESSUP] = "brightnessup", - [KEY_MEDIA] = "media", - [KEY_SWITCHVIDEOMODE] = "switchvideomode", - [KEY_KBDILLUMTOGGLE] = "kbdillumtoggle", - [KEY_KBDILLUMDOWN] = "kbdillumdown", - [KEY_KBDILLUMUP] = "kbdillumup", - [KEY_SEND] = "send", - [KEY_REPLY] = "reply", - [KEY_FORWARDMAIL] = "forwardmail", - [KEY_SAVE] = "save", - [KEY_DOCUMENTS] = "documents", - [KEY_BATTERY] = "battery", - [KEY_BLUETOOTH] = "bluetooth", - [KEY_WLAN] = "wlan", - [KEY_UWB] = "uwb", - [KEY_UNKNOWN] = "unknown", - [KEY_VIDEO_NEXT] = "next", - [KEY_VIDEO_PREV] = "prev", - [KEY_BRIGHTNESS_CYCLE] = "cycle", - [KEY_BRIGHTNESS_AUTO] = "auto", - [KEY_DISPLAY_OFF] = "off", - [KEY_WWAN] = "wwan", - [KEY_RFKILL] = "rfkill", - [KEY_MICMUTE] = "micmute", - [KEY_OK] = "ok", - [KEY_SELECT] = "select", - [KEY_GOTO] = "goto", - [KEY_CLEAR] = "clear", - [KEY_POWER2] = "power2", - [KEY_OPTION] = "option", - [KEY_INFO] = "info", - [KEY_TIME] = "time", - [KEY_VENDOR] = "vendor", - [KEY_ARCHIVE] = "archive", - [KEY_PROGRAM] = "program", - [KEY_CHANNEL] = "channel", - [KEY_FAVORITES] = "favorites", - [KEY_EPG] = "epg", - [KEY_PVR] = "pvr", - [KEY_MHP] = "mhp", - [KEY_LANGUAGE] = "language", - [KEY_TITLE] = "title", - [KEY_SUBTITLE] = "subtitle", - [KEY_ANGLE] = "angle", - [KEY_ZOOM] = "zoom", - [KEY_MODE] = "mode", - [KEY_KEYBOARD] = "keyboard", - [KEY_SCREEN] = "screen", - [KEY_PC] = "pc", - [KEY_TV] = "tv", - [KEY_TV2] = "tv2", - [KEY_VCR] = "vcr", - [KEY_VCR2] = "vcr2", - [KEY_SAT] = "sat", - [KEY_SAT2] = "sat2", - [KEY_CD] = "cd", - [KEY_TAPE] = "tape", - [KEY_RADIO] = "radio", - [KEY_TUNER] = "tuner", - [KEY_PLAYER] = "player", - [KEY_TEXT] = "text", - [KEY_DVD] = "dvd", - [KEY_AUX] = "aux", - [KEY_MP3] = "mp3", - [KEY_AUDIO] = "audio", - [KEY_VIDEO] = "video", - [KEY_DIRECTORY] = "directory", - [KEY_LIST] = "list", - [KEY_MEMO] = "memo", - [KEY_CALENDAR] = "calendar", - [KEY_RED] = "red", - [KEY_GREEN] = "green", - [KEY_YELLOW] = "yellow", - [KEY_BLUE] = "blue", - [KEY_CHANNELUP] = "channelup", - [KEY_CHANNELDOWN] = "channeldown", - [KEY_FIRST] = "first", - [KEY_LAST] = "last", - [KEY_AB] = "ab", - [KEY_NEXT] = "next", - [KEY_RESTART] = "restart", - [KEY_SLOW] = "slow", - [KEY_SHUFFLE] = "shuffle", - [KEY_BREAK] = "break", - [KEY_PREVIOUS] = "previous", - [KEY_DIGITS] = "digits", - [KEY_TEEN] = "teen", - [KEY_TWEN] = "twen", - [KEY_VIDEOPHONE] = "videophone", - [KEY_GAMES] = "games", - [KEY_ZOOMIN] = "zoomin", - [KEY_ZOOMOUT] = "zoomout", - [KEY_ZOOMRESET] = "zoomreset", - [KEY_WORDPROCESSOR] = "wordprocessor", - [KEY_EDITOR] = "editor", - [KEY_SPREADSHEET] = "spreadsheet", - [KEY_GRAPHICSEDITOR] = "graphicseditor", - [KEY_PRESENTATION] = "presentation", - [KEY_DATABASE] = "database", - [KEY_NEWS] = "news", - [KEY_VOICEMAIL] = "voicemail", - [KEY_ADDRESSBOOK] = "addressbook", - [KEY_MESSENGER] = "messenger", - [KEY_DISPLAYTOGGLE] = "displaytoggle", - [KEY_SPELLCHECK] = "spellcheck", - [KEY_LOGOFF] = "logoff", - [KEY_DOLLAR] = "dollar", - [KEY_EURO] = "euro", - [KEY_FRAMEBACK] = "frameback", - [KEY_FRAMEFORWARD] = "frameforward", - [KEY_CONTEXT_MENU] = "menu", - [KEY_MEDIA_REPEAT] = "repeat", - [KEY_10CHANNELSUP] = "10channelsup", - [KEY_10CHANNELSDOWN] = "10channelsdown", - [KEY_IMAGES] = "images", - [KEY_DEL_EOL] = "eol", - [KEY_DEL_EOS] = "eos", - [KEY_INS_LINE] = "line", - [KEY_DEL_LINE] = "line", - [KEY_FN] = "fn", - [KEY_FN_ESC] = "esc", - [KEY_FN_F1] = "f1", - [KEY_FN_F2] = "f2", - [KEY_FN_F3] = "f3", - [KEY_FN_F4] = "f4", - [KEY_FN_F5] = "f5", - [KEY_FN_F6] = "f6", - [KEY_FN_F7] = "f7", - [KEY_FN_F8] = "f8", - [KEY_FN_F9] = "f9", - [KEY_FN_F10] = "f10", - [KEY_FN_F11] = "f11", - [KEY_FN_F12] = "f12", - [KEY_FN_1] = "1", - [KEY_FN_2] = "2", - [KEY_FN_D] = "d", - [KEY_FN_E] = "e", - [KEY_FN_F] = "f", - [KEY_FN_S] = "s", - [KEY_FN_B] = "b", - [KEY_BRL_DOT1] = "dot1", - [KEY_BRL_DOT2] = "dot2", - [KEY_BRL_DOT3] = "dot3", - [KEY_BRL_DOT4] = "dot4", - [KEY_BRL_DOT5] = "dot5", - [KEY_BRL_DOT6] = "dot6", - [KEY_BRL_DOT7] = "dot7", - [KEY_BRL_DOT8] = "dot8", - [KEY_BRL_DOT9] = "dot9", - [KEY_BRL_DOT10] = "dot10", - [KEY_NUMERIC_0] = "0", - [KEY_NUMERIC_1] = "1", - [KEY_NUMERIC_2] = "2", - [KEY_NUMERIC_3] = "3", - [KEY_NUMERIC_4] = "4", - [KEY_NUMERIC_5] = "5", - [KEY_NUMERIC_6] = "6", - [KEY_NUMERIC_7] = "7", - [KEY_NUMERIC_8] = "8", - [KEY_NUMERIC_9] = "9", - [KEY_NUMERIC_STAR] = "star", - [KEY_NUMERIC_POUND] = "pound", - [KEY_NUMERIC_A] = "a", - [KEY_NUMERIC_B] = "b", - [KEY_NUMERIC_C] = "c", - [KEY_NUMERIC_D] = "d", - [KEY_CAMERA_FOCUS] = "focus", - [KEY_WPS_BUTTON] = "button", - [KEY_TOUCHPAD_TOGGLE] = "toggle", - [KEY_TOUCHPAD_ON] = "on", - [KEY_TOUCHPAD_OFF] = "off", - [KEY_CAMERA_ZOOMIN] = "zoomin", - [KEY_CAMERA_ZOOMOUT] = "zoomout", - [KEY_CAMERA_UP] = "up", - [KEY_CAMERA_DOWN] = "down", - [KEY_CAMERA_LEFT] = "left", - [KEY_CAMERA_RIGHT] = "right", - [KEY_ATTENDANT_ON] = "on", - [KEY_ATTENDANT_OFF] = "off", - [KEY_ATTENDANT_TOGGLE] = "toggle", - [KEY_LIGHTS_TOGGLE] = "toggle", - [KEY_ALS_TOGGLE] = "toggle", - [KEY_BUTTONCONFIG] = "buttonconfig", - [KEY_TASKMANAGER] = "taskmanager", - [KEY_JOURNAL] = "journal", - [KEY_CONTROLPANEL] = "controlpanel", - [KEY_APPSELECT] = "appselect", - [KEY_SCREENSAVER] = "screensaver", - [KEY_VOICECOMMAND] = "voicecommand", - [KEY_BRIGHTNESS_MIN] = "min", - [KEY_BRIGHTNESS_MAX] = "max", - [KEY_KBDINPUTASSIST_PREV] = "prev", - [KEY_KBDINPUTASSIST_NEXT] = "next", - [KEY_KBDINPUTASSIST_PREVGROUP] = "prevgroup", - [KEY_KBDINPUTASSIST_NEXTGROUP] = "nextgroup", - [KEY_KBDINPUTASSIST_ACCEPT] = "accept", - [KEY_KBDINPUTASSIST_CANCEL] = "cancel", - [KEY_RIGHT_UP] = "up", - [KEY_RIGHT_DOWN] = "down", - [KEY_LEFT_UP] = "up", - [KEY_LEFT_DOWN] = "down", - [KEY_ROOT_MENU] = "menu", - [KEY_MEDIA_TOP_MENU] = "menu", - [KEY_NUMERIC_11] = "11", - [KEY_NUMERIC_12] = "12", - [KEY_AUDIO_DESC] = "desc", - [KEY_3D_MODE] = "mode", - [KEY_NEXT_FAVORITE] = "favorite", - [KEY_STOP_RECORD] = "record", - [KEY_PAUSE_RECORD] = "record", - [KEY_VOD] = "vod", - [KEY_UNMUTE] = "unmute", - [KEY_FASTREVERSE] = "fastreverse", - [KEY_SLOWREVERSE] = "slowreverse", - [KEY_DATA] = "data", - [KEY_MAX] = "max" +struct keycode_table_ent { + const char *name; + const char *alt_name; + const char *shifted_name; +}; + +static const struct keycode_table_ent keycode_table[] = { + [KEY_ESC] = { "esc", "escape", NULL }, + [KEY_1] = { "1", NULL, "!" }, + [KEY_2] = { "2", NULL, "@" }, + [KEY_3] = { "3", NULL, "#" }, + [KEY_4] = { "4", NULL, "$" }, + [KEY_5] = { "5", NULL, "%" }, + [KEY_6] = { "6", NULL, "^" }, + [KEY_7] = { "7", NULL, "&" }, + [KEY_8] = { "8", NULL, "*" }, + [KEY_9] = { "9", NULL, "(" }, + [KEY_0] = { "0", NULL, ")" }, + [KEY_MINUS] = { "-", "minus" "_" }, + [KEY_EQUAL] = { "=", "equal", "+" }, + [KEY_BACKSPACE] = { "backspace", NULL, NULL }, + [KEY_TAB] = { "tab", NULL, NULL }, + [KEY_Q] = { "q", NULL, "Q" }, + [KEY_W] = { "w", NULL, "W" }, + [KEY_E] = { "e", NULL, "E" }, + [KEY_R] = { "r", NULL, "R" }, + [KEY_T] = { "t", NULL, "T" }, + [KEY_Y] = { "y", NULL, "Y" }, + [KEY_U] = { "u", NULL, "U" }, + [KEY_I] = { "i", NULL, "I" }, + [KEY_O] = { "o", NULL, "O" }, + [KEY_P] = { "p", NULL, "P" }, + [KEY_LEFTBRACE] = { "[", "leftbrace", "{" }, + [KEY_RIGHTBRACE] = { "]", "rightbrace", "}" }, + [KEY_ENTER] = { "enter", NULL, NULL }, + [KEY_LEFTCTRL] = { "control", "leftcontrol", NULL }, + [KEY_A] = { "a", NULL, "A" }, + [KEY_S] = { "s", NULL, "S" }, + [KEY_D] = { "d", NULL, "D" }, + [KEY_F] = { "f", NULL, "F" }, + [KEY_G] = { "g", NULL, "G" }, + [KEY_H] = { "h", NULL, "H" }, + [KEY_J] = { "j", NULL, "J" }, + [KEY_K] = { "k", NULL, "K" }, + [KEY_L] = { "l", NULL, "L" }, + [KEY_SEMICOLON] = { ";", "semicolon", ":" }, + [KEY_APOSTROPHE] = { "'", "apostrophe", "\"" }, + [KEY_GRAVE] = { "`", "grave", "~" }, + [KEY_LEFTSHIFT] = { "shift", "leftshift", NULL }, + [KEY_BACKSLASH] = { "\\", "backslash", "|" }, + [KEY_Z] = { "z", NULL, "Z" }, + [KEY_X] = { "x", NULL, "X" }, + [KEY_C] = { "c", NULL, "C" }, + [KEY_V] = { "v", NULL, "V" }, + [KEY_B] = { "b", NULL, "B" }, + [KEY_N] = { "n", NULL, "N" }, + [KEY_M] = { "m", NULL, "M" }, + [KEY_COMMA] = { ",", "comma", "<" }, + [KEY_DOT] = { ".", "dot", ">" }, + [KEY_SLASH] = { "/", "slash", "?" }, + [KEY_RIGHTSHIFT] = { "rightshift", NULL, NULL }, + [KEY_KPASTERISK] = { "kpasterisk", NULL, NULL }, + [KEY_LEFTALT] = { "alt", "leftalt", NULL }, + [KEY_SPACE] = { "space", NULL, NULL }, + [KEY_CAPSLOCK] = { "capslock", NULL, NULL }, + [KEY_F1] = { "f1", NULL, NULL }, + [KEY_F2] = { "f2", NULL, NULL }, + [KEY_F3] = { "f3", NULL, NULL }, + [KEY_F4] = { "f4", NULL, NULL }, + [KEY_F5] = { "f5", NULL, NULL }, + [KEY_F6] = { "f6", NULL, NULL }, + [KEY_F7] = { "f7", NULL, NULL }, + [KEY_F8] = { "f8", NULL, NULL }, + [KEY_F9] = { "f9", NULL, NULL }, + [KEY_F10] = { "f10", NULL, NULL }, + [KEY_NUMLOCK] = { "numlock", NULL, NULL }, + [KEY_SCROLLLOCK] = { "scrolllock", NULL, NULL }, + [KEY_KP7] = { "kp7", NULL, NULL }, + [KEY_KP8] = { "kp8", NULL, NULL }, + [KEY_KP9] = { "kp9", NULL, NULL }, + [KEY_KPMINUS] = { "kpminus", NULL, NULL }, + [KEY_KP4] = { "kp4", NULL, NULL }, + [KEY_KP5] = { "kp5", NULL, NULL }, + [KEY_KP6] = { "kp6", NULL, NULL }, + [KEY_KPPLUS] = { "kpplus", NULL, NULL }, + [KEY_KP1] = { "kp1", NULL, NULL }, + [KEY_KP2] = { "kp2", NULL, NULL }, + [KEY_KP3] = { "kp3", NULL, NULL }, + [KEY_KP0] = { "kp0", NULL, NULL }, + [KEY_KPDOT] = { "kpdot", NULL, NULL }, + [KEY_ZENKAKUHANKAKU] = { "zenkakuhankaku", NULL, NULL }, + [KEY_102ND] = { "102nd", NULL, NULL }, + [KEY_F11] = { "f11", NULL, NULL }, + [KEY_F12] = { "f12", NULL, NULL }, + [KEY_RO] = { "ro", NULL, NULL }, + [KEY_KATAKANA] = { "katakana", NULL, NULL }, + [KEY_HIRAGANA] = { "hiragana", NULL, NULL }, + [KEY_HENKAN] = { "henkan", NULL, NULL }, + [KEY_KATAKANAHIRAGANA] = { "katakanahiragana", NULL, NULL }, + [KEY_MUHENKAN] = { "muhenkan", NULL, NULL }, + [KEY_KPJPCOMMA] = { "kpjpcomma", NULL, NULL }, + [KEY_KPENTER] = { "kpenter", NULL, NULL }, + [KEY_RIGHTCTRL] = { "rightctrl", NULL, NULL }, + [KEY_KPSLASH] = { "kpslash", NULL, NULL }, + [KEY_SYSRQ] = { "sysrq", NULL, NULL }, + [KEY_RIGHTALT] = { "rightalt", NULL, NULL }, + [KEY_LINEFEED] = { "linefeed", NULL, NULL }, + [KEY_HOME] = { "home", NULL, NULL }, + [KEY_UP] = { "up", NULL, NULL }, + [KEY_PAGEUP] = { "pageup", NULL, NULL }, + [KEY_LEFT] = { "left", NULL, NULL }, + [KEY_RIGHT] = { "right", NULL, NULL }, + [KEY_END] = { "end", NULL, NULL }, + [KEY_DOWN] = { "down", NULL, NULL }, + [KEY_PAGEDOWN] = { "pagedown", NULL, NULL }, + [KEY_INSERT] = { "insert", NULL, NULL }, + [KEY_DELETE] = { "delete", NULL, NULL }, + [KEY_MACRO] = { "macro", NULL, NULL }, + [KEY_MUTE] = { "mute", NULL, NULL }, + [KEY_VOLUMEDOWN] = { "volumedown", NULL, NULL }, + [KEY_VOLUMEUP] = { "volumeup", NULL, NULL }, + [KEY_POWER] = { "power", NULL, NULL }, + [KEY_KPEQUAL] = { "kpequal", NULL, NULL }, + [KEY_KPPLUSMINUS] = { "kpplusminus", NULL, NULL }, + [KEY_PAUSE] = { "pause", NULL, NULL }, + [KEY_SCALE] = { "scale", NULL, NULL }, + [KEY_KPCOMMA] = { "kpcomma", NULL, NULL }, + [KEY_HANGEUL] = { "hangeul", NULL, NULL }, + [KEY_HANJA] = { "hanja", NULL, NULL }, + [KEY_YEN] = { "yen", NULL, NULL }, + [KEY_LEFTMETA] = { "leftmeta", NULL, NULL }, + [KEY_RIGHTMETA] = { "rightmeta", NULL, NULL }, + [KEY_COMPOSE] = { "compose", NULL, NULL }, + [KEY_STOP] = { "stop", NULL, NULL }, + [KEY_AGAIN] = { "again", NULL, NULL }, + [KEY_PROPS] = { "props", NULL, NULL }, + [KEY_UNDO] = { "undo", NULL, NULL }, + [KEY_FRONT] = { "front", NULL, NULL }, + [KEY_COPY] = { "copy", NULL, NULL }, + [KEY_OPEN] = { "open", NULL, NULL }, + [KEY_PASTE] = { "paste", NULL, NULL }, + [KEY_FIND] = { "find", NULL, NULL }, + [KEY_CUT] = { "cut", NULL, NULL }, + [KEY_HELP] = { "help", NULL, NULL }, + [KEY_MENU] = { "menu", NULL, NULL }, + [KEY_CALC] = { "calc", NULL, NULL }, + [KEY_SETUP] = { "setup", NULL, NULL }, + [KEY_SLEEP] = { "sleep", NULL, NULL }, + [KEY_WAKEUP] = { "wakeup", NULL, NULL }, + [KEY_FILE] = { "file", NULL, NULL }, + [KEY_SENDFILE] = { "sendfile", NULL, NULL }, + [KEY_DELETEFILE] = { "deletefile", NULL, NULL }, + [KEY_XFER] = { "xfer", NULL, NULL }, + [KEY_PROG1] = { "prog1", NULL, NULL }, + [KEY_PROG2] = { "prog2", NULL, NULL }, + [KEY_WWW] = { "www", NULL, NULL }, + [KEY_MSDOS] = { "msdos", NULL, NULL }, + [KEY_COFFEE] = { "coffee", NULL, NULL }, + [KEY_ROTATE_DISPLAY] = { "display", NULL, NULL }, + [KEY_CYCLEWINDOWS] = { "cyclewindows", NULL, NULL }, + [KEY_MAIL] = { "mail", NULL, NULL }, + [KEY_BOOKMARKS] = { "bookmarks", NULL, NULL }, + [KEY_COMPUTER] = { "computer", NULL, NULL }, + [KEY_BACK] = { "back", NULL, NULL }, + [KEY_FORWARD] = { "forward", NULL, NULL }, + [KEY_CLOSECD] = { "closecd", NULL, NULL }, + [KEY_EJECTCD] = { "ejectcd", NULL, NULL }, + [KEY_EJECTCLOSECD] = { "ejectclosecd", NULL, NULL }, + [KEY_NEXTSONG] = { "nextsong", NULL, NULL }, + [KEY_PLAYPAUSE] = { "playpause", NULL, NULL }, + [KEY_PREVIOUSSONG] = { "previoussong", NULL, NULL }, + [KEY_STOPCD] = { "stopcd", NULL, NULL }, + [KEY_RECORD] = { "record", NULL, NULL }, + [KEY_REWIND] = { "rewind", NULL, NULL }, + [KEY_PHONE] = { "phone", NULL, NULL }, + [KEY_ISO] = { "iso", NULL, NULL }, + [KEY_CONFIG] = { "config", NULL, NULL }, + [KEY_HOMEPAGE] = { "homepage", NULL, NULL }, + [KEY_REFRESH] = { "refresh", NULL, NULL }, + [KEY_EXIT] = { "exit", NULL, NULL }, + [KEY_MOVE] = { "move", NULL, NULL }, + [KEY_EDIT] = { "edit", NULL, NULL }, + [KEY_SCROLLUP] = { "scrollup", NULL, NULL }, + [KEY_SCROLLDOWN] = { "scrolldown", NULL, NULL }, + [KEY_KPLEFTPAREN] = { "kpleftparen", NULL, NULL }, + [KEY_KPRIGHTPAREN] = { "kprightparen", NULL, NULL }, + [KEY_NEW] = { "new", NULL, NULL }, + [KEY_REDO] = { "redo", NULL, NULL }, + [KEY_F13] = { "f13", NULL, NULL }, + [KEY_F14] = { "f14", NULL, NULL }, + [KEY_F15] = { "f15", NULL, NULL }, + [KEY_F16] = { "f16", NULL, NULL }, + [KEY_F17] = { "f17", NULL, NULL }, + [KEY_F18] = { "f18", NULL, NULL }, + [KEY_F19] = { "f19", NULL, NULL }, + [KEY_F20] = { "f20", NULL, NULL }, + [KEY_F21] = { "f21", NULL, NULL }, + [KEY_F22] = { "f22", NULL, NULL }, + [KEY_F23] = { "f23", NULL, NULL }, + [KEY_F24] = { "f24", NULL, NULL }, + [KEY_PLAYCD] = { "playcd", NULL, NULL }, + [KEY_PAUSECD] = { "pausecd", NULL, NULL }, + [KEY_PROG3] = { "prog3", NULL, NULL }, + [KEY_PROG4] = { "prog4", NULL, NULL }, + [KEY_DASHBOARD] = { "dashboard", NULL, NULL }, + [KEY_SUSPEND] = { "suspend", NULL, NULL }, + [KEY_CLOSE] = { "close", NULL, NULL }, + [KEY_PLAY] = { "play", NULL, NULL }, + [KEY_FASTFORWARD] = { "fastforward", NULL, NULL }, + [KEY_BASSBOOST] = { "bassboost", NULL, NULL }, + [KEY_PRINT] = { "print", NULL, NULL }, + [KEY_HP] = { "hp", NULL, NULL }, + [KEY_CAMERA] = { "camera", NULL, NULL }, + [KEY_SOUND] = { "sound", NULL, NULL }, + [KEY_QUESTION] = { "question", NULL, NULL }, + [KEY_EMAIL] = { "email", NULL, NULL }, + [KEY_CHAT] = { "chat", NULL, NULL }, + [KEY_SEARCH] = { "search", NULL, NULL }, + [KEY_CONNECT] = { "connect", NULL, NULL }, + [KEY_FINANCE] = { "finance", NULL, NULL }, + [KEY_SPORT] = { "sport", NULL, NULL }, + [KEY_SHOP] = { "shop", NULL, NULL }, + [KEY_ALTERASE] = { "alterase", NULL, NULL }, + [KEY_CANCEL] = { "cancel", NULL, NULL }, + [KEY_BRIGHTNESSDOWN] = { "brightnessdown", NULL, NULL }, + [KEY_BRIGHTNESSUP] = { "brightnessup", NULL, NULL }, + [KEY_MEDIA] = { "media", NULL, NULL }, + [KEY_SWITCHVIDEOMODE] = { "switchvideomode", NULL, NULL }, + [KEY_KBDILLUMTOGGLE] = { "kbdillumtoggle", NULL, NULL }, + [KEY_KBDILLUMDOWN] = { "kbdillumdown", NULL, NULL }, + [KEY_KBDILLUMUP] = { "kbdillumup", NULL, NULL }, + [KEY_SEND] = { "send", NULL, NULL }, + [KEY_REPLY] = { "reply", NULL, NULL }, + [KEY_FORWARDMAIL] = { "forwardmail", NULL, NULL }, + [KEY_SAVE] = { "save", NULL, NULL }, + [KEY_DOCUMENTS] = { "documents", NULL, NULL }, + [KEY_BATTERY] = { "battery", NULL, NULL }, + [KEY_BLUETOOTH] = { "bluetooth", NULL, NULL }, + [KEY_WLAN] = { "wlan", NULL, NULL }, + [KEY_UWB] = { "uwb", NULL, NULL }, + [KEY_UNKNOWN] = { "unknown", NULL, NULL }, + [KEY_VIDEO_NEXT] = { "next", NULL, NULL }, + [KEY_VIDEO_PREV] = { "prev", NULL, NULL }, + [KEY_BRIGHTNESS_CYCLE] = { "cycle", NULL, NULL }, + [KEY_BRIGHTNESS_AUTO] = { "auto", NULL, NULL }, + [KEY_DISPLAY_OFF] = { "off", NULL, NULL }, + [KEY_WWAN] = { "wwan", NULL, NULL }, + [KEY_RFKILL] = { "rfkill", NULL, NULL }, + [KEY_MICMUTE] = { "micmute", NULL, NULL }, + [KEY_OK] = { "ok", NULL, NULL }, + [KEY_SELECT] = { "select", NULL, NULL }, + [KEY_GOTO] = { "goto", NULL, NULL }, + [KEY_CLEAR] = { "clear", NULL, NULL }, + [KEY_POWER2] = { "power2", NULL, NULL }, + [KEY_OPTION] = { "option", NULL, NULL }, + [KEY_INFO] = { "info", NULL, NULL }, + [KEY_TIME] = { "time", NULL, NULL }, + [KEY_VENDOR] = { "vendor", NULL, NULL }, + [KEY_ARCHIVE] = { "archive", NULL, NULL }, + [KEY_PROGRAM] = { "program", NULL, NULL }, + [KEY_CHANNEL] = { "channel", NULL, NULL }, + [KEY_FAVORITES] = { "favorites", NULL, NULL }, + [KEY_EPG] = { "epg", NULL, NULL }, + [KEY_PVR] = { "pvr", NULL, NULL }, + [KEY_MHP] = { "mhp", NULL, NULL }, + [KEY_LANGUAGE] = { "language", NULL, NULL }, + [KEY_TITLE] = { "title", NULL, NULL }, + [KEY_SUBTITLE] = { "subtitle", NULL, NULL }, + [KEY_ANGLE] = { "angle", NULL, NULL }, + [KEY_ZOOM] = { "zoom", NULL, NULL }, + [KEY_MODE] = { "mode", NULL, NULL }, + [KEY_KEYBOARD] = { "keyboard", NULL, NULL }, + [KEY_SCREEN] = { "screen", NULL, NULL }, + [KEY_PC] = { "pc", NULL, NULL }, + [KEY_TV] = { "tv", NULL, NULL }, + [KEY_TV2] = { "tv2", NULL, NULL }, + [KEY_VCR] = { "vcr", NULL, NULL }, + [KEY_VCR2] = { "vcr2", NULL, NULL }, + [KEY_SAT] = { "sat", NULL, NULL }, + [KEY_SAT2] = { "sat2", NULL, NULL }, + [KEY_CD] = { "cd", NULL, NULL }, + [KEY_TAPE] = { "tape", NULL, NULL }, + [KEY_RADIO] = { "radio", NULL, NULL }, + [KEY_TUNER] = { "tuner", NULL, NULL }, + [KEY_PLAYER] = { "player", NULL, NULL }, + [KEY_TEXT] = { "text", NULL, NULL }, + [KEY_DVD] = { "dvd", NULL, NULL }, + [KEY_AUX] = { "aux", NULL, NULL }, + [KEY_MP3] = { "mp3", NULL, NULL }, + [KEY_AUDIO] = { "audio", NULL, NULL }, + [KEY_VIDEO] = { "video", NULL, NULL }, + [KEY_DIRECTORY] = { "directory", NULL, NULL }, + [KEY_LIST] = { "list", NULL, NULL }, + [KEY_MEMO] = { "memo", NULL, NULL }, + [KEY_CALENDAR] = { "calendar", NULL, NULL }, + [KEY_RED] = { "red", NULL, NULL }, + [KEY_GREEN] = { "green", NULL, NULL }, + [KEY_YELLOW] = { "yellow", NULL, NULL }, + [KEY_BLUE] = { "blue", NULL, NULL }, + [KEY_CHANNELUP] = { "channelup", NULL, NULL }, + [KEY_CHANNELDOWN] = { "channeldown", NULL, NULL }, + [KEY_FIRST] = { "first", NULL, NULL }, + [KEY_LAST] = { "last", NULL, NULL }, + [KEY_AB] = { "ab", NULL, NULL }, + [KEY_NEXT] = { "next", NULL, NULL }, + [KEY_RESTART] = { "restart", NULL, NULL }, + [KEY_SLOW] = { "slow", NULL, NULL }, + [KEY_SHUFFLE] = { "shuffle", NULL, NULL }, + [KEY_BREAK] = { "break", NULL, NULL }, + [KEY_PREVIOUS] = { "previous", NULL, NULL }, + [KEY_DIGITS] = { "digits", NULL, NULL }, + [KEY_TEEN] = { "teen", NULL, NULL }, + [KEY_TWEN] = { "twen", NULL, NULL }, + [KEY_VIDEOPHONE] = { "videophone", NULL, NULL }, + [KEY_GAMES] = { "games", NULL, NULL }, + [KEY_ZOOMIN] = { "zoomin", NULL, NULL }, + [KEY_ZOOMOUT] = { "zoomout", NULL, NULL }, + [KEY_ZOOMRESET] = { "zoomreset", NULL, NULL }, + [KEY_WORDPROCESSOR] = { "wordprocessor", NULL, NULL }, + [KEY_EDITOR] = { "editor", NULL, NULL }, + [KEY_SPREADSHEET] = { "spreadsheet", NULL, NULL }, + [KEY_GRAPHICSEDITOR] = { "graphicseditor", NULL, NULL }, + [KEY_PRESENTATION] = { "presentation", NULL, NULL }, + [KEY_DATABASE] = { "database", NULL, NULL }, + [KEY_NEWS] = { "news", NULL, NULL }, + [KEY_VOICEMAIL] = { "voicemail", NULL, NULL }, + [KEY_ADDRESSBOOK] = { "addressbook", NULL, NULL }, + [KEY_MESSENGER] = { "messenger", NULL, NULL }, + [KEY_DISPLAYTOGGLE] = { "displaytoggle", NULL, NULL }, + [KEY_SPELLCHECK] = { "spellcheck", NULL, NULL }, + [KEY_LOGOFF] = { "logoff", NULL, NULL }, + [KEY_DOLLAR] = { "dollar", NULL, NULL }, + [KEY_EURO] = { "euro", NULL, NULL }, + [KEY_FRAMEBACK] = { "frameback", NULL, NULL }, + [KEY_FRAMEFORWARD] = { "frameforward", NULL, NULL }, + [KEY_CONTEXT_MENU] = { "menu", NULL, NULL }, + [KEY_MEDIA_REPEAT] = { "repeat", NULL, NULL }, + [KEY_10CHANNELSUP] = { "10channelsup", NULL, NULL }, + [KEY_10CHANNELSDOWN] = { "10channelsdown", NULL, NULL }, + [KEY_IMAGES] = { "images", NULL, NULL }, + [KEY_DEL_EOL] = { "eol", NULL, NULL }, + [KEY_DEL_EOS] = { "eos", NULL, NULL }, + [KEY_INS_LINE] = { "line", NULL, NULL }, + [KEY_DEL_LINE] = { "line", NULL, NULL }, + [KEY_FN] = { "fn", NULL, NULL }, + [KEY_FN_ESC] = { "esc", NULL, NULL }, + [KEY_FN_F1] = { "f1", NULL, NULL }, + [KEY_FN_F2] = { "f2", NULL, NULL }, + [KEY_FN_F3] = { "f3", NULL, NULL }, + [KEY_FN_F4] = { "f4", NULL, NULL }, + [KEY_FN_F5] = { "f5", NULL, NULL }, + [KEY_FN_F6] = { "f6", NULL, NULL }, + [KEY_FN_F7] = { "f7", NULL, NULL }, + [KEY_FN_F8] = { "f8", NULL, NULL }, + [KEY_FN_F9] = { "f9", NULL, NULL }, + [KEY_FN_F10] = { "f10", NULL, NULL }, + [KEY_FN_F11] = { "f11", NULL, NULL }, + [KEY_FN_F12] = { "f12", NULL, NULL }, + [KEY_FN_1] = { "1", NULL, NULL }, + [KEY_FN_2] = { "2", NULL, NULL }, + [KEY_FN_D] = { "d", NULL, NULL }, + [KEY_FN_E] = { "e", NULL, NULL }, + [KEY_FN_F] = { "f", NULL, NULL }, + [KEY_FN_S] = { "s", NULL, NULL }, + [KEY_FN_B] = { "b", NULL, NULL }, + [KEY_BRL_DOT1] = { "dot1", NULL, NULL }, + [KEY_BRL_DOT2] = { "dot2", NULL, NULL }, + [KEY_BRL_DOT3] = { "dot3", NULL, NULL }, + [KEY_BRL_DOT4] = { "dot4", NULL, NULL }, + [KEY_BRL_DOT5] = { "dot5", NULL, NULL }, + [KEY_BRL_DOT6] = { "dot6", NULL, NULL }, + [KEY_BRL_DOT7] = { "dot7", NULL, NULL }, + [KEY_BRL_DOT8] = { "dot8", NULL, NULL }, + [KEY_BRL_DOT9] = { "dot9", NULL, NULL }, + [KEY_BRL_DOT10] = { "dot10", NULL, NULL }, + [KEY_NUMERIC_0] = { "np0", NULL, NULL }, + [KEY_NUMERIC_1] = { "np1", NULL, NULL }, + [KEY_NUMERIC_2] = { "np2", NULL, NULL }, + [KEY_NUMERIC_3] = { "np3", NULL, NULL }, + [KEY_NUMERIC_4] = { "np4", NULL, NULL }, + [KEY_NUMERIC_5] = { "np5", NULL, NULL }, + [KEY_NUMERIC_6] = { "np6", NULL, NULL }, + [KEY_NUMERIC_7] = { "np7", NULL, NULL }, + [KEY_NUMERIC_8] = { "np8", NULL, NULL }, + [KEY_NUMERIC_9] = { "np9", NULL, NULL }, + [KEY_NUMERIC_STAR] = { "npstar", NULL, NULL }, + [KEY_NUMERIC_POUND] = { "nppound", NULL, NULL }, + [KEY_NUMERIC_A] = { "npa", NULL, NULL }, + [KEY_NUMERIC_B] = { "npb", NULL, NULL }, + [KEY_NUMERIC_C] = { "npc", NULL, NULL }, + [KEY_NUMERIC_D] = { "npd", NULL, NULL }, + [KEY_CAMERA_FOCUS] = { "focus", NULL, NULL }, + [KEY_WPS_BUTTON] = { "button", NULL, NULL }, + [KEY_TOUCHPAD_TOGGLE] = { "toggle", NULL, NULL }, + [KEY_TOUCHPAD_ON] = { "on", NULL, NULL }, + [KEY_TOUCHPAD_OFF] = { "off", NULL, NULL }, + [KEY_CAMERA_ZOOMIN] = { "zoomin", NULL, NULL }, + [KEY_CAMERA_ZOOMOUT] = { "zoomout", NULL, NULL }, + [KEY_CAMERA_UP] = { "up", NULL, NULL }, + [KEY_CAMERA_DOWN] = { "down", NULL, NULL }, + [KEY_CAMERA_LEFT] = { "left", NULL, NULL }, + [KEY_CAMERA_RIGHT] = { "right", NULL, NULL }, + [KEY_ATTENDANT_ON] = { "on", NULL, NULL }, + [KEY_ATTENDANT_OFF] = { "off", NULL, NULL }, + [KEY_ATTENDANT_TOGGLE] = { "attendant_toggle", NULL, NULL }, + [KEY_LIGHTS_TOGGLE] = { "lights_toggle", NULL, NULL }, + [KEY_ALS_TOGGLE] = { "als_toggle", NULL, NULL }, + [KEY_BUTTONCONFIG] = { "buttonconfig", NULL, NULL }, + [KEY_TASKMANAGER] = { "taskmanager", NULL, NULL }, + [KEY_JOURNAL] = { "journal", NULL, NULL }, + [KEY_CONTROLPANEL] = { "controlpanel", NULL, NULL }, + [KEY_APPSELECT] = { "appselect", NULL, NULL }, + [KEY_SCREENSAVER] = { "screensaver", NULL, NULL }, + [KEY_VOICECOMMAND] = { "voicecommand", NULL, NULL }, + [KEY_BRIGHTNESS_MIN] = { "min", NULL, NULL }, + [KEY_BRIGHTNESS_MAX] = { "max", NULL, NULL }, + [KEY_KBDINPUTASSIST_PREV] = { "prev", NULL, NULL }, + [KEY_KBDINPUTASSIST_NEXT] = { "next", NULL, NULL }, + [KEY_KBDINPUTASSIST_PREVGROUP] = { "prevgroup", NULL, NULL }, + [KEY_KBDINPUTASSIST_NEXTGROUP] = { "nextgroup", NULL, NULL }, + [KEY_KBDINPUTASSIST_ACCEPT] = { "accept", NULL, NULL }, + [KEY_KBDINPUTASSIST_CANCEL] = { "cancel", NULL, NULL }, + [KEY_RIGHT_UP] = { "up", NULL, NULL }, + [KEY_RIGHT_DOWN] = { "down", NULL, NULL }, + [KEY_LEFT_UP] = { "up", NULL, NULL }, + [KEY_LEFT_DOWN] = { "down", NULL, NULL }, + [KEY_ROOT_MENU] = { "menu", NULL, NULL }, + [KEY_MEDIA_TOP_MENU] = { "menu", NULL, NULL }, + [KEY_NUMERIC_11] = { "11", NULL, NULL }, + [KEY_NUMERIC_12] = { "12", NULL, NULL }, + [KEY_AUDIO_DESC] = { "desc", NULL, NULL }, + [KEY_3D_MODE] = { "mode", NULL, NULL }, + [KEY_NEXT_FAVORITE] = { "favorite", NULL, NULL }, + [KEY_STOP_RECORD] = { "record", NULL, NULL }, + [KEY_PAUSE_RECORD] = { "record", NULL, NULL }, + [KEY_VOD] = { "vod", NULL, NULL }, + [KEY_UNMUTE] = { "unmute", NULL, NULL }, + [KEY_FASTREVERSE] = { "fastreverse", NULL, NULL }, + [KEY_SLOWREVERSE] = { "slowreverse", NULL, NULL }, + [KEY_DATA] = { "data", NULL, NULL }, + [KEY_MAX] = {0}, }; #endif diff --git a/src/main.c b/src/main.c index 679c5ba..88a8068 100644 --- a/src/main.c +++ b/src/main.c @@ -181,8 +181,8 @@ static int create_uinput_fd() ioctl(fd, UI_SET_EVBIT, EV_KEY); ioctl(fd, UI_SET_EVBIT, EV_SYN); - for(i = 0;i < sizeof keycode_strings/sizeof keycode_strings[0];i++) { - if(keycode_strings[i]) + for(i = 0;i < KEY_MAX;i++) { + if(keycode_table[i].name) ioctl(fd, UI_SET_KEYBIT, i); } @@ -650,9 +650,11 @@ static void evdev_monitor_loop(int *fds, int sz) if(FD_ISSET(fd, &fdset)) { while(read(fd, &ev, sizeof(ev)) > 0) { if(ev.type == EV_KEY && ev.value != 2) { + assert(keycode_table[ev.code].name); + fprintf(stderr, "%s: %s %s\n", names[fd], - keycode_strings[ev.code], + keycode_table[ev.code].name, ev.value == 0 ? "up" : "down"); } } @@ -830,9 +832,16 @@ int main(int argc, char *argv[]) return monitor_loop(); } else if(!strcmp(argv[1], "-l")) { size_t i; - for(i = 0; i < sizeof(keycode_strings)/sizeof(keycode_strings[0]);i++) - if(keycode_strings[i]) - printf("%s\n", keycode_strings[i]); + + for(i = 0; i < KEY_MAX;i++) + if(keycode_table[i].name) { + const struct keycode_table_ent *ent = &keycode_table[i]; + printf("%s\n", ent->name); + if(ent->alt_name) + printf("%s\n", ent->alt_name); + if(ent->shifted_name) + printf("%s\n", ent->shifted_name); + } return 0; } }