Made symbols valid key names.

master
Raheman Vaiya 5 years ago
parent 310b4a007c
commit 580e61a36d
  1. 2
      CHANGELOG.md
  2. 8
      README.md
  3. 20
      src/config.c
  4. 886
      src/keys.h
  5. 21
      src/main.c

@ -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:

@ -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.

@ -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;

@ -27,457 +27,453 @@
#include <linux/input-event-codes.h>
#include <stdint.h>
#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

@ -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;
}
}

Loading…
Cancel
Save