diff options
-rw-r--r-- | KEY.h | 398 | ||||
-rw-r--r-- | fbi.c | 124 | ||||
-rw-r--r-- | fbpdf.c | 22 | ||||
-rw-r--r-- | kbd.c | 268 | ||||
-rw-r--r-- | kbd.h | 1 | ||||
-rw-r--r-- | kbdtest.c | 56 | ||||
-rw-r--r-- | meson.build | 3 | ||||
-rw-r--r-- | scripts/xkbname.sh | 7 | ||||
-rw-r--r-- | xkbname.h | 2402 |
9 files changed, 2685 insertions, 596 deletions
@@ -1,398 +0,0 @@ - [ KEY_RESERVED ] = "RESERVED", - [ 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_HANGUEL ] = "HANGUEL", - [ 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_SCREENLOCK ] = "SCREENLOCK", - [ KEY_DIRECTION ] = "DIRECTION", - [ 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 ] = "VIDEO_NEXT", - [ KEY_VIDEO_PREV ] = "VIDEO_PREV", - [ KEY_BRIGHTNESS_CYCLE ] = "BRIGHTNESS_CYCLE", - [ KEY_BRIGHTNESS_ZERO ] = "BRIGHTNESS_ZERO", - [ KEY_DISPLAY_OFF ] = "DISPLAY_OFF", - [ KEY_WIMAX ] = "WIMAX", - [ 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 ] = "CONTEXT_MENU", - [ KEY_MEDIA_REPEAT ] = "MEDIA_REPEAT", - [ KEY_10CHANNELSUP ] = "10CHANNELSUP", - [ KEY_10CHANNELSDOWN ] = "10CHANNELSDOWN", - [ KEY_IMAGES ] = "IMAGES", - [ KEY_DEL_EOL ] = "DEL_EOL", - [ KEY_DEL_EOS ] = "DEL_EOS", - [ KEY_INS_LINE ] = "INS_LINE", - [ KEY_DEL_LINE ] = "DEL_LINE", - [ KEY_FN ] = "FN", - [ KEY_FN_ESC ] = "FN_ESC", - [ KEY_FN_F1 ] = "FN_F1", - [ KEY_FN_F2 ] = "FN_F2", - [ KEY_FN_F3 ] = "FN_F3", - [ KEY_FN_F4 ] = "FN_F4", - [ KEY_FN_F5 ] = "FN_F5", - [ KEY_FN_F6 ] = "FN_F6", - [ KEY_FN_F7 ] = "FN_F7", - [ KEY_FN_F8 ] = "FN_F8", - [ KEY_FN_F9 ] = "FN_F9", - [ KEY_FN_F10 ] = "FN_F10", - [ KEY_FN_F11 ] = "FN_F11", - [ KEY_FN_F12 ] = "FN_F12", - [ KEY_FN_1 ] = "FN_1", - [ KEY_FN_2 ] = "FN_2", - [ KEY_FN_D ] = "FN_D", - [ KEY_FN_E ] = "FN_E", - [ KEY_FN_F ] = "FN_F", - [ KEY_FN_S ] = "FN_S", - [ KEY_FN_B ] = "FN_B", - [ KEY_BRL_DOT1 ] = "BRL_DOT1", - [ KEY_BRL_DOT2 ] = "BRL_DOT2", - [ KEY_BRL_DOT3 ] = "BRL_DOT3", - [ KEY_BRL_DOT4 ] = "BRL_DOT4", - [ KEY_BRL_DOT5 ] = "BRL_DOT5", - [ KEY_BRL_DOT6 ] = "BRL_DOT6", - [ KEY_BRL_DOT7 ] = "BRL_DOT7", - [ KEY_BRL_DOT8 ] = "BRL_DOT8", - [ KEY_BRL_DOT9 ] = "BRL_DOT9", - [ KEY_BRL_DOT10 ] = "BRL_DOT10", - [ KEY_NUMERIC_0 ] = "NUMERIC_0", - [ KEY_NUMERIC_1 ] = "NUMERIC_1", - [ KEY_NUMERIC_2 ] = "NUMERIC_2", - [ KEY_NUMERIC_3 ] = "NUMERIC_3", - [ KEY_NUMERIC_4 ] = "NUMERIC_4", - [ KEY_NUMERIC_5 ] = "NUMERIC_5", - [ KEY_NUMERIC_6 ] = "NUMERIC_6", - [ KEY_NUMERIC_7 ] = "NUMERIC_7", - [ KEY_NUMERIC_8 ] = "NUMERIC_8", - [ KEY_NUMERIC_9 ] = "NUMERIC_9", - [ KEY_NUMERIC_STAR ] = "NUMERIC_STAR", - [ KEY_NUMERIC_POUND ] = "NUMERIC_POUND", - [ KEY_CAMERA_FOCUS ] = "CAMERA_FOCUS", - [ KEY_WPS_BUTTON ] = "WPS_BUTTON", - [ KEY_TOUCHPAD_TOGGLE ] = "TOUCHPAD_TOGGLE", - [ KEY_TOUCHPAD_ON ] = "TOUCHPAD_ON", - [ KEY_TOUCHPAD_OFF ] = "TOUCHPAD_OFF", - [ KEY_CAMERA_ZOOMIN ] = "CAMERA_ZOOMIN", - [ KEY_CAMERA_ZOOMOUT ] = "CAMERA_ZOOMOUT", - [ KEY_CAMERA_UP ] = "CAMERA_UP", - [ KEY_CAMERA_DOWN ] = "CAMERA_DOWN", - [ KEY_CAMERA_LEFT ] = "CAMERA_LEFT", - [ KEY_CAMERA_RIGHT ] = "CAMERA_RIGHT", - [ KEY_ATTENDANT_ON ] = "ATTENDANT_ON", - [ KEY_ATTENDANT_OFF ] = "ATTENDANT_OFF", - [ KEY_ATTENDANT_TOGGLE ] = "ATTENDANT_TOGGLE", - [ KEY_LIGHTS_TOGGLE ] = "LIGHTS_TOGGLE", @@ -798,74 +798,74 @@ svga_show(struct flist *f, struct flist *prev, rc = kbd_read(key, sizeof(key), &keycode, &keymod); if (rc < 0) - return KEY_ESC; /* EOF */ + return XKB_KEY_Escape; /* EOF */ switch (keycode) { - case KEY_SPACE: + case XKB_KEY_space: if (textreading && f->top < (int)(img->i.height - gfx->vdisplay)) { redraw = 1; f->top += f->text_steps; } else { - skip = KEY_SPACE; - return KEY_SPACE; + skip = XKB_KEY_space; + return XKB_KEY_space; } break; - case KEY_UP: + case XKB_KEY_UP: redraw = 1; f->top -= v_steps; break; - case KEY_DOWN: + case XKB_KEY_DOWN: redraw = 1; f->top += v_steps; break; - case KEY_HOME: + case XKB_KEY_Home: redraw = 1; f->top = 0; break; - case KEY_END: + case XKB_KEY_End: redraw = 1; f->top = img->i.height - gfx->vdisplay; break; - case KEY_LEFT: + case XKB_KEY_Left: redraw = 1; f->left -= h_steps; break; - case KEY_RIGHT: + case XKB_KEY_Right: redraw = 1; f->left += h_steps; break; - case KEY_PAGEUP: - case KEY_K: + case XKB_KEY_Page_Up: + case XKB_KEY_K: if (textreading && f->top > 0) { redraw = 1; f->top -= f->text_steps; } else { - skip = KEY_PAGEUP; - return KEY_PAGEUP; + skip = XKB_KEY_Page_Up; + return XKB_KEY_Page_Up; } break; - case KEY_PAGEDOWN: - case KEY_J: - case KEY_N: + case XKB_KEY_Page_Down: + case XKB_KEY_J: + case XKB_KEY_N: if (textreading && f->top < (int)(img->i.height - gfx->vdisplay)) { redraw = 1; f->top += f->text_steps; } else { - skip = KEY_PAGEDOWN; - return KEY_PAGEDOWN; + skip = XKB_KEY_Page_Down; + return XKB_KEY_Page_Down; } break; - case KEY_P: + case XKB_KEY_P: if (0 != timeout) { paused = !paused; status_update(paused ? "pause on " : "pause off", NULL); } break; - case KEY_H: + case XKB_KEY_H: if (!help) { show_help(); help = 1; @@ -876,7 +876,7 @@ svga_show(struct flist *f, struct flist *prev, exif = 0; break; - case KEY_I: + case XKB_KEY_I: if (!exif) { show_exif(fcurrent); exif = 1; @@ -887,28 +887,28 @@ svga_show(struct flist *f, struct flist *prev, help = 0; break; - case KEY_0: - case KEY_1: - case KEY_2: - case KEY_3: - case KEY_4: - case KEY_5: - case KEY_6: - case KEY_7: - case KEY_8: - case KEY_9: + case XKB_KEY_0: + case XKB_KEY_1: + case XKB_KEY_2: + case XKB_KEY_3: + case XKB_KEY_4: + case XKB_KEY_5: + case XKB_KEY_6: + case XKB_KEY_7: + case XKB_KEY_8: + case XKB_KEY_9: *nr = *nr * 10; - if (keycode != KEY_0) - *nr += keycode - KEY_1 + 1; + if (keycode != XKB_KEY_0) + *nr += keycode - XKB_KEY_1 + 1; snprintf(linebuffer, sizeof(linebuffer), "> %d",*nr); status_update(linebuffer, NULL); break; - case KEY_D: + case XKB_KEY_D: /* need shift state for this one */ - return KEY_D | (keymod << 16); + return XKB_KEY_D | (keymod << 16); - case KEY_RESERVED: + case XKB_KEY_VoidSymbol: /* ignored event */ break; @@ -1375,7 +1375,7 @@ int main(int argc, char *argv[]) key = svga_show(fcurrent, fprev, timeout, desc, info, &arg); fprev = fcurrent; switch (key) { - case KEY_D | (KEY_MOD_SHIFT << 16): + case XKB_KEY_D | (KEY_MOD_SHIFT << 16): if (editable) { struct flist *fdel = fcurrent; if (flist_islast(fcurrent)) @@ -1394,8 +1394,8 @@ int main(int argc, char *argv[]) status_error("readonly mode, sorry [start with --edit?]"); } break; - case KEY_R: - case KEY_L: + case XKB_KEY_R: + case XKB_KEY_L: { if (editable) { snprintf(linebuffer,sizeof(linebuffer), @@ -1403,7 +1403,7 @@ int main(int argc, char *argv[]) status_update(linebuffer, NULL); jpeg_transform_inplace (fcurrent->name, - (key == KEY_R) ? JXFORM_ROT_90 : JXFORM_ROT_270, + (key == XKB_KEY_R) ? JXFORM_ROT_90 : JXFORM_ROT_270, NULL, NULL,0, (backup ? JFLAG_FILE_BACKUP : 0) | @@ -1418,8 +1418,8 @@ int main(int argc, char *argv[]) } break; } - case KEY_X: - case KEY_Y: + case XKB_KEY_X: + case XKB_KEY_Y: { if (editable) { snprintf(linebuffer,sizeof(linebuffer), @@ -1427,7 +1427,7 @@ int main(int argc, char *argv[]) status_update(linebuffer, NULL); jpeg_transform_inplace (fcurrent->name, - (key == KEY_X) ? JXFORM_FLIP_V : JXFORM_FLIP_H, + (key == XKB_KEY_X) ? JXFORM_FLIP_V : JXFORM_FLIP_H, NULL, NULL,0, (backup ? JFLAG_FILE_BACKUP : 0) | @@ -1442,25 +1442,23 @@ int main(int argc, char *argv[]) } break; } - case KEY_ENTER: + case XKB_KEY_Return: fcurrent->tag = !fcurrent->tag; /* fall throuth */ - case KEY_SPACE: + case XKB_KEY_space: fcurrent = flist_next(fcurrent,1,0); if (NULL != fcurrent) break; /* else fall */ - case KEY_ESC: - case KEY_Q: - case KEY_E: + case XKB_KEY_Escape: + case XKB_KEY_Q: + case XKB_KEY_E: cleanup_and_exit(0); break; - case KEY_PAGEDOWN: - case BTN_LEFT: + case XKB_KEY_Page_Down: fcurrent = flist_next(fcurrent,0,1); break; - case KEY_PAGEUP: - case BTN_RIGHT: + case XKB_KEY_Page_Up: fcurrent = flist_prev(fcurrent,1); break; case -1: /* timeout */ @@ -1475,18 +1473,18 @@ int main(int argc, char *argv[]) } /* FIXME: wrap around */ break; - case KEY_KPPLUS: - case KEY_KPMINUS: - case KEY_A: - case KEY_S: + case XKB_KEY_KP_Add: + case XKB_KEY_KP_Subtract: + case XKB_KEY_A: + case XKB_KEY_S: { float newscale, oldscale = fcurrent->scale; - if (key == KEY_KPPLUS) { + if (key == XKB_KEY_KP_Add) { newscale = fcurrent->scale * 1.6; - } else if (key == KEY_KPMINUS) { + } else if (key == XKB_KEY_KP_Subtract) { newscale = fcurrent->scale / 1.6; - } else if (key == KEY_A) { + } else if (key == XKB_KEY_A) { newscale = auto_scale(fcurrent->fimg); } else { newscale = arg / 100.0; @@ -1499,16 +1497,16 @@ int main(int argc, char *argv[]) scale_fix_top_left(fcurrent, oldscale, newscale); break; } - case KEY_G: + case XKB_KEY_G: if (arg > 0 && arg <= fcount) fcurrent = flist_goto(arg); break; #if 0 /* FIXME */ - case KEY_DELAY: + case XKB_KEY_DELAY: timeout = arg; break; #endif - case KEY_V: + case XKB_KEY_V: statusline = !statusline; break; } @@ -382,41 +382,41 @@ int main(int argc, char *argv[]) kbd_read(key, sizeof(key), &keycode, &keymod); switch (keycode) { - case KEY_ESC: - case KEY_Q: + case XKB_KEY_Escape: + case XKB_KEY_Q: quit = true; break; - case KEY_PAGEUP: + case XKB_KEY_Page_Up: if (index > 0) { index--; newpage = true; } break; - case KEY_PAGEDOWN: + case XKB_KEY_Page_Down: if (index+1 < poppler_document_get_n_pages(doc)) { index++; newpage = true; } break; - case KEY_UP: + case XKB_KEY_Up: page_move(0, 0.2); break; - case KEY_DOWN: + case XKB_KEY_Down: page_move(0, -0.2); break; - case KEY_LEFT: + case XKB_KEY_Left: page_move(0.2, 0); break; - case KEY_RIGHT: + case XKB_KEY_Right: page_move(-0.2, 0); break; - case KEY_KPMINUS: + case XKB_KEY_KP_Subtract: page_scale(0.7); break; - case KEY_KPPLUS: + case XKB_KEY_KP_Add: page_scale(1.5); break; - case KEY_SPACE: + case XKB_KEY_space: if (ty > gfx->vdisplay - sh) { page_move(0, -0.75); break; @@ -13,6 +13,10 @@ #include "kbd.h" +#ifdef SYSTEM_LINUX +# include <linux/input.h> +#endif + /* ---------------------------------------------------------------------- */ struct xkb_context *xkb_ctx; @@ -81,117 +85,117 @@ struct termctrl { }; static struct termctrl termctrl[] = { - { .seq = "a", .code = KEY_A }, - { .seq = "b", .code = KEY_B }, - { .seq = "c", .code = KEY_C }, - { .seq = "d", .code = KEY_D }, - { .seq = "e", .code = KEY_E }, - { .seq = "f", .code = KEY_F }, - { .seq = "g", .code = KEY_G }, - { .seq = "h", .code = KEY_H }, - { .seq = "i", .code = KEY_I }, - { .seq = "j", .code = KEY_J }, - { .seq = "k", .code = KEY_K }, - { .seq = "l", .code = KEY_L }, - { .seq = "m", .code = KEY_M }, - { .seq = "n", .code = KEY_N }, - { .seq = "o", .code = KEY_O }, - { .seq = "p", .code = KEY_P }, - { .seq = "q", .code = KEY_Q }, - { .seq = "r", .code = KEY_R }, - { .seq = "s", .code = KEY_S }, - { .seq = "t", .code = KEY_T }, - { .seq = "u", .code = KEY_U }, - { .seq = "v", .code = KEY_V }, - { .seq = "w", .code = KEY_W }, - { .seq = "x", .code = KEY_X }, - { .seq = "y", .code = KEY_Y }, - { .seq = "z", .code = KEY_Z }, - - { .seq = "A", .code = KEY_A, .mod = KEY_MOD_SHIFT }, - { .seq = "B", .code = KEY_B, .mod = KEY_MOD_SHIFT }, - { .seq = "C", .code = KEY_C, .mod = KEY_MOD_SHIFT }, - { .seq = "D", .code = KEY_D, .mod = KEY_MOD_SHIFT }, - { .seq = "E", .code = KEY_E, .mod = KEY_MOD_SHIFT }, - { .seq = "F", .code = KEY_F, .mod = KEY_MOD_SHIFT }, - { .seq = "G", .code = KEY_G, .mod = KEY_MOD_SHIFT }, - { .seq = "H", .code = KEY_H, .mod = KEY_MOD_SHIFT }, - { .seq = "I", .code = KEY_I, .mod = KEY_MOD_SHIFT }, - { .seq = "J", .code = KEY_J, .mod = KEY_MOD_SHIFT }, - { .seq = "K", .code = KEY_K, .mod = KEY_MOD_SHIFT }, - { .seq = "L", .code = KEY_L, .mod = KEY_MOD_SHIFT }, - { .seq = "M", .code = KEY_M, .mod = KEY_MOD_SHIFT }, - { .seq = "N", .code = KEY_N, .mod = KEY_MOD_SHIFT }, - { .seq = "O", .code = KEY_O, .mod = KEY_MOD_SHIFT }, - { .seq = "P", .code = KEY_P, .mod = KEY_MOD_SHIFT }, - { .seq = "Q", .code = KEY_Q, .mod = KEY_MOD_SHIFT }, - { .seq = "R", .code = KEY_R, .mod = KEY_MOD_SHIFT }, - { .seq = "S", .code = KEY_S, .mod = KEY_MOD_SHIFT }, - { .seq = "T", .code = KEY_T, .mod = KEY_MOD_SHIFT }, - { .seq = "U", .code = KEY_U, .mod = KEY_MOD_SHIFT }, - { .seq = "V", .code = KEY_V, .mod = KEY_MOD_SHIFT }, - { .seq = "W", .code = KEY_W, .mod = KEY_MOD_SHIFT }, - { .seq = "X", .code = KEY_X, .mod = KEY_MOD_SHIFT }, - { .seq = "Y", .code = KEY_Y, .mod = KEY_MOD_SHIFT }, - { .seq = "Z", .code = KEY_Z, .mod = KEY_MOD_SHIFT }, - - { .seq = "\x01", .code = KEY_A, .mod = KEY_MOD_CTRL }, - { .seq = "\x02", .code = KEY_B, .mod = KEY_MOD_CTRL }, - { .seq = "\x03", .code = KEY_C, .mod = KEY_MOD_CTRL }, - { .seq = "\x04", .code = KEY_D, .mod = KEY_MOD_CTRL }, - { .seq = "\x05", .code = KEY_E, .mod = KEY_MOD_CTRL }, - { .seq = "\x06", .code = KEY_F, .mod = KEY_MOD_CTRL }, - { .seq = "\x07", .code = KEY_G, .mod = KEY_MOD_CTRL }, - { .seq = "\x08", .code = KEY_H, .mod = KEY_MOD_CTRL }, - { .seq = "\x09", .code = KEY_I, .mod = KEY_MOD_CTRL }, - { .seq = "\x0a", .code = KEY_ENTER }, - { .seq = "\x0b", .code = KEY_K, .mod = KEY_MOD_CTRL }, - { .seq = "\x0c", .code = KEY_L, .mod = KEY_MOD_CTRL }, - { .seq = "\x0d", .code = KEY_M, .mod = KEY_MOD_CTRL }, - { .seq = "\x0e", .code = KEY_N, .mod = KEY_MOD_CTRL }, - { .seq = "\x0f", .code = KEY_O, .mod = KEY_MOD_CTRL }, - { .seq = "\x10", .code = KEY_P, .mod = KEY_MOD_CTRL }, - { .seq = "\x11", .code = KEY_Q, .mod = KEY_MOD_CTRL }, - { .seq = "\x12", .code = KEY_R, .mod = KEY_MOD_CTRL }, - { .seq = "\x13", .code = KEY_S, .mod = KEY_MOD_CTRL }, - { .seq = "\x14", .code = KEY_T, .mod = KEY_MOD_CTRL }, - { .seq = "\x15", .code = KEY_U, .mod = KEY_MOD_CTRL }, - { .seq = "\x16", .code = KEY_V, .mod = KEY_MOD_CTRL }, - { .seq = "\x17", .code = KEY_W, .mod = KEY_MOD_CTRL }, - { .seq = "\x18", .code = KEY_X, .mod = KEY_MOD_CTRL }, - { .seq = "\x19", .code = KEY_Y, .mod = KEY_MOD_CTRL }, - { .seq = "\x1a", .code = KEY_Z, .mod = KEY_MOD_CTRL }, - - { .seq = "0", .code = KEY_0 }, - { .seq = "1", .code = KEY_1 }, - { .seq = "2", .code = KEY_2 }, - { .seq = "3", .code = KEY_3 }, - { .seq = "4", .code = KEY_4 }, - { .seq = "5", .code = KEY_5 }, - { .seq = "6", .code = KEY_6 }, - { .seq = "7", .code = KEY_7 }, - { .seq = "8", .code = KEY_8 }, - { .seq = "9", .code = KEY_9 }, - - { .seq = " ", .code = KEY_SPACE }, - { .seq = "\x1b", .code = KEY_ESC }, - { .seq = "+", .code = KEY_KPPLUS }, - { .seq = "-", .code = KEY_KPMINUS }, - { .seq = "\x7f", .code = KEY_BACKSPACE}, - - { .seq = "\x1b[A", .code = KEY_UP }, - { .seq = "\x1b[B", .code = KEY_DOWN }, - { .seq = "\x1b[C", .code = KEY_RIGHT }, - { .seq = "\x1b[D", .code = KEY_LEFT }, - { .seq = "\x1b[F", .code = KEY_END }, - { .seq = "\x1b[H", .code = KEY_HOME }, - - { .seq = "\x1b[1~", .code = KEY_HOME }, - { .seq = "\x1b[2~", .code = KEY_INSERT }, - { .seq = "\x1b[3~", .code = KEY_DELETE }, - { .seq = "\x1b[4~", .code = KEY_END }, - { .seq = "\x1b[5~", .code = KEY_PAGEUP }, - { .seq = "\x1b[6~", .code = KEY_PAGEDOWN }, + { .seq = "a", .code = XKB_KEY_A }, + { .seq = "b", .code = XKB_KEY_B }, + { .seq = "c", .code = XKB_KEY_C }, + { .seq = "d", .code = XKB_KEY_D }, + { .seq = "e", .code = XKB_KEY_E }, + { .seq = "f", .code = XKB_KEY_F }, + { .seq = "g", .code = XKB_KEY_G }, + { .seq = "h", .code = XKB_KEY_H }, + { .seq = "i", .code = XKB_KEY_I }, + { .seq = "j", .code = XKB_KEY_J }, + { .seq = "k", .code = XKB_KEY_K }, + { .seq = "l", .code = XKB_KEY_L }, + { .seq = "m", .code = XKB_KEY_M }, + { .seq = "n", .code = XKB_KEY_N }, + { .seq = "o", .code = XKB_KEY_O }, + { .seq = "p", .code = XKB_KEY_P }, + { .seq = "q", .code = XKB_KEY_Q }, + { .seq = "r", .code = XKB_KEY_R }, + { .seq = "s", .code = XKB_KEY_S }, + { .seq = "t", .code = XKB_KEY_T }, + { .seq = "u", .code = XKB_KEY_U }, + { .seq = "v", .code = XKB_KEY_V }, + { .seq = "w", .code = XKB_KEY_W }, + { .seq = "x", .code = XKB_KEY_X }, + { .seq = "y", .code = XKB_KEY_Y }, + { .seq = "z", .code = XKB_KEY_Z }, + + { .seq = "A", .code = XKB_KEY_A, .mod = KEY_MOD_SHIFT }, + { .seq = "B", .code = XKB_KEY_B, .mod = KEY_MOD_SHIFT }, + { .seq = "C", .code = XKB_KEY_C, .mod = KEY_MOD_SHIFT }, + { .seq = "D", .code = XKB_KEY_D, .mod = KEY_MOD_SHIFT }, + { .seq = "E", .code = XKB_KEY_E, .mod = KEY_MOD_SHIFT }, + { .seq = "F", .code = XKB_KEY_F, .mod = KEY_MOD_SHIFT }, + { .seq = "G", .code = XKB_KEY_G, .mod = KEY_MOD_SHIFT }, + { .seq = "H", .code = XKB_KEY_H, .mod = KEY_MOD_SHIFT }, + { .seq = "I", .code = XKB_KEY_I, .mod = KEY_MOD_SHIFT }, + { .seq = "J", .code = XKB_KEY_J, .mod = KEY_MOD_SHIFT }, + { .seq = "K", .code = XKB_KEY_K, .mod = KEY_MOD_SHIFT }, + { .seq = "L", .code = XKB_KEY_L, .mod = KEY_MOD_SHIFT }, + { .seq = "M", .code = XKB_KEY_M, .mod = KEY_MOD_SHIFT }, + { .seq = "N", .code = XKB_KEY_N, .mod = KEY_MOD_SHIFT }, + { .seq = "O", .code = XKB_KEY_O, .mod = KEY_MOD_SHIFT }, + { .seq = "P", .code = XKB_KEY_P, .mod = KEY_MOD_SHIFT }, + { .seq = "Q", .code = XKB_KEY_Q, .mod = KEY_MOD_SHIFT }, + { .seq = "R", .code = XKB_KEY_R, .mod = KEY_MOD_SHIFT }, + { .seq = "S", .code = XKB_KEY_S, .mod = KEY_MOD_SHIFT }, + { .seq = "T", .code = XKB_KEY_T, .mod = KEY_MOD_SHIFT }, + { .seq = "U", .code = XKB_KEY_U, .mod = KEY_MOD_SHIFT }, + { .seq = "V", .code = XKB_KEY_V, .mod = KEY_MOD_SHIFT }, + { .seq = "W", .code = XKB_KEY_W, .mod = KEY_MOD_SHIFT }, + { .seq = "X", .code = XKB_KEY_X, .mod = KEY_MOD_SHIFT }, + { .seq = "Y", .code = XKB_KEY_Y, .mod = KEY_MOD_SHIFT }, + { .seq = "Z", .code = XKB_KEY_Z, .mod = KEY_MOD_SHIFT }, + + { .seq = "\x01", .code = XKB_KEY_A, .mod = KEY_MOD_CTRL }, + { .seq = "\x02", .code = XKB_KEY_B, .mod = KEY_MOD_CTRL }, + { .seq = "\x03", .code = XKB_KEY_C, .mod = KEY_MOD_CTRL }, + { .seq = "\x04", .code = XKB_KEY_D, .mod = KEY_MOD_CTRL }, + { .seq = "\x05", .code = XKB_KEY_E, .mod = KEY_MOD_CTRL }, + { .seq = "\x06", .code = XKB_KEY_F, .mod = KEY_MOD_CTRL }, + { .seq = "\x07", .code = XKB_KEY_G, .mod = KEY_MOD_CTRL }, + { .seq = "\x08", .code = XKB_KEY_H, .mod = KEY_MOD_CTRL }, + { .seq = "\x09", .code = XKB_KEY_I, .mod = KEY_MOD_CTRL }, + { .seq = "\x0a", .code = XKB_KEY_Return }, + { .seq = "\x0b", .code = XKB_KEY_K, .mod = KEY_MOD_CTRL }, + { .seq = "\x0c", .code = XKB_KEY_L, .mod = KEY_MOD_CTRL }, + { .seq = "\x0d", .code = XKB_KEY_M, .mod = KEY_MOD_CTRL }, + { .seq = "\x0e", .code = XKB_KEY_N, .mod = KEY_MOD_CTRL }, + { .seq = "\x0f", .code = XKB_KEY_O, .mod = KEY_MOD_CTRL }, + { .seq = "\x10", .code = XKB_KEY_P, .mod = KEY_MOD_CTRL }, + { .seq = "\x11", .code = XKB_KEY_Q, .mod = KEY_MOD_CTRL }, + { .seq = "\x12", .code = XKB_KEY_R, .mod = KEY_MOD_CTRL }, + { .seq = "\x13", .code = XKB_KEY_S, .mod = KEY_MOD_CTRL }, + { .seq = "\x14", .code = XKB_KEY_T, .mod = KEY_MOD_CTRL }, + { .seq = "\x15", .code = XKB_KEY_U, .mod = KEY_MOD_CTRL }, + { .seq = "\x16", .code = XKB_KEY_V, .mod = KEY_MOD_CTRL }, + { .seq = "\x17", .code = XKB_KEY_W, .mod = KEY_MOD_CTRL }, + { .seq = "\x18", .code = XKB_KEY_X, .mod = KEY_MOD_CTRL }, + { .seq = "\x19", .code = XKB_KEY_Y, .mod = KEY_MOD_CTRL }, + { .seq = "\x1a", .code = XKB_KEY_Z, .mod = KEY_MOD_CTRL }, + + { .seq = "0", .code = XKB_KEY_0 }, + { .seq = "1", .code = XKB_KEY_1 }, + { .seq = "2", .code = XKB_KEY_2 }, + { .seq = "3", .code = XKB_KEY_3 }, + { .seq = "4", .code = XKB_KEY_4 }, + { .seq = "5", .code = XKB_KEY_5 }, + { .seq = "6", .code = XKB_KEY_6 }, + { .seq = "7", .code = XKB_KEY_7 }, + { .seq = "8", .code = XKB_KEY_8 }, + { .seq = "9", .code = XKB_KEY_9 }, + + { .seq = " ", .code = XKB_KEY_space }, + { .seq = "\x1b", .code = XKB_KEY_Escape }, + { .seq = "+", .code = XKB_KEY_KP_Add }, + { .seq = "-", .code = XKB_KEY_KP_Subtract }, + { .seq = "\x7f", .code = XKB_KEY_BackSpace }, + + { .seq = "\x1b[A", .code = XKB_KEY_Up }, + { .seq = "\x1b[B", .code = XKB_KEY_Down }, + { .seq = "\x1b[C", .code = XKB_KEY_Right }, + { .seq = "\x1b[D", .code = XKB_KEY_Left }, + { .seq = "\x1b[F", .code = XKB_KEY_End }, + { .seq = "\x1b[H", .code = XKB_KEY_Home }, + + { .seq = "\x1b[1~", .code = XKB_KEY_Home }, + { .seq = "\x1b[2~", .code = XKB_KEY_Insert }, + { .seq = "\x1b[3~", .code = XKB_KEY_Delete }, + { .seq = "\x1b[4~", .code = XKB_KEY_End }, + { .seq = "\x1b[5~", .code = XKB_KEY_Page_Up }, + { .seq = "\x1b[6~", .code = XKB_KEY_Page_Down }, { /* EOF */ } }; @@ -207,7 +211,7 @@ static uint32_t tty_parse(const char *key, uint32_t *mod) } } *mod = 0; - return KEY_RESERVED; + return XKB_KEY_VoidSymbol; } /* ---------------------------------------------------------------------- */ @@ -268,14 +272,18 @@ static int open_restricted(const char *path, int flags, void *user_data) } fprintf(stderr, "kbd: using %s\n", path); +#ifdef EVIOCGRAB ioctl(fd, EVIOCGRAB, 1); +#endif libinput_devcount++; return fd; } static void close_restricted(int fd, void *user_data) { +#ifdef EVIOCGRAB ioctl(fd, EVIOCGRAB, 0); +#endif close(fd); libinput_devcount--; } @@ -304,6 +312,13 @@ void kbd_init(int use_libinput, dev_t gfx) libinput_udev_assign_seat(ctx, seat); fprintf(stderr, "kbd: using libinput (%d devices, %s)\n", libinput_devcount, seat); + if (libinput_deverror != 0 || libinput_devcount == 0) { + fprintf(stderr, "ERROR: failed to open input devices (%d ok, %d failed)\n", + libinput_devcount, libinput_deverror); + return; + } + xkb_configure(); + xkb_init(); } else { fprintf(stderr, "kbd: using stdin from terminal\n"); tty_raw(); @@ -333,11 +348,15 @@ int kbd_read(char *buf, uint32_t len, { struct libinput_event *evt; struct libinput_event_keyboard *kbd; +#if 0 struct libinput_event_pointer *ptr; - int rc; +#endif + xkb_keycode_t key; + bool down; + int rc, events = 0; memset(buf, 0, len); - *keycode = KEY_RESERVED; + *keycode = XKB_KEY_VoidSymbol; *modifier = 0; if (ctx) { @@ -348,22 +367,35 @@ int kbd_read(char *buf, uint32_t len, switch (libinput_event_get_type(evt)) { case LIBINPUT_EVENT_KEYBOARD_KEY: kbd = libinput_event_get_keyboard_event(evt); - if (libinput_event_keyboard_get_key_state(kbd)) - *keycode = libinput_event_keyboard_get_key(kbd); - /* TODO: track modifier state */ - /* TODO: fill buf with typed chars */ + key = libinput_event_keyboard_get_key(kbd) + 8; + down = libinput_event_keyboard_get_key_state(kbd); + xkb_state_update_key(xkb_state, key, down); + if (down) { + *keycode = xkb_state_key_get_one_sym(xkb_state, key); + if (xkb_state_mod_name_is_active(xkb_state, XKB_MOD_NAME_SHIFT, + XKB_STATE_MODS_EFFECTIVE)) + *modifier |= KEY_MOD_SHIFT; + if (xkb_state_mod_name_is_active(xkb_state, XKB_MOD_NAME_CTRL, + XKB_STATE_MODS_EFFECTIVE)) + *modifier |= KEY_MOD_CTRL; + } break; +#if 0 case LIBINPUT_EVENT_POINTER_BUTTON: ptr = libinput_event_get_pointer_event(evt); if (libinput_event_pointer_get_button_state(ptr)) *keycode = libinput_event_pointer_get_button(ptr); break; +#endif default: /* ignore event */ break; } libinput_event_destroy(evt); + events++; } + if (!events) + return -1; return 0; } else { rc = read(STDIN_FILENO, buf, len-1); @@ -1,6 +1,5 @@ #include <stdbool.h> #include <inttypes.h> -#include <linux/input.h> #include <libudev.h> #include <libinput.h> @@ -13,17 +13,61 @@ /* ---------------------------------------------------------------------- */ -static const char *keyname[KEY_CNT] = { -#include "KEY.h" +static struct { + uint32_t code; + const char *name; +} xkbname_list[] = { +#include "xkbname.h" }; +const char *xkbname(uint32_t code) +{ + int keycount = sizeof(xkbname_list)/sizeof(xkbname_list[0]); + int i; + + for (i = 0; i < keycount; i++) + if (xkbname_list[i].code == code) + return xkbname_list[i].name; + return "unknown"; +} + +static void usage(FILE *fp) +{ + fprintf(fp, + "\n" + "usage: kbdtest [ options ]\n" + "\n" + "options:\n" + " -h print this text\n" + " -i use libinput\n" + "\n"); +} + int main(int argc, char *argv[]) { uint32_t code, mod; char key[32]; - int rc,i; + bool use_libinput = false; + int rc, i, c; + + for (;;) { + c = getopt(argc, argv, "hi"); + if (c == -1) + break; + switch (c) { + case 'i': + use_libinput = true; + break; + case 'h': + usage(stdout); + exit(0); + default: + usage(stderr); + exit(1); + } + } - kbd_init(0, 0); + kbd_init(use_libinput, 0); for (;;) { kbd_wait(10); @@ -33,12 +77,14 @@ int main(int argc, char *argv[]) /* EOF */ break; } + if (code == XKB_KEY_VoidSymbol) + continue; fprintf(stderr, "key: \""); for (i = 0; key[i] != 0; i++) { fprintf(stderr, "%c", isprint(key[i]) ? key[i] : '.'); } - fprintf(stderr, "\" -> %s", keyname[code]); + fprintf(stderr, "\" -> %s", xkbname(code)); if (mod & KEY_MOD_SHIFT) fprintf(stderr, " +shift"); if (mod & KEY_MOD_CTRL) diff --git a/meson.build b/meson.build index 49d29d8..6516aae 100644 --- a/meson.build +++ b/meson.build @@ -80,6 +80,9 @@ trans_inc = include_directories(''.join(['jpeg/', jpeg_ver])) if motif_dep.found() config.set('HAVE_MOTIF', true) endif +if target_machine.system() == 'linux' + config.set('SYSTEM_LINUX', true) +endif configure_file(output : 'config.h', configuration : config) add_global_arguments(['-include', 'config.h'], language : 'c') diff --git a/scripts/xkbname.sh b/scripts/xkbname.sh new file mode 100644 index 0000000..903c829 --- /dev/null +++ b/scripts/xkbname.sh @@ -0,0 +1,7 @@ +#!/bin/sh +cat /usr/include/xkbcommon/xkbcommon-keysyms.h \ + | awk '{ print $2 }' \ + | grep -e '^XKB_KEY_' \ + | while read key; do +printf '{ .code = %-24s, .name = "%s" },\n' "${key}" "${key#XKB_KEY_}" +done > xkbname.h diff --git a/xkbname.h b/xkbname.h new file mode 100644 index 0000000..21cd652 --- /dev/null +++ b/xkbname.h @@ -0,0 +1,2402 @@ +{ .code = XKB_KEY_NoSymbol , .name = "NoSymbol" }, +{ .code = XKB_KEY_VoidSymbol , .name = "VoidSymbol" }, +{ .code = XKB_KEY_BackSpace , .name = "BackSpace" }, +{ .code = XKB_KEY_Tab , .name = "Tab" }, +{ .code = XKB_KEY_Linefeed , .name = "Linefeed" }, +{ .code = XKB_KEY_Clear , .name = "Clear" }, +{ .code = XKB_KEY_Return , .name = "Return" }, +{ .code = XKB_KEY_Pause , .name = "Pause" }, +{ .code = XKB_KEY_Scroll_Lock , .name = "Scroll_Lock" }, +{ .code = XKB_KEY_Sys_Req , .name = "Sys_Req" }, +{ .code = XKB_KEY_Escape , .name = "Escape" }, +{ .code = XKB_KEY_Delete , .name = "Delete" }, +{ .code = XKB_KEY_Multi_key , .name = "Multi_key" }, +{ .code = XKB_KEY_Codeinput , .name = "Codeinput" }, +{ .code = XKB_KEY_SingleCandidate , .name = "SingleCandidate" }, +{ .code = XKB_KEY_MultipleCandidate, .name = "MultipleCandidate" }, +{ .code = XKB_KEY_PreviousCandidate, .name = "PreviousCandidate" }, +{ .code = XKB_KEY_Kanji , .name = "Kanji" }, +{ .code = XKB_KEY_Muhenkan , .name = "Muhenkan" }, +{ .code = XKB_KEY_Henkan_Mode , .name = "Henkan_Mode" }, +{ .code = XKB_KEY_Henkan , .name = "Henkan" }, +{ .code = XKB_KEY_Romaji , .name = "Romaji" }, +{ .code = XKB_KEY_Hiragana , .name = "Hiragana" }, +{ .code = XKB_KEY_Katakana , .name = "Katakana" }, +{ .code = XKB_KEY_Hiragana_Katakana, .name = "Hiragana_Katakana" }, +{ .code = XKB_KEY_Zenkaku , .name = "Zenkaku" }, +{ .code = XKB_KEY_Hankaku , .name = "Hankaku" }, +{ .code = XKB_KEY_Zenkaku_Hankaku , .name = "Zenkaku_Hankaku" }, +{ .code = XKB_KEY_Touroku , .name = "Touroku" }, +{ .code = XKB_KEY_Massyo , .name = "Massyo" }, +{ .code = XKB_KEY_Kana_Lock , .name = "Kana_Lock" }, +{ .code = XKB_KEY_Kana_Shift , .name = "Kana_Shift" }, +{ .code = XKB_KEY_Eisu_Shift , .name = "Eisu_Shift" }, +{ .code = XKB_KEY_Eisu_toggle , .name = "Eisu_toggle" }, +{ .code = XKB_KEY_Kanji_Bangou , .name = "Kanji_Bangou" }, +{ .code = XKB_KEY_Zen_Koho , .name = "Zen_Koho" }, +{ .code = XKB_KEY_Mae_Koho , .name = "Mae_Koho" }, +{ .code = XKB_KEY_Home , .name = "Home" }, +{ .code = XKB_KEY_Left , .name = "Left" }, +{ .code = XKB_KEY_Up , .name = "Up" }, +{ .code = XKB_KEY_Right , .name = "Right" }, +{ .code = XKB_KEY_Down , .name = "Down" }, +{ .code = XKB_KEY_Prior , .name = "Prior" }, +{ .code = XKB_KEY_Page_Up , .name = "Page_Up" }, +{ .code = XKB_KEY_Next , .name = "Next" }, +{ .code = XKB_KEY_Page_Down , .name = "Page_Down" }, +{ .code = XKB_KEY_End , .name = "End" }, +{ .code = XKB_KEY_Begin , .name = "Begin" }, +{ .code = XKB_KEY_Select , .name = "Select" }, +{ .code = XKB_KEY_Print , .name = "Print" }, +{ .code = XKB_KEY_Execute , .name = "Execute" }, +{ .code = XKB_KEY_Insert , .name = "Insert" }, +{ .code = XKB_KEY_Undo , .name = "Undo" }, +{ .code = XKB_KEY_Redo , .name = "Redo" }, +{ .code = XKB_KEY_Menu , .name = "Menu" }, +{ .code = XKB_KEY_Find , .name = "Find" }, +{ .code = XKB_KEY_Cancel , .name = "Cancel" }, +{ .code = XKB_KEY_Help , .name = "Help" }, +{ .code = XKB_KEY_Break , .name = "Break" }, +{ .code = XKB_KEY_Mode_switch , .name = "Mode_switch" }, +{ .code = XKB_KEY_script_switch , .name = "script_switch" }, +{ .code = XKB_KEY_Num_Lock , .name = "Num_Lock" }, +{ .code = XKB_KEY_KP_Space , .name = "KP_Space" }, +{ .code = XKB_KEY_KP_Tab , .name = "KP_Tab" }, +{ .code = XKB_KEY_KP_Enter , .name = "KP_Enter" }, +{ .code = XKB_KEY_KP_F1 , .name = "KP_F1" }, +{ .code = XKB_KEY_KP_F2 , .name = "KP_F2" }, +{ .code = XKB_KEY_KP_F3 , .name = "KP_F3" }, +{ .code = XKB_KEY_KP_F4 , .name = "KP_F4" }, +{ .code = XKB_KEY_KP_Home , .name = "KP_Home" }, +{ .code = XKB_KEY_KP_Left , .name = "KP_Left" }, +{ .code = XKB_KEY_KP_Up , .name = "KP_Up" }, +{ .code = XKB_KEY_KP_Right , .name = "KP_Right" }, +{ .code = XKB_KEY_KP_Down , .name = "KP_Down" }, +{ .code = XKB_KEY_KP_Prior , .name = "KP_Prior" }, +{ .code = XKB_KEY_KP_Page_Up , .name = "KP_Page_Up" }, +{ .code = XKB_KEY_KP_Next , .name = "KP_Next" }, +{ .code = XKB_KEY_KP_Page_Down , .name = "KP_Page_Down" }, +{ .code = XKB_KEY_KP_End , .name = "KP_End" }, +{ .code = XKB_KEY_KP_Begin , .name = "KP_Begin" }, +{ .code = XKB_KEY_KP_Insert , .name = "KP_Insert" }, +{ .code = XKB_KEY_KP_Delete , .name = "KP_Delete" }, +{ .code = XKB_KEY_KP_Equal , .name = "KP_Equal" }, +{ .code = XKB_KEY_KP_Multiply , .name = "KP_Multiply" }, +{ .code = XKB_KEY_KP_Add , .name = "KP_Add" }, +{ .code = XKB_KEY_KP_Separator , .name = "KP_Separator" }, +{ .code = XKB_KEY_KP_Subtract , .name = "KP_Subtract" }, +{ .code = XKB_KEY_KP_Decimal , .name = "KP_Decimal" }, +{ .code = XKB_KEY_KP_Divide , .name = "KP_Divide" }, +{ .code = XKB_KEY_KP_0 , .name = "KP_0" }, +{ .code = XKB_KEY_KP_1 , .name = "KP_1" }, +{ .code = XKB_KEY_KP_2 , .name = "KP_2" }, +{ .code = XKB_KEY_KP_3 , .name = "KP_3" }, +{ .code = XKB_KEY_KP_4 , .name = "KP_4" }, +{ .code = XKB_KEY_KP_5 , .name = "KP_5" }, +{ .code = XKB_KEY_KP_6 , .name = "KP_6" }, +{ .code = XKB_KEY_KP_7 , .name = "KP_7" }, +{ .code = XKB_KEY_KP_8 , .name = "KP_8" }, +{ .code = XKB_KEY_KP_9 , .name = "KP_9" }, +{ .code = XKB_KEY_F1 , .name = "F1" }, +{ .code = XKB_KEY_F2 , .name = "F2" }, +{ .code = XKB_KEY_F3 , .name = "F3" }, +{ .code = XKB_KEY_F4 , .name = "F4" }, +{ .code = XKB_KEY_F5 , .name = "F5" }, +{ .code = XKB_KEY_F6 , .name = "F6" }, +{ .code = XKB_KEY_F7 , .name = "F7" }, +{ .code = XKB_KEY_F8 , .name = "F8" }, +{ .code = XKB_KEY_F9 , .name = "F9" }, +{ .code = XKB_KEY_F10 , .name = "F10" }, +{ .code = XKB_KEY_F11 , .name = "F11" }, +{ .code = XKB_KEY_L1 , .name = "L1" }, +{ .code = XKB_KEY_F12 , .name = "F12" }, +{ .code = XKB_KEY_L2 , .name = "L2" }, +{ .code = XKB_KEY_F13 , .name = "F13" }, +{ .code = XKB_KEY_L3 , .name = "L3" }, +{ .code = XKB_KEY_F14 , .name = "F14" }, +{ .code = XKB_KEY_L4 , .name = "L4" }, +{ .code = XKB_KEY_F15 , .name = "F15" }, +{ .code = XKB_KEY_L5 , .name = "L5" }, +{ .code = XKB_KEY_F16 , .name = "F16" }, +{ .code = XKB_KEY_L6 , .name = "L6" }, +{ .code = XKB_KEY_F17 , .name = "F17" }, +{ .code = XKB_KEY_L7 , .name = "L7" }, +{ .code = XKB_KEY_F18 , .name = "F18" }, +{ .code = XKB_KEY_L8 , .name = "L8" }, +{ .code = XKB_KEY_F19 , .name = "F19" }, +{ .code = XKB_KEY_L9 , .name = "L9" }, +{ .code = XKB_KEY_F20 , .name = "F20" }, +{ .code = XKB_KEY_L10 , .name = "L10" }, +{ .code = XKB_KEY_F21 , .name = "F21" }, +{ .code = XKB_KEY_R1 , .name = "R1" }, +{ .code = XKB_KEY_F22 , .name = "F22" }, +{ .code = XKB_KEY_R2 , .name = "R2" }, +{ .code = XKB_KEY_F23 , .name = "F23" }, +{ .code = XKB_KEY_R3 , .name = "R3" }, +{ .code = XKB_KEY_F24 , .name = "F24" }, +{ .code = XKB_KEY_R4 , .name = "R4" }, +{ .code = XKB_KEY_F25 , .name = "F25" }, +{ .code = XKB_KEY_R5 , .name = "R5" }, +{ .code = XKB_KEY_F26 , .name = "F26" }, +{ .code = XKB_KEY_R6 , .name = "R6" }, +{ .code = XKB_KEY_F27 , .name = "F27" }, +{ .code = XKB_KEY_R7 , .name = "R7" }, +{ .code = XKB_KEY_F28 , .name = "F28" }, +{ .code = XKB_KEY_R8 , .name = "R8" }, +{ .code = XKB_KEY_F29 , .name = "F29" }, +{ .code = XKB_KEY_R9 , .name = "R9" }, +{ .code = XKB_KEY_F30 , .name = "F30" }, +{ .code = XKB_KEY_R10 , .name = "R10" }, +{ .code = XKB_KEY_F31 , .name = "F31" }, +{ .code = XKB_KEY_R11 , .name = "R11" }, +{ .code = XKB_KEY_F32 , .name = "F32" }, +{ .code = XKB_KEY_R12 , .name = "R12" }, +{ .code = XKB_KEY_F33 , .name = "F33" }, +{ .code = XKB_KEY_R13 , .name = "R13" }, +{ .code = XKB_KEY_F34 , .name = "F34" }, +{ .code = XKB_KEY_R14 , .name = "R14" }, +{ .code = XKB_KEY_F35 , .name = "F35" }, +{ .code = XKB_KEY_R15 , .name = "R15" }, +{ .code = XKB_KEY_Shift_L , .name = "Shift_L" }, +{ .code = XKB_KEY_Shift_R , .name = "Shift_R" }, +{ .code = XKB_KEY_Control_L , .name = "Control_L" }, +{ .code = XKB_KEY_Control_R , .name = "Control_R" }, +{ .code = XKB_KEY_Caps_Lock , .name = "Caps_Lock" }, +{ .code = XKB_KEY_Shift_Lock , .name = "Shift_Lock" }, +{ .code = XKB_KEY_Meta_L , .name = "Meta_L" }, +{ .code = XKB_KEY_Meta_R , .name = "Meta_R" }, +{ .code = XKB_KEY_Alt_L , .name = "Alt_L" }, +{ .code = XKB_KEY_Alt_R , .name = "Alt_R" }, +{ .code = XKB_KEY_Super_L , .name = "Super_L" }, +{ .code = XKB_KEY_Super_R , .name = "Super_R" }, +{ .code = XKB_KEY_Hyper_L , .name = "Hyper_L" }, +{ .code = XKB_KEY_Hyper_R , .name = "Hyper_R" }, +{ .code = XKB_KEY_ISO_Lock , .name = "ISO_Lock" }, +{ .code = XKB_KEY_ISO_Level2_Latch, .name = "ISO_Level2_Latch" }, +{ .code = XKB_KEY_ISO_Level3_Shift, .name = "ISO_Level3_Shift" }, +{ .code = XKB_KEY_ISO_Level3_Latch, .name = "ISO_Level3_Latch" }, +{ .code = XKB_KEY_ISO_Level3_Lock , .name = "ISO_Level3_Lock" }, +{ .code = XKB_KEY_ISO_Level5_Shift, .name = "ISO_Level5_Shift" }, +{ .code = XKB_KEY_ISO_Level5_Latch, .name = "ISO_Level5_Latch" }, +{ .code = XKB_KEY_ISO_Level5_Lock , .name = "ISO_Level5_Lock" }, +{ .code = XKB_KEY_ISO_Group_Shift , .name = "ISO_Group_Shift" }, +{ .code = XKB_KEY_ISO_Group_Latch , .name = "ISO_Group_Latch" }, +{ .code = XKB_KEY_ISO_Group_Lock , .name = "ISO_Group_Lock" }, +{ .code = XKB_KEY_ISO_Next_Group , .name = "ISO_Next_Group" }, +{ .code = XKB_KEY_ISO_Next_Group_Lock, .name = "ISO_Next_Group_Lock" }, +{ .code = XKB_KEY_ISO_Prev_Group , .name = "ISO_Prev_Group" }, +{ .code = XKB_KEY_ISO_Prev_Group_Lock, .name = "ISO_Prev_Group_Lock" }, +{ .code = XKB_KEY_ISO_First_Group , .name = "ISO_First_Group" }, +{ .code = XKB_KEY_ISO_First_Group_Lock, .name = "ISO_First_Group_Lock" }, +{ .code = XKB_KEY_ISO_Last_Group , .name = "ISO_Last_Group" }, +{ .code = XKB_KEY_ISO_Last_Group_Lock, .name = "ISO_Last_Group_Lock" }, +{ .code = XKB_KEY_ISO_Left_Tab , .name = "ISO_Left_Tab" }, +{ .code = XKB_KEY_ISO_Move_Line_Up, .name = "ISO_Move_Line_Up" }, +{ .code = XKB_KEY_ISO_Move_Line_Down, .name = "ISO_Move_Line_Down" }, +{ .code = XKB_KEY_ISO_Partial_Line_Up, .name = "ISO_Partial_Line_Up" }, +{ .code = XKB_KEY_ISO_Partial_Line_Down, .name = "ISO_Partial_Line_Down" }, +{ .code = XKB_KEY_ISO_Partial_Space_Left, .name = "ISO_Partial_Space_Left" }, +{ .code = XKB_KEY_ISO_Partial_Space_Right, .name = "ISO_Partial_Space_Right" }, +{ .code = XKB_KEY_ISO_Set_Margin_Left, .name = "ISO_Set_Margin_Left" }, +{ .code = XKB_KEY_ISO_Set_Margin_Right, .name = "ISO_Set_Margin_Right" }, +{ .code = XKB_KEY_ISO_Release_Margin_Left, .name = "ISO_Release_Margin_Left" }, +{ .code = XKB_KEY_ISO_Release_Margin_Right, .name = "ISO_Release_Margin_Right" }, +{ .code = XKB_KEY_ISO_Release_Both_Margins, .name = "ISO_Release_Both_Margins" }, +{ .code = XKB_KEY_ISO_Fast_Cursor_Left, .name = "ISO_Fast_Cursor_Left" }, +{ .code = XKB_KEY_ISO_Fast_Cursor_Right, .name = "ISO_Fast_Cursor_Right" }, +{ .code = XKB_KEY_ISO_Fast_Cursor_Up, .name = "ISO_Fast_Cursor_Up" }, +{ .code = XKB_KEY_ISO_Fast_Cursor_Down, .name = "ISO_Fast_Cursor_Down" }, +{ .code = XKB_KEY_ISO_Continuous_Underline, .name = "ISO_Continuous_Underline" }, +{ .code = XKB_KEY_ISO_Discontinuous_Underline, .name = "ISO_Discontinuous_Underline" }, +{ .code = XKB_KEY_ISO_Emphasize , .name = "ISO_Emphasize" }, +{ .code = XKB_KEY_ISO_Center_Object, .name = "ISO_Center_Object" }, +{ .code = XKB_KEY_ISO_Enter , .name = "ISO_Enter" }, +{ .code = XKB_KEY_dead_grave , .name = "dead_grave" }, +{ .code = XKB_KEY_dead_acute , .name = "dead_acute" }, +{ .code = XKB_KEY_dead_circumflex , .name = "dead_circumflex" }, +{ .code = XKB_KEY_dead_tilde , .name = "dead_tilde" }, +{ .code = XKB_KEY_dead_perispomeni, .name = "dead_perispomeni" }, +{ .code = XKB_KEY_dead_macron , .name = "dead_macron" }, +{ .code = XKB_KEY_dead_breve , .name = "dead_breve" }, +{ .code = XKB_KEY_dead_abovedot , .name = "dead_abovedot" }, +{ .code = XKB_KEY_dead_diaeresis , .name = "dead_diaeresis" }, +{ .code = XKB_KEY_dead_abovering , .name = "dead_abovering" }, +{ .code = XKB_KEY_dead_doubleacute, .name = "dead_doubleacute" }, +{ .code = XKB_KEY_dead_caron , .name = "dead_caron" }, +{ .code = XKB_KEY_dead_cedilla , .name = "dead_cedilla" }, +{ .code = XKB_KEY_dead_ogonek , .name = "dead_ogonek" }, +{ .code = XKB_KEY_dead_iota , .name = "dead_iota" }, +{ .code = XKB_KEY_dead_voiced_sound, .name = "dead_voiced_sound" }, +{ .code = XKB_KEY_dead_semivoiced_sound, .name = "dead_semivoiced_sound" }, +{ .code = XKB_KEY_dead_belowdot , .name = "dead_belowdot" }, +{ .code = XKB_KEY_dead_hook , .name = "dead_hook" }, +{ .code = XKB_KEY_dead_horn , .name = "dead_horn" }, +{ .code = XKB_KEY_dead_stroke , .name = "dead_stroke" }, +{ .code = XKB_KEY_dead_abovecomma , .name = "dead_abovecomma" }, +{ .code = XKB_KEY_dead_psili , .name = "dead_psili" }, +{ .code = XKB_KEY_dead_abovereversedcomma, .name = "dead_abovereversedcomma" }, +{ .code = XKB_KEY_dead_dasia , .name = "dead_dasia" }, +{ .code = XKB_KEY_dead_doublegrave, .name = "dead_doublegrave" }, +{ .code = XKB_KEY_dead_belowring , .name = "dead_belowring" }, +{ .code = XKB_KEY_dead_belowmacron, .name = "dead_belowmacron" }, +{ .code = XKB_KEY_dead_belowcircumflex, .name = "dead_belowcircumflex" }, +{ .code = XKB_KEY_dead_belowtilde , .name = "dead_belowtilde" }, +{ .code = XKB_KEY_dead_belowbreve , .name = "dead_belowbreve" }, +{ .code = XKB_KEY_dead_belowdiaeresis, .name = "dead_belowdiaeresis" }, +{ .code = XKB_KEY_dead_invertedbreve, .name = "dead_invertedbreve" }, +{ .code = XKB_KEY_dead_belowcomma , .name = "dead_belowcomma" }, +{ .code = XKB_KEY_dead_currency , .name = "dead_currency" }, +{ .code = XKB_KEY_dead_lowline , .name = "dead_lowline" }, +{ .code = XKB_KEY_dead_aboveverticalline, .name = "dead_aboveverticalline" }, +{ .code = XKB_KEY_dead_belowverticalline, .name = "dead_belowverticalline" }, +{ .code = XKB_KEY_dead_longsolidusoverlay, .name = "dead_longsolidusoverlay" }, +{ .code = XKB_KEY_dead_a , .name = "dead_a" }, +{ .code = XKB_KEY_dead_A , .name = "dead_A" }, +{ .code = XKB_KEY_dead_e , .name = "dead_e" }, +{ .code = XKB_KEY_dead_E , .name = "dead_E" }, +{ .code = XKB_KEY_dead_i , .name = "dead_i" }, +{ .code = XKB_KEY_dead_I , .name = "dead_I" }, +{ .code = XKB_KEY_dead_o , .name = "dead_o" }, +{ .code = XKB_KEY_dead_O , .name = "dead_O" }, +{ .code = XKB_KEY_dead_u , .name = "dead_u" }, +{ .code = XKB_KEY_dead_U , .name = "dead_U" }, +{ .code = XKB_KEY_dead_small_schwa, .name = "dead_small_schwa" }, +{ .code = XKB_KEY_dead_capital_schwa, .name = "dead_capital_schwa" }, +{ .code = XKB_KEY_dead_greek , .name = "dead_greek" }, +{ .code = XKB_KEY_First_Virtual_Screen, .name = "First_Virtual_Screen" }, +{ .code = XKB_KEY_Prev_Virtual_Screen, .name = "Prev_Virtual_Screen" }, +{ .code = XKB_KEY_Next_Virtual_Screen, .name = "Next_Virtual_Screen" }, +{ .code = XKB_KEY_Last_Virtual_Screen, .name = "Last_Virtual_Screen" }, +{ .code = XKB_KEY_Terminate_Server, .name = "Terminate_Server" }, +{ .code = XKB_KEY_AccessX_Enable , .name = "AccessX_Enable" }, +{ .code = XKB_KEY_AccessX_Feedback_Enable, .name = "AccessX_Feedback_Enable" }, +{ .code = XKB_KEY_RepeatKeys_Enable, .name = "RepeatKeys_Enable" }, +{ .code = XKB_KEY_SlowKeys_Enable , .name = "SlowKeys_Enable" }, +{ .code = XKB_KEY_BounceKeys_Enable, .name = "BounceKeys_Enable" }, +{ .code = XKB_KEY_StickyKeys_Enable, .name = "StickyKeys_Enable" }, +{ .code = XKB_KEY_MouseKeys_Enable, .name = "MouseKeys_Enable" }, +{ .code = XKB_KEY_MouseKeys_Accel_Enable, .name = "MouseKeys_Accel_Enable" }, +{ .code = XKB_KEY_Overlay1_Enable , .name = "Overlay1_Enable" }, +{ .code = XKB_KEY_Overlay2_Enable , .name = "Overlay2_Enable" }, +{ .code = XKB_KEY_AudibleBell_Enable, .name = "AudibleBell_Enable" }, +{ .code = XKB_KEY_Pointer_Left , .name = "Pointer_Left" }, +{ .code = XKB_KEY_Pointer_Right , .name = "Pointer_Right" }, +{ .code = XKB_KEY_Pointer_Up , .name = "Pointer_Up" }, +{ .code = XKB_KEY_Pointer_Down , .name = "Pointer_Down" }, +{ .code = XKB_KEY_Pointer_UpLeft , .name = "Pointer_UpLeft" }, +{ .code = XKB_KEY_Pointer_UpRight , .name = "Pointer_UpRight" }, +{ .code = XKB_KEY_Pointer_DownLeft, .name = "Pointer_DownLeft" }, +{ .code = XKB_KEY_Pointer_DownRight, .name = "Pointer_DownRight" }, +{ .code = XKB_KEY_Pointer_Button_Dflt, .name = "Pointer_Button_Dflt" }, +{ .code = XKB_KEY_Pointer_Button1 , .name = "Pointer_Button1" }, +{ .code = XKB_KEY_Pointer_Button2 , .name = "Pointer_Button2" }, +{ .code = XKB_KEY_Pointer_Button3 , .name = "Pointer_Button3" }, +{ .code = XKB_KEY_Pointer_Button4 , .name = "Pointer_Button4" }, +{ .code = XKB_KEY_Pointer_Button5 , .name = "Pointer_Button5" }, +{ .code = XKB_KEY_Pointer_DblClick_Dflt, .name = "Pointer_DblClick_Dflt" }, +{ .code = XKB_KEY_Pointer_DblClick1, .name = "Pointer_DblClick1" }, +{ .code = XKB_KEY_Pointer_DblClick2, .name = "Pointer_DblClick2" }, +{ .code = XKB_KEY_Pointer_DblClick3, .name = "Pointer_DblClick3" }, +{ .code = XKB_KEY_Pointer_DblClick4, .name = "Pointer_DblClick4" }, +{ .code = XKB_KEY_Pointer_DblClick5, .name = "Pointer_DblClick5" }, +{ .code = XKB_KEY_Pointer_Drag_Dflt, .name = "Pointer_Drag_Dflt" }, +{ .code = XKB_KEY_Pointer_Drag1 , .name = "Pointer_Drag1" }, +{ .code = XKB_KEY_Pointer_Drag2 , .name = "Pointer_Drag2" }, +{ .code = XKB_KEY_Pointer_Drag3 , .name = "Pointer_Drag3" }, +{ .code = XKB_KEY_Pointer_Drag4 , .name = "Pointer_Drag4" }, +{ .code = XKB_KEY_Pointer_Drag5 , .name = "Pointer_Drag5" }, +{ .code = XKB_KEY_Pointer_EnableKeys, .name = "Pointer_EnableKeys" }, +{ .code = XKB_KEY_Pointer_Accelerate, .name = "Pointer_Accelerate" }, +{ .code = XKB_KEY_Pointer_DfltBtnNext, .name = "Pointer_DfltBtnNext" }, +{ .code = XKB_KEY_Pointer_DfltBtnPrev, .name = "Pointer_DfltBtnPrev" }, +{ .code = XKB_KEY_ch , .name = "ch" }, +{ .code = XKB_KEY_Ch , .name = "Ch" }, +{ .code = XKB_KEY_CH , .name = "CH" }, +{ .code = XKB_KEY_c_h , .name = "c_h" }, +{ .code = XKB_KEY_C_h , .name = "C_h" }, +{ .code = XKB_KEY_C_H , .name = "C_H" }, +{ .code = XKB_KEY_3270_Duplicate , .name = "3270_Duplicate" }, +{ .code = XKB_KEY_3270_FieldMark , .name = "3270_FieldMark" }, +{ .code = XKB_KEY_3270_Right2 , .name = "3270_Right2" }, +{ .code = XKB_KEY_3270_Left2 , .name = "3270_Left2" }, +{ .code = XKB_KEY_3270_BackTab , .name = "3270_BackTab" }, +{ .code = XKB_KEY_3270_EraseEOF , .name = "3270_EraseEOF" }, +{ .code = XKB_KEY_3270_EraseInput , .name = "3270_EraseInput" }, +{ .code = XKB_KEY_3270_Reset , .name = "3270_Reset" }, +{ .code = XKB_KEY_3270_Quit , .name = "3270_Quit" }, +{ .code = XKB_KEY_3270_PA1 , .name = "3270_PA1" }, +{ .code = XKB_KEY_3270_PA2 , .name = "3270_PA2" }, +{ .code = XKB_KEY_3270_PA3 , .name = "3270_PA3" }, +{ .code = XKB_KEY_3270_Test , .name = "3270_Test" }, +{ .code = XKB_KEY_3270_Attn , .name = "3270_Attn" }, +{ .code = XKB_KEY_3270_CursorBlink, .name = "3270_CursorBlink" }, +{ .code = XKB_KEY_3270_AltCursor , .name = "3270_AltCursor" }, +{ .code = XKB_KEY_3270_KeyClick , .name = "3270_KeyClick" }, +{ .code = XKB_KEY_3270_Jump , .name = "3270_Jump" }, +{ .code = XKB_KEY_3270_Ident , .name = "3270_Ident" }, +{ .code = XKB_KEY_3270_Rule , .name = "3270_Rule" }, +{ .code = XKB_KEY_3270_Copy , .name = "3270_Copy" }, +{ .code = XKB_KEY_3270_Play , .name = "3270_Play" }, +{ .code = XKB_KEY_3270_Setup , .name = "3270_Setup" }, +{ .code = XKB_KEY_3270_Record , .name = "3270_Record" }, +{ .code = XKB_KEY_3270_ChangeScreen, .name = "3270_ChangeScreen" }, +{ .code = XKB_KEY_3270_DeleteWord , .name = "3270_DeleteWord" }, +{ .code = XKB_KEY_3270_ExSelect , .name = "3270_ExSelect" }, +{ .code = XKB_KEY_3270_CursorSelect, .name = "3270_CursorSelect" }, +{ .code = XKB_KEY_3270_PrintScreen, .name = "3270_PrintScreen" }, +{ .code = XKB_KEY_3270_Enter , .name = "3270_Enter" }, +{ .code = XKB_KEY_space , .name = "space" }, +{ .code = XKB_KEY_exclam , .name = "exclam" }, +{ .code = XKB_KEY_quotedbl , .name = "quotedbl" }, +{ .code = XKB_KEY_numbersign , .name = "numbersign" }, +{ .code = XKB_KEY_dollar , .name = "dollar" }, +{ .code = XKB_KEY_percent , .name = "percent" }, +{ .code = XKB_KEY_ampersand , .name = "ampersand" }, +{ .code = XKB_KEY_apostrophe , .name = "apostrophe" }, +{ .code = XKB_KEY_quoteright , .name = "quoteright" }, +{ .code = XKB_KEY_parenleft , .name = "parenleft" }, +{ .code = XKB_KEY_parenright , .name = "parenright" }, +{ .code = XKB_KEY_asterisk , .name = "asterisk" }, +{ .code = XKB_KEY_plus , .name = "plus" }, +{ .code = XKB_KEY_comma , .name = "comma" }, +{ .code = XKB_KEY_minus , .name = "minus" }, +{ .code = XKB_KEY_period , .name = "period" }, +{ .code = XKB_KEY_slash , .name = "slash" }, +{ .code = XKB_KEY_0 , .name = "0" }, +{ .code = XKB_KEY_1 , .name = "1" }, +{ .code = XKB_KEY_2 , .name = "2" }, +{ .code = XKB_KEY_3 , .name = "3" }, +{ .code = XKB_KEY_4 , .name = "4" }, +{ .code = XKB_KEY_5 , .name = "5" }, +{ .code = XKB_KEY_6 , .name = "6" }, +{ .code = XKB_KEY_7 , .name = "7" }, +{ .code = XKB_KEY_8 , .name = "8" }, +{ .code = XKB_KEY_9 , .name = "9" }, +{ .code = XKB_KEY_colon , .name = "colon" }, +{ .code = XKB_KEY_semicolon , .name = "semicolon" }, +{ .code = XKB_KEY_less , .name = "less" }, +{ .code = XKB_KEY_equal , .name = "equal" }, +{ .code = XKB_KEY_greater , .name = "greater" }, +{ .code = XKB_KEY_question , .name = "question" }, +{ .code = XKB_KEY_at , .name = "at" }, +{ .code = XKB_KEY_A , .name = "A" }, +{ .code = XKB_KEY_B , .name = "B" }, +{ .code = XKB_KEY_C , .name = "C" }, +{ .code = XKB_KEY_D , .name = "D" }, +{ .code = XKB_KEY_E , .name = "E" }, +{ .code = XKB_KEY_F , .name = "F" }, +{ .code = XKB_KEY_G , .name = "G" }, +{ .code = XKB_KEY_H , .name = "H" }, +{ .code = XKB_KEY_I , .name = "I" }, +{ .code = XKB_KEY_J , .name = "J" }, +{ .code = XKB_KEY_K , .name = "K" }, +{ .code = XKB_KEY_L , .name = "L" }, +{ .code = XKB_KEY_M , .name = "M" }, +{ .code = XKB_KEY_N , .name = "N" }, +{ .code = XKB_KEY_O , .name = "O" }, +{ .code = XKB_KEY_P , .name = "P" }, +{ .code = XKB_KEY_Q , .name = "Q" }, +{ .code = XKB_KEY_R , .name = "R" }, +{ .code = XKB_KEY_S , .name = "S" }, +{ .code = XKB_KEY_T , .name = "T" }, +{ .code = XKB_KEY_U , .name = "U" }, +{ .code = XKB_KEY_V , .name = "V" }, +{ .code = XKB_KEY_W , .name = "W" }, +{ .code = XKB_KEY_X , .name = "X" }, +{ .code = XKB_KEY_Y , .name = "Y" }, +{ .code = XKB_KEY_Z , .name = "Z" }, +{ .code = XKB_KEY_bracketleft , .name = "bracketleft" }, +{ .code = XKB_KEY_backslash , .name = "backslash" }, +{ .code = XKB_KEY_bracketright , .name = "bracketright" }, +{ .code = XKB_KEY_asciicircum , .name = "asciicircum" }, +{ .code = XKB_KEY_underscore , .name = "underscore" }, +{ .code = XKB_KEY_grave , .name = "grave" }, +{ .code = XKB_KEY_quoteleft , .name = "quoteleft" }, +{ .code = XKB_KEY_a , .name = "a" }, +{ .code = XKB_KEY_b , .name = "b" }, +{ .code = XKB_KEY_c , .name = "c" }, +{ .code = XKB_KEY_d , .name = "d" }, +{ .code = XKB_KEY_e , .name = "e" }, +{ .code = XKB_KEY_f , .name = "f" }, +{ .code = XKB_KEY_g , .name = "g" }, +{ .code = XKB_KEY_h , .name = "h" }, +{ .code = XKB_KEY_i , .name = "i" }, +{ .code = XKB_KEY_j , .name = "j" }, +{ .code = XKB_KEY_k , .name = "k" }, +{ .code = XKB_KEY_l , .name = "l" }, +{ .code = XKB_KEY_m , .name = "m" }, +{ .code = XKB_KEY_n , .name = "n" }, +{ .code = XKB_KEY_o , .name = "o" }, +{ .code = XKB_KEY_p , .name = "p" }, +{ .code = XKB_KEY_q , .name = "q" }, +{ .code = XKB_KEY_r , .name = "r" }, +{ .code = XKB_KEY_s , .name = "s" }, +{ .code = XKB_KEY_t , .name = "t" }, +{ .code = XKB_KEY_u , .name = "u" }, +{ .code = XKB_KEY_v , .name = "v" }, +{ .code = XKB_KEY_w , .name = "w" }, +{ .code = XKB_KEY_x , .name = "x" }, +{ .code = XKB_KEY_y , .name = "y" }, +{ .code = XKB_KEY_z , .name = "z" }, +{ .code = XKB_KEY_braceleft , .name = "braceleft" }, +{ .code = XKB_KEY_bar , .name = "bar" }, +{ .code = XKB_KEY_braceright , .name = "braceright" }, +{ .code = XKB_KEY_asciitilde , .name = "asciitilde" }, +{ .code = XKB_KEY_nobreakspace , .name = "nobreakspace" }, +{ .code = XKB_KEY_exclamdown , .name = "exclamdown" }, +{ .code = XKB_KEY_cent , .name = "cent" }, +{ .code = XKB_KEY_sterling , .name = "sterling" }, +{ .code = XKB_KEY_currency , .name = "currency" }, +{ .code = XKB_KEY_yen , .name = "yen" }, +{ .code = XKB_KEY_brokenbar , .name = "brokenbar" }, +{ .code = XKB_KEY_section , .name = "section" }, +{ .code = XKB_KEY_diaeresis , .name = "diaeresis" }, +{ .code = XKB_KEY_copyright , .name = "copyright" }, +{ .code = XKB_KEY_ordfeminine , .name = "ordfeminine" }, +{ .code = XKB_KEY_guillemotleft , .name = "guillemotleft" }, +{ .code = XKB_KEY_notsign , .name = "notsign" }, +{ .code = XKB_KEY_hyphen , .name = "hyphen" }, +{ .code = XKB_KEY_registered , .name = "registered" }, +{ .code = XKB_KEY_macron , .name = "macron" }, +{ .code = XKB_KEY_degree , .name = "degree" }, +{ .code = XKB_KEY_plusminus , .name = "plusminus" }, +{ .code = XKB_KEY_twosuperior , .name = "twosuperior" }, +{ .code = XKB_KEY_threesuperior , .name = "threesuperior" }, +{ .code = XKB_KEY_acute , .name = "acute" }, +{ .code = XKB_KEY_mu , .name = "mu" }, +{ .code = XKB_KEY_paragraph , .name = "paragraph" }, +{ .code = XKB_KEY_periodcentered , .name = "periodcentered" }, +{ .code = XKB_KEY_cedilla , .name = "cedilla" }, +{ .code = XKB_KEY_onesuperior , .name = "onesuperior" }, +{ .code = XKB_KEY_masculine , .name = "masculine" }, +{ .code = XKB_KEY_guillemotright , .name = "guillemotright" }, +{ .code = XKB_KEY_onequarter , .name = "onequarter" }, +{ .code = XKB_KEY_onehalf , .name = "onehalf" }, +{ .code = XKB_KEY_threequarters , .name = "threequarters" }, +{ .code = XKB_KEY_questiondown , .name = "questiondown" }, +{ .code = XKB_KEY_Agrave , .name = "Agrave" }, +{ .code = XKB_KEY_Aacute , .name = "Aacute" }, +{ .code = XKB_KEY_Acircumflex , .name = "Acircumflex" }, +{ .code = XKB_KEY_Atilde , .name = "Atilde" }, +{ .code = XKB_KEY_Adiaeresis , .name = "Adiaeresis" }, +{ .code = XKB_KEY_Aring , .name = "Aring" }, +{ .code = XKB_KEY_AE , .name = "AE" }, +{ .code = XKB_KEY_Ccedilla , .name = "Ccedilla" }, +{ .code = XKB_KEY_Egrave , .name = "Egrave" }, +{ .code = XKB_KEY_Eacute , .name = "Eacute" }, +{ .code = XKB_KEY_Ecircumflex , .name = "Ecircumflex" }, +{ .code = XKB_KEY_Ediaeresis , .name = "Ediaeresis" }, +{ .code = XKB_KEY_Igrave , .name = "Igrave" }, +{ .code = XKB_KEY_Iacute , .name = "Iacute" }, +{ .code = XKB_KEY_Icircumflex , .name = "Icircumflex" }, +{ .code = XKB_KEY_Idiaeresis , .name = "Idiaeresis" }, +{ .code = XKB_KEY_ETH , .name = "ETH" }, +{ .code = XKB_KEY_Eth , .name = "Eth" }, +{ .code = XKB_KEY_Ntilde , .name = "Ntilde" }, +{ .code = XKB_KEY_Ograve , .name = "Ograve" }, +{ .code = XKB_KEY_Oacute , .name = "Oacute" }, +{ .code = XKB_KEY_Ocircumflex , .name = "Ocircumflex" }, +{ .code = XKB_KEY_Otilde , .name = "Otilde" }, +{ .code = XKB_KEY_Odiaeresis , .name = "Odiaeresis" }, +{ .code = XKB_KEY_multiply , .name = "multiply" }, +{ .code = XKB_KEY_Oslash , .name = "Oslash" }, +{ .code = XKB_KEY_Ooblique , .name = "Ooblique" }, +{ .code = XKB_KEY_Ugrave , .name = "Ugrave" }, +{ .code = XKB_KEY_Uacute , .name = "Uacute" }, +{ .code = XKB_KEY_Ucircumflex , .name = "Ucircumflex" }, +{ .code = XKB_KEY_Udiaeresis , .name = "Udiaeresis" }, +{ .code = XKB_KEY_Yacute , .name = "Yacute" }, +{ .code = XKB_KEY_THORN , .name = "THORN" }, +{ .code = XKB_KEY_Thorn , .name = "Thorn" }, +{ .code = XKB_KEY_ssharp , .name = "ssharp" }, +{ .code = XKB_KEY_agrave , .name = "agrave" }, +{ .code = XKB_KEY_aacute , .name = "aacute" }, +{ .code = XKB_KEY_acircumflex , .name = "acircumflex" }, +{ .code = XKB_KEY_atilde , .name = "atilde" }, +{ .code = XKB_KEY_adiaeresis , .name = "adiaeresis" }, +{ .code = XKB_KEY_aring , .name = "aring" }, +{ .code = XKB_KEY_ae , .name = "ae" }, +{ .code = XKB_KEY_ccedilla , .name = "ccedilla" }, +{ .code = XKB_KEY_egrave , .name = "egrave" }, +{ .code = XKB_KEY_eacute , .name = "eacute" }, +{ .code = XKB_KEY_ecircumflex , .name = "ecircumflex" }, +{ .code = XKB_KEY_ediaeresis , .name = "ediaeresis" }, +{ .code = XKB_KEY_igrave , .name = "igrave" }, +{ .code = XKB_KEY_iacute , .name = "iacute" }, +{ .code = XKB_KEY_icircumflex , .name = "icircumflex" }, +{ .code = XKB_KEY_idiaeresis , .name = "idiaeresis" }, +{ .code = XKB_KEY_eth , .name = "eth" }, +{ .code = XKB_KEY_ntilde , .name = "ntilde" }, +{ .code = XKB_KEY_ograve , .name = "ograve" }, +{ .code = XKB_KEY_oacute , .name = "oacute" }, +{ .code = XKB_KEY_ocircumflex , .name = "ocircumflex" }, +{ .code = XKB_KEY_otilde , .name = "otilde" }, +{ .code = XKB_KEY_odiaeresis , .name = "odiaeresis" }, +{ .code = XKB_KEY_division , .name = "division" }, +{ .code = XKB_KEY_oslash , .name = "oslash" }, +{ .code = XKB_KEY_ooblique , .name = "ooblique" }, +{ .code = XKB_KEY_ugrave , .name = "ugrave" }, +{ .code = XKB_KEY_uacute , .name = "uacute" }, +{ .code = XKB_KEY_ucircumflex , .name = "ucircumflex" }, +{ .code = XKB_KEY_udiaeresis , .name = "udiaeresis" }, +{ .code = XKB_KEY_yacute , .name = "yacute" }, +{ .code = XKB_KEY_thorn , .name = "thorn" }, +{ .code = XKB_KEY_ydiaeresis , .name = "ydiaeresis" }, +{ .code = XKB_KEY_Aogonek , .name = "Aogonek" }, +{ .code = XKB_KEY_breve , .name = "breve" }, +{ .code = XKB_KEY_Lstroke , .name = "Lstroke" }, +{ .code = XKB_KEY_Lcaron , .name = "Lcaron" }, +{ .code = XKB_KEY_Sacute , .name = "Sacute" }, +{ .code = XKB_KEY_Scaron , .name = "Scaron" }, +{ .code = XKB_KEY_Scedilla , .name = "Scedilla" }, +{ .code = XKB_KEY_Tcaron , .name = "Tcaron" }, +{ .code = XKB_KEY_Zacute , .name = "Zacute" }, +{ .code = XKB_KEY_Zcaron , .name = "Zcaron" }, +{ .code = XKB_KEY_Zabovedot , .name = "Zabovedot" }, +{ .code = XKB_KEY_aogonek , .name = "aogonek" }, +{ .code = XKB_KEY_ogonek , .name = "ogonek" }, +{ .code = XKB_KEY_lstroke , .name = "lstroke" }, +{ .code = XKB_KEY_lcaron , .name = "lcaron" }, +{ .code = XKB_KEY_sacute , .name = "sacute" }, +{ .code = XKB_KEY_caron , .name = "caron" }, +{ .code = XKB_KEY_scaron , .name = "scaron" }, +{ .code = XKB_KEY_scedilla , .name = "scedilla" }, +{ .code = XKB_KEY_tcaron , .name = "tcaron" }, +{ .code = XKB_KEY_zacute , .name = "zacute" }, +{ .code = XKB_KEY_doubleacute , .name = "doubleacute" }, +{ .code = XKB_KEY_zcaron , .name = "zcaron" }, +{ .code = XKB_KEY_zabovedot , .name = "zabovedot" }, +{ .code = XKB_KEY_Racute , .name = "Racute" }, +{ .code = XKB_KEY_Abreve , .name = "Abreve" }, +{ .code = XKB_KEY_Lacute , .name = "Lacute" }, +{ .code = XKB_KEY_Cacute , .name = "Cacute" }, +{ .code = XKB_KEY_Ccaron , .name = "Ccaron" }, +{ .code = XKB_KEY_Eogonek , .name = "Eogonek" }, +{ .code = XKB_KEY_Ecaron , .name = "Ecaron" }, +{ .code = XKB_KEY_Dcaron , .name = "Dcaron" }, +{ .code = XKB_KEY_Dstroke , .name = "Dstroke" }, +{ .code = XKB_KEY_Nacute , .name = "Nacute" }, +{ .code = XKB_KEY_Ncaron , .name = "Ncaron" }, +{ .code = XKB_KEY_Odoubleacute , .name = "Odoubleacute" }, +{ .code = XKB_KEY_Rcaron , .name = "Rcaron" }, +{ .code = XKB_KEY_Uring , .name = "Uring" }, +{ .code = XKB_KEY_Udoubleacute , .name = "Udoubleacute" }, +{ .code = XKB_KEY_Tcedilla , .name = "Tcedilla" }, +{ .code = XKB_KEY_racute , .name = "racute" }, +{ .code = XKB_KEY_abreve , .name = "abreve" }, +{ .code = XKB_KEY_lacute , .name = "lacute" }, +{ .code = XKB_KEY_cacute , .name = "cacute" }, +{ .code = XKB_KEY_ccaron , .name = "ccaron" }, +{ .code = XKB_KEY_eogonek , .name = "eogonek" }, +{ .code = XKB_KEY_ecaron , .name = "ecaron" }, +{ .code = XKB_KEY_dcaron , .name = "dcaron" }, +{ .code = XKB_KEY_dstroke , .name = "dstroke" }, +{ .code = XKB_KEY_nacute , .name = "nacute" }, +{ .code = XKB_KEY_ncaron , .name = "ncaron" }, +{ .code = XKB_KEY_odoubleacute , .name = "odoubleacute" }, +{ .code = XKB_KEY_rcaron , .name = "rcaron" }, +{ .code = XKB_KEY_uring , .name = "uring" }, +{ .code = XKB_KEY_udoubleacute , .name = "udoubleacute" }, +{ .code = XKB_KEY_tcedilla , .name = "tcedilla" }, +{ .code = XKB_KEY_abovedot , .name = "abovedot" }, +{ .code = XKB_KEY_Hstroke , .name = "Hstroke" }, +{ .code = XKB_KEY_Hcircumflex , .name = "Hcircumflex" }, +{ .code = XKB_KEY_Iabovedot , .name = "Iabovedot" }, +{ .code = XKB_KEY_Gbreve , .name = "Gbreve" }, +{ .code = XKB_KEY_Jcircumflex , .name = "Jcircumflex" }, +{ .code = XKB_KEY_hstroke , .name = "hstroke" }, +{ .code = XKB_KEY_hcircumflex , .name = "hcircumflex" }, +{ .code = XKB_KEY_idotless , .name = "idotless" }, +{ .code = XKB_KEY_gbreve , .name = "gbreve" }, +{ .code = XKB_KEY_jcircumflex , .name = "jcircumflex" }, +{ .code = XKB_KEY_Cabovedot , .name = "Cabovedot" }, +{ .code = XKB_KEY_Ccircumflex , .name = "Ccircumflex" }, +{ .code = XKB_KEY_Gabovedot , .name = "Gabovedot" }, +{ .code = XKB_KEY_Gcircumflex , .name = "Gcircumflex" }, +{ .code = XKB_KEY_Ubreve , .name = "Ubreve" }, +{ .code = XKB_KEY_Scircumflex , .name = "Scircumflex" }, +{ .code = XKB_KEY_cabovedot , .name = "cabovedot" }, +{ .code = XKB_KEY_ccircumflex , .name = "ccircumflex" }, +{ .code = XKB_KEY_gabovedot , .name = "gabovedot" }, +{ .code = XKB_KEY_gcircumflex , .name = "gcircumflex" }, +{ .code = XKB_KEY_ubreve , .name = "ubreve" }, +{ .code = XKB_KEY_scircumflex , .name = "scircumflex" }, +{ .code = XKB_KEY_kra , .name = "kra" }, +{ .code = XKB_KEY_kappa , .name = "kappa" }, +{ .code = XKB_KEY_Rcedilla , .name = "Rcedilla" }, +{ .code = XKB_KEY_Itilde , .name = "Itilde" }, +{ .code = XKB_KEY_Lcedilla , .name = "Lcedilla" }, +{ .code = XKB_KEY_Emacron , .name = "Emacron" }, +{ .code = XKB_KEY_Gcedilla , .name = "Gcedilla" }, +{ .code = XKB_KEY_Tslash , .name = "Tslash" }, +{ .code = XKB_KEY_rcedilla , .name = "rcedilla" }, +{ .code = XKB_KEY_itilde , .name = "itilde" }, +{ .code = XKB_KEY_lcedilla , .name = "lcedilla" }, +{ .code = XKB_KEY_emacron , .name = "emacron" }, +{ .code = XKB_KEY_gcedilla , .name = "gcedilla" }, +{ .code = XKB_KEY_tslash , .name = "tslash" }, +{ .code = XKB_KEY_ENG , .name = "ENG" }, +{ .code = XKB_KEY_eng , .name = "eng" }, +{ .code = XKB_KEY_Amacron , .name = "Amacron" }, +{ .code = XKB_KEY_Iogonek , .name = "Iogonek" }, +{ .code = XKB_KEY_Eabovedot , .name = "Eabovedot" }, +{ .code = XKB_KEY_Imacron , .name = "Imacron" }, +{ .code = XKB_KEY_Ncedilla , .name = "Ncedilla" }, +{ .code = XKB_KEY_Omacron , .name = "Omacron" }, +{ .code = XKB_KEY_Kcedilla , .name = "Kcedilla" }, +{ .code = XKB_KEY_Uogonek , .name = "Uogonek" }, +{ .code = XKB_KEY_Utilde , .name = "Utilde" }, +{ .code = XKB_KEY_Umacron , .name = "Umacron" }, +{ .code = XKB_KEY_amacron , .name = "amacron" }, +{ .code = XKB_KEY_iogonek , .name = "iogonek" }, +{ .code = XKB_KEY_eabovedot , .name = "eabovedot" }, +{ .code = XKB_KEY_imacron , .name = "imacron" }, +{ .code = XKB_KEY_ncedilla , .name = "ncedilla" }, +{ .code = XKB_KEY_omacron , .name = "omacron" }, +{ .code = XKB_KEY_kcedilla , .name = "kcedilla" }, +{ .code = XKB_KEY_uogonek , .name = "uogonek" }, +{ .code = XKB_KEY_utilde , .name = "utilde" }, +{ .code = XKB_KEY_umacron , .name = "umacron" }, +{ .code = XKB_KEY_Wcircumflex , .name = "Wcircumflex" }, +{ .code = XKB_KEY_wcircumflex , .name = "wcircumflex" }, +{ .code = XKB_KEY_Ycircumflex , .name = "Ycircumflex" }, +{ .code = XKB_KEY_ycircumflex , .name = "ycircumflex" }, +{ .code = XKB_KEY_Babovedot , .name = "Babovedot" }, +{ .code = XKB_KEY_babovedot , .name = "babovedot" }, +{ .code = XKB_KEY_Dabovedot , .name = "Dabovedot" }, +{ .code = XKB_KEY_dabovedot , .name = "dabovedot" }, +{ .code = XKB_KEY_Fabovedot , .name = "Fabovedot" }, +{ .code = XKB_KEY_fabovedot , .name = "fabovedot" }, +{ .code = XKB_KEY_Mabovedot , .name = "Mabovedot" }, +{ .code = XKB_KEY_mabovedot , .name = "mabovedot" }, +{ .code = XKB_KEY_Pabovedot , .name = "Pabovedot" }, +{ .code = XKB_KEY_pabovedot , .name = "pabovedot" }, +{ .code = XKB_KEY_Sabovedot , .name = "Sabovedot" }, +{ .code = XKB_KEY_sabovedot , .name = "sabovedot" }, +{ .code = XKB_KEY_Tabovedot , .name = "Tabovedot" }, +{ .code = XKB_KEY_tabovedot , .name = "tabovedot" }, +{ .code = XKB_KEY_Wgrave , .name = "Wgrave" }, +{ .code = XKB_KEY_wgrave , .name = "wgrave" }, +{ .code = XKB_KEY_Wacute , .name = "Wacute" }, +{ .code = XKB_KEY_wacute , .name = "wacute" }, +{ .code = XKB_KEY_Wdiaeresis , .name = "Wdiaeresis" }, +{ .code = XKB_KEY_wdiaeresis , .name = "wdiaeresis" }, +{ .code = XKB_KEY_Ygrave , .name = "Ygrave" }, +{ .code = XKB_KEY_ygrave , .name = "ygrave" }, +{ .code = XKB_KEY_OE , .name = "OE" }, +{ .code = XKB_KEY_oe , .name = "oe" }, +{ .code = XKB_KEY_Ydiaeresis , .name = "Ydiaeresis" }, +{ .code = XKB_KEY_overline , .name = "overline" }, +{ .code = XKB_KEY_kana_fullstop , .name = "kana_fullstop" }, +{ .code = XKB_KEY_kana_openingbracket, .name = "kana_openingbracket" }, +{ .code = XKB_KEY_kana_closingbracket, .name = "kana_closingbracket" }, +{ .code = XKB_KEY_kana_comma , .name = "kana_comma" }, +{ .code = XKB_KEY_kana_conjunctive, .name = "kana_conjunctive" }, +{ .code = XKB_KEY_kana_middledot , .name = "kana_middledot" }, +{ .code = XKB_KEY_kana_WO , .name = "kana_WO" }, +{ .code = XKB_KEY_kana_a , .name = "kana_a" }, +{ .code = XKB_KEY_kana_i , .name = "kana_i" }, +{ .code = XKB_KEY_kana_u , .name = "kana_u" }, +{ .code = XKB_KEY_kana_e , .name = "kana_e" }, +{ .code = XKB_KEY_kana_o , .name = "kana_o" }, +{ .code = XKB_KEY_kana_ya , .name = "kana_ya" }, +{ .code = XKB_KEY_kana_yu , .name = "kana_yu" }, +{ .code = XKB_KEY_kana_yo , .name = "kana_yo" }, +{ .code = XKB_KEY_kana_tsu , .name = "kana_tsu" }, +{ .code = XKB_KEY_kana_tu , .name = "kana_tu" }, +{ .code = XKB_KEY_prolongedsound , .name = "prolongedsound" }, +{ .code = XKB_KEY_kana_A , .name = "kana_A" }, +{ .code = XKB_KEY_kana_I , .name = "kana_I" }, +{ .code = XKB_KEY_kana_U , .name = "kana_U" }, +{ .code = XKB_KEY_kana_E , .name = "kana_E" }, +{ .code = XKB_KEY_kana_O , .name = "kana_O" }, +{ .code = XKB_KEY_kana_KA , .name = "kana_KA" }, +{ .code = XKB_KEY_kana_KI , .name = "kana_KI" }, +{ .code = XKB_KEY_kana_KU , .name = "kana_KU" }, +{ .code = XKB_KEY_kana_KE , .name = "kana_KE" }, +{ .code = XKB_KEY_kana_KO , .name = "kana_KO" }, +{ .code = XKB_KEY_kana_SA , .name = "kana_SA" }, +{ .code = XKB_KEY_kana_SHI , .name = "kana_SHI" }, +{ .code = XKB_KEY_kana_SU , .name = "kana_SU" }, +{ .code = XKB_KEY_kana_SE , .name = "kana_SE" }, +{ .code = XKB_KEY_kana_SO , .name = "kana_SO" }, +{ .code = XKB_KEY_kana_TA , .name = "kana_TA" }, +{ .code = XKB_KEY_kana_CHI , .name = "kana_CHI" }, +{ .code = XKB_KEY_kana_TI , .name = "kana_TI" }, +{ .code = XKB_KEY_kana_TSU , .name = "kana_TSU" }, +{ .code = XKB_KEY_kana_TU , .name = "kana_TU" }, +{ .code = XKB_KEY_kana_TE , .name = "kana_TE" }, +{ .code = XKB_KEY_kana_TO , .name = "kana_TO" }, +{ .code = XKB_KEY_kana_NA , .name = "kana_NA" }, +{ .code = XKB_KEY_kana_NI , .name = "kana_NI" }, +{ .code = XKB_KEY_kana_NU , .name = "kana_NU" }, +{ .code = XKB_KEY_kana_NE , .name = "kana_NE" }, +{ .code = XKB_KEY_kana_NO , .name = "kana_NO" }, +{ .code = XKB_KEY_kana_HA , .name = "kana_HA" }, +{ .code = XKB_KEY_kana_HI , .name = "kana_HI" }, +{ .code = XKB_KEY_kana_FU , .name = "kana_FU" }, +{ .code = XKB_KEY_kana_HU , .name = "kana_HU" }, +{ .code = XKB_KEY_kana_HE , .name = "kana_HE" }, +{ .code = XKB_KEY_kana_HO , .name = "kana_HO" }, +{ .code = XKB_KEY_kana_MA , .name = "kana_MA" }, +{ .code = XKB_KEY_kana_MI , .name = "kana_MI" }, +{ .code = XKB_KEY_kana_MU , .name = "kana_MU" }, +{ .code = XKB_KEY_kana_ME , .name = "kana_ME" }, +{ .code = XKB_KEY_kana_MO , .name = "kana_MO" }, +{ .code = XKB_KEY_kana_YA , .name = "kana_YA" }, +{ .code = XKB_KEY_kana_YU , .name = "kana_YU" }, +{ .code = XKB_KEY_kana_YO , .name = "kana_YO" }, +{ .code = XKB_KEY_kana_RA , .name = "kana_RA" }, +{ .code = XKB_KEY_kana_RI , .name = "kana_RI" }, +{ .code = XKB_KEY_kana_RU , .name = "kana_RU" }, +{ .code = XKB_KEY_kana_RE , .name = "kana_RE" }, +{ .code = XKB_KEY_kana_RO , .name = "kana_RO" }, +{ .code = XKB_KEY_kana_WA , .name = "kana_WA" }, +{ .code = XKB_KEY_kana_N , .name = "kana_N" }, +{ .code = XKB_KEY_voicedsound , .name = "voicedsound" }, +{ .code = XKB_KEY_semivoicedsound , .name = "semivoicedsound" }, +{ .code = XKB_KEY_kana_switch , .name = "kana_switch" }, +{ .code = XKB_KEY_Farsi_0 , .name = "Farsi_0" }, +{ .code = XKB_KEY_Farsi_1 , .name = "Farsi_1" }, +{ .code = XKB_KEY_Farsi_2 , .name = "Farsi_2" }, +{ .code = XKB_KEY_Farsi_3 , .name = "Farsi_3" }, +{ .code = XKB_KEY_Farsi_4 , .name = "Farsi_4" }, +{ .code = XKB_KEY_Farsi_5 , .name = "Farsi_5" }, +{ .code = XKB_KEY_Farsi_6 , .name = "Farsi_6" }, +{ .code = XKB_KEY_Farsi_7 , .name = "Farsi_7" }, +{ .code = XKB_KEY_Farsi_8 , .name = "Farsi_8" }, +{ .code = XKB_KEY_Farsi_9 , .name = "Farsi_9" }, +{ .code = XKB_KEY_Arabic_percent , .name = "Arabic_percent" }, +{ .code = XKB_KEY_Arabic_superscript_alef, .name = "Arabic_superscript_alef" }, +{ .code = XKB_KEY_Arabic_tteh , .name = "Arabic_tteh" }, +{ .code = XKB_KEY_Arabic_peh , .name = "Arabic_peh" }, +{ .code = XKB_KEY_Arabic_tcheh , .name = "Arabic_tcheh" }, +{ .code = XKB_KEY_Arabic_ddal , .name = "Arabic_ddal" }, +{ .code = XKB_KEY_Arabic_rreh , .name = "Arabic_rreh" }, +{ .code = XKB_KEY_Arabic_comma , .name = "Arabic_comma" }, +{ .code = XKB_KEY_Arabic_fullstop , .name = "Arabic_fullstop" }, +{ .code = XKB_KEY_Arabic_0 , .name = "Arabic_0" }, +{ .code = XKB_KEY_Arabic_1 , .name = "Arabic_1" }, +{ .code = XKB_KEY_Arabic_2 , .name = "Arabic_2" }, +{ .code = XKB_KEY_Arabic_3 , .name = "Arabic_3" }, +{ .code = XKB_KEY_Arabic_4 , .name = "Arabic_4" }, +{ .code = XKB_KEY_Arabic_5 , .name = "Arabic_5" }, +{ .code = XKB_KEY_Arabic_6 , .name = "Arabic_6" }, +{ .code = XKB_KEY_Arabic_7 , .name = "Arabic_7" }, +{ .code = XKB_KEY_Arabic_8 , .name = "Arabic_8" }, +{ .code = XKB_KEY_Arabic_9 , .name = "Arabic_9" }, +{ .code = XKB_KEY_Arabic_semicolon, .name = "Arabic_semicolon" }, +{ .code = XKB_KEY_Arabic_question_mark, .name = "Arabic_question_mark" }, +{ .code = XKB_KEY_Arabic_hamza , .name = "Arabic_hamza" }, +{ .code = XKB_KEY_Arabic_maddaonalef, .name = "Arabic_maddaonalef" }, +{ .code = XKB_KEY_Arabic_hamzaonalef, .name = "Arabic_hamzaonalef" }, +{ .code = XKB_KEY_Arabic_hamzaonwaw, .name = "Arabic_hamzaonwaw" }, +{ .code = XKB_KEY_Arabic_hamzaunderalef, .name = "Arabic_hamzaunderalef" }, +{ .code = XKB_KEY_Arabic_hamzaonyeh, .name = "Arabic_hamzaonyeh" }, +{ .code = XKB_KEY_Arabic_alef , .name = "Arabic_alef" }, +{ .code = XKB_KEY_Arabic_beh , .name = "Arabic_beh" }, +{ .code = XKB_KEY_Arabic_tehmarbuta, .name = "Arabic_tehmarbuta" }, +{ .code = XKB_KEY_Arabic_teh , .name = "Arabic_teh" }, +{ .code = XKB_KEY_Arabic_theh , .name = "Arabic_theh" }, +{ .code = XKB_KEY_Arabic_jeem , .name = "Arabic_jeem" }, +{ .code = XKB_KEY_Arabic_hah , .name = "Arabic_hah" }, +{ .code = XKB_KEY_Arabic_khah , .name = "Arabic_khah" }, +{ .code = XKB_KEY_Arabic_dal , .name = "Arabic_dal" }, +{ .code = XKB_KEY_Arabic_thal , .name = "Arabic_thal" }, +{ .code = XKB_KEY_Arabic_ra , .name = "Arabic_ra" }, +{ .code = XKB_KEY_Arabic_zain , .name = "Arabic_zain" }, +{ .code = XKB_KEY_Arabic_seen , .name = "Arabic_seen" }, +{ .code = XKB_KEY_Arabic_sheen , .name = "Arabic_sheen" }, +{ .code = XKB_KEY_Arabic_sad , .name = "Arabic_sad" }, +{ .code = XKB_KEY_Arabic_dad , .name = "Arabic_dad" }, +{ .code = XKB_KEY_Arabic_tah , .name = "Arabic_tah" }, +{ .code = XKB_KEY_Arabic_zah , .name = "Arabic_zah" }, +{ .code = XKB_KEY_Arabic_ain , .name = "Arabic_ain" }, +{ .code = XKB_KEY_Arabic_ghain , .name = "Arabic_ghain" }, +{ .code = XKB_KEY_Arabic_tatweel , .name = "Arabic_tatweel" }, +{ .code = XKB_KEY_Arabic_feh , .name = "Arabic_feh" }, +{ .code = XKB_KEY_Arabic_qaf , .name = "Arabic_qaf" }, +{ .code = XKB_KEY_Arabic_kaf , .name = "Arabic_kaf" }, +{ .code = XKB_KEY_Arabic_lam , .name = "Arabic_lam" }, +{ .code = XKB_KEY_Arabic_meem , .name = "Arabic_meem" }, +{ .code = XKB_KEY_Arabic_noon , .name = "Arabic_noon" }, +{ .code = XKB_KEY_Arabic_ha , .name = "Arabic_ha" }, +{ .code = XKB_KEY_Arabic_heh , .name = "Arabic_heh" }, +{ .code = XKB_KEY_Arabic_waw , .name = "Arabic_waw" }, +{ .code = XKB_KEY_Arabic_alefmaksura, .name = "Arabic_alefmaksura" }, +{ .code = XKB_KEY_Arabic_yeh , .name = "Arabic_yeh" }, +{ .code = XKB_KEY_Arabic_fathatan , .name = "Arabic_fathatan" }, +{ .code = XKB_KEY_Arabic_dammatan , .name = "Arabic_dammatan" }, +{ .code = XKB_KEY_Arabic_kasratan , .name = "Arabic_kasratan" }, +{ .code = XKB_KEY_Arabic_fatha , .name = "Arabic_fatha" }, +{ .code = XKB_KEY_Arabic_damma , .name = "Arabic_damma" }, +{ .code = XKB_KEY_Arabic_kasra , .name = "Arabic_kasra" }, +{ .code = XKB_KEY_Arabic_shadda , .name = "Arabic_shadda" }, +{ .code = XKB_KEY_Arabic_sukun , .name = "Arabic_sukun" }, +{ .code = XKB_KEY_Arabic_madda_above, .name = "Arabic_madda_above" }, +{ .code = XKB_KEY_Arabic_hamza_above, .name = "Arabic_hamza_above" }, +{ .code = XKB_KEY_Arabic_hamza_below, .name = "Arabic_hamza_below" }, +{ .code = XKB_KEY_Arabic_jeh , .name = "Arabic_jeh" }, +{ .code = XKB_KEY_Arabic_veh , .name = "Arabic_veh" }, +{ .code = XKB_KEY_Arabic_keheh , .name = "Arabic_keheh" }, +{ .code = XKB_KEY_Arabic_gaf , .name = "Arabic_gaf" }, +{ .code = XKB_KEY_Arabic_noon_ghunna, .name = "Arabic_noon_ghunna" }, +{ .code = XKB_KEY_Arabic_heh_doachashmee, .name = "Arabic_heh_doachashmee" }, +{ .code = XKB_KEY_Farsi_yeh , .name = "Farsi_yeh" }, +{ .code = XKB_KEY_Arabic_farsi_yeh, .name = "Arabic_farsi_yeh" }, +{ .code = XKB_KEY_Arabic_yeh_baree, .name = "Arabic_yeh_baree" }, +{ .code = XKB_KEY_Arabic_heh_goal , .name = "Arabic_heh_goal" }, +{ .code = XKB_KEY_Arabic_switch , .name = "Arabic_switch" }, +{ .code = XKB_KEY_Cyrillic_GHE_bar, .name = "Cyrillic_GHE_bar" }, +{ .code = XKB_KEY_Cyrillic_ghe_bar, .name = "Cyrillic_ghe_bar" }, +{ .code = XKB_KEY_Cyrillic_ZHE_descender, .name = "Cyrillic_ZHE_descender" }, +{ .code = XKB_KEY_Cyrillic_zhe_descender, .name = "Cyrillic_zhe_descender" }, +{ .code = XKB_KEY_Cyrillic_KA_descender, .name = "Cyrillic_KA_descender" }, +{ .code = XKB_KEY_Cyrillic_ka_descender, .name = "Cyrillic_ka_descender" }, +{ .code = XKB_KEY_Cyrillic_KA_vertstroke, .name = "Cyrillic_KA_vertstroke" }, +{ .code = XKB_KEY_Cyrillic_ka_vertstroke, .name = "Cyrillic_ka_vertstroke" }, +{ .code = XKB_KEY_Cyrillic_EN_descender, .name = "Cyrillic_EN_descender" }, +{ .code = XKB_KEY_Cyrillic_en_descender, .name = "Cyrillic_en_descender" }, +{ .code = XKB_KEY_Cyrillic_U_straight, .name = "Cyrillic_U_straight" }, +{ .code = XKB_KEY_Cyrillic_u_straight, .name = "Cyrillic_u_straight" }, +{ .code = XKB_KEY_Cyrillic_U_straight_bar, .name = "Cyrillic_U_straight_bar" }, +{ .code = XKB_KEY_Cyrillic_u_straight_bar, .name = "Cyrillic_u_straight_bar" }, +{ .code = XKB_KEY_Cyrillic_HA_descender, .name = "Cyrillic_HA_descender" }, +{ .code = XKB_KEY_Cyrillic_ha_descender, .name = "Cyrillic_ha_descender" }, +{ .code = XKB_KEY_Cyrillic_CHE_descender, .name = "Cyrillic_CHE_descender" }, +{ .code = XKB_KEY_Cyrillic_che_descender, .name = "Cyrillic_che_descender" }, +{ .code = XKB_KEY_Cyrillic_CHE_vertstroke, .name = "Cyrillic_CHE_vertstroke" }, +{ .code = XKB_KEY_Cyrillic_che_vertstroke, .name = "Cyrillic_che_vertstroke" }, +{ .code = XKB_KEY_Cyrillic_SHHA , .name = "Cyrillic_SHHA" }, +{ .code = XKB_KEY_Cyrillic_shha , .name = "Cyrillic_shha" }, +{ .code = XKB_KEY_Cyrillic_SCHWA , .name = "Cyrillic_SCHWA" }, +{ .code = XKB_KEY_Cyrillic_schwa , .name = "Cyrillic_schwa" }, +{ .code = XKB_KEY_Cyrillic_I_macron, .name = "Cyrillic_I_macron" }, +{ .code = XKB_KEY_Cyrillic_i_macron, .name = "Cyrillic_i_macron" }, +{ .code = XKB_KEY_Cyrillic_O_bar , .name = "Cyrillic_O_bar" }, +{ .code = XKB_KEY_Cyrillic_o_bar , .name = "Cyrillic_o_bar" }, +{ .code = XKB_KEY_Cyrillic_U_macron, .name = "Cyrillic_U_macron" }, +{ .code = XKB_KEY_Cyrillic_u_macron, .name = "Cyrillic_u_macron" }, +{ .code = XKB_KEY_Serbian_dje , .name = "Serbian_dje" }, +{ .code = XKB_KEY_Macedonia_gje , .name = "Macedonia_gje" }, +{ .code = XKB_KEY_Cyrillic_io , .name = "Cyrillic_io" }, +{ .code = XKB_KEY_Ukrainian_ie , .name = "Ukrainian_ie" }, +{ .code = XKB_KEY_Ukranian_je , .name = "Ukranian_je" }, +{ .code = XKB_KEY_Macedonia_dse , .name = "Macedonia_dse" }, +{ .code = XKB_KEY_Ukrainian_i , .name = "Ukrainian_i" }, +{ .code = XKB_KEY_Ukranian_i , .name = "Ukranian_i" }, +{ .code = XKB_KEY_Ukrainian_yi , .name = "Ukrainian_yi" }, +{ .code = XKB_KEY_Ukranian_yi , .name = "Ukranian_yi" }, +{ .code = XKB_KEY_Cyrillic_je , .name = "Cyrillic_je" }, +{ .code = XKB_KEY_Serbian_je , .name = "Serbian_je" }, +{ .code = XKB_KEY_Cyrillic_lje , .name = "Cyrillic_lje" }, +{ .code = XKB_KEY_Serbian_lje , .name = "Serbian_lje" }, +{ .code = XKB_KEY_Cyrillic_nje , .name = "Cyrillic_nje" }, +{ .code = XKB_KEY_Serbian_nje , .name = "Serbian_nje" }, +{ .code = XKB_KEY_Serbian_tshe , .name = "Serbian_tshe" }, +{ .code = XKB_KEY_Macedonia_kje , .name = "Macedonia_kje" }, +{ .code = XKB_KEY_Ukrainian_ghe_with_upturn, .name = "Ukrainian_ghe_with_upturn" }, +{ .code = XKB_KEY_Byelorussian_shortu, .name = "Byelorussian_shortu" }, +{ .code = XKB_KEY_Cyrillic_dzhe , .name = "Cyrillic_dzhe" }, +{ .code = XKB_KEY_Serbian_dze , .name = "Serbian_dze" }, +{ .code = XKB_KEY_numerosign , .name = "numerosign" }, +{ .code = XKB_KEY_Serbian_DJE , .name = "Serbian_DJE" }, +{ .code = XKB_KEY_Macedonia_GJE , .name = "Macedonia_GJE" }, +{ .code = XKB_KEY_Cyrillic_IO , .name = "Cyrillic_IO" }, +{ .code = XKB_KEY_Ukrainian_IE , .name = "Ukrainian_IE" }, +{ .code = XKB_KEY_Ukranian_JE , .name = "Ukranian_JE" }, +{ .code = XKB_KEY_Macedonia_DSE , .name = "Macedonia_DSE" }, +{ .code = XKB_KEY_Ukrainian_I , .name = "Ukrainian_I" }, +{ .code = XKB_KEY_Ukranian_I , .name = "Ukranian_I" }, +{ .code = XKB_KEY_Ukrainian_YI , .name = "Ukrainian_YI" }, +{ .code = XKB_KEY_Ukranian_YI , .name = "Ukranian_YI" }, +{ .code = XKB_KEY_Cyrillic_JE , .name = "Cyrillic_JE" }, +{ .code = XKB_KEY_Serbian_JE , .name = "Serbian_JE" }, +{ .code = XKB_KEY_Cyrillic_LJE , .name = "Cyrillic_LJE" }, +{ .code = XKB_KEY_Serbian_LJE , .name = "Serbian_LJE" }, +{ .code = XKB_KEY_Cyrillic_NJE , .name = "Cyrillic_NJE" }, +{ .code = XKB_KEY_Serbian_NJE , .name = "Serbian_NJE" }, +{ .code = XKB_KEY_Serbian_TSHE , .name = "Serbian_TSHE" }, +{ .code = XKB_KEY_Macedonia_KJE , .name = "Macedonia_KJE" }, +{ .code = XKB_KEY_Ukrainian_GHE_WITH_UPTURN, .name = "Ukrainian_GHE_WITH_UPTURN" }, +{ .code = XKB_KEY_Byelorussian_SHORTU, .name = "Byelorussian_SHORTU" }, +{ .code = XKB_KEY_Cyrillic_DZHE , .name = "Cyrillic_DZHE" }, +{ .code = XKB_KEY_Serbian_DZE , .name = "Serbian_DZE" }, +{ .code = XKB_KEY_Cyrillic_yu , .name = "Cyrillic_yu" }, +{ .code = XKB_KEY_Cyrillic_a , .name = "Cyrillic_a" }, +{ .code = XKB_KEY_Cyrillic_be , .name = "Cyrillic_be" }, +{ .code = XKB_KEY_Cyrillic_tse , .name = "Cyrillic_tse" }, +{ .code = XKB_KEY_Cyrillic_de , .name = "Cyrillic_de" }, +{ .code = XKB_KEY_Cyrillic_ie , .name = "Cyrillic_ie" }, +{ .code = XKB_KEY_Cyrillic_ef , .name = "Cyrillic_ef" }, +{ .code = XKB_KEY_Cyrillic_ghe , .name = "Cyrillic_ghe" }, +{ .code = XKB_KEY_Cyrillic_ha , .name = "Cyrillic_ha" }, +{ .code = XKB_KEY_Cyrillic_i , .name = "Cyrillic_i" }, +{ .code = XKB_KEY_Cyrillic_shorti , .name = "Cyrillic_shorti" }, +{ .code = XKB_KEY_Cyrillic_ka , .name = "Cyrillic_ka" }, +{ .code = XKB_KEY_Cyrillic_el , .name = "Cyrillic_el" }, +{ .code = XKB_KEY_Cyrillic_em , .name = "Cyrillic_em" }, +{ .code = XKB_KEY_Cyrillic_en , .name = "Cyrillic_en" }, +{ .code = XKB_KEY_Cyrillic_o , .name = "Cyrillic_o" }, +{ .code = XKB_KEY_Cyrillic_pe , .name = "Cyrillic_pe" }, +{ .code = XKB_KEY_Cyrillic_ya , .name = "Cyrillic_ya" }, +{ .code = XKB_KEY_Cyrillic_er , .name = "Cyrillic_er" }, +{ .code = XKB_KEY_Cyrillic_es , .name = "Cyrillic_es" }, +{ .code = XKB_KEY_Cyrillic_te , .name = "Cyrillic_te" }, +{ .code = XKB_KEY_Cyrillic_u , .name = "Cyrillic_u" }, +{ .code = XKB_KEY_Cyrillic_zhe , .name = "Cyrillic_zhe" }, +{ .code = XKB_KEY_Cyrillic_ve , .name = "Cyrillic_ve" }, +{ .code = XKB_KEY_Cyrillic_softsign, .name = "Cyrillic_softsign" }, +{ .code = XKB_KEY_Cyrillic_yeru , .name = "Cyrillic_yeru" }, +{ .code = XKB_KEY_Cyrillic_ze , .name = "Cyrillic_ze" }, +{ .code = XKB_KEY_Cyrillic_sha , .name = "Cyrillic_sha" }, +{ .code = XKB_KEY_Cyrillic_e , .name = "Cyrillic_e" }, +{ .code = XKB_KEY_Cyrillic_shcha , .name = "Cyrillic_shcha" }, +{ .code = XKB_KEY_Cyrillic_che , .name = "Cyrillic_che" }, +{ .code = XKB_KEY_Cyrillic_hardsign, .name = "Cyrillic_hardsign" }, +{ .code = XKB_KEY_Cyrillic_YU , .name = "Cyrillic_YU" }, +{ .code = XKB_KEY_Cyrillic_A , .name = "Cyrillic_A" }, +{ .code = XKB_KEY_Cyrillic_BE , .name = "Cyrillic_BE" }, +{ .code = XKB_KEY_Cyrillic_TSE , .name = "Cyrillic_TSE" }, +{ .code = XKB_KEY_Cyrillic_DE , .name = "Cyrillic_DE" }, +{ .code = XKB_KEY_Cyrillic_IE , .name = "Cyrillic_IE" }, +{ .code = XKB_KEY_Cyrillic_EF , .name = "Cyrillic_EF" }, +{ .code = XKB_KEY_Cyrillic_GHE , .name = "Cyrillic_GHE" }, +{ .code = XKB_KEY_Cyrillic_HA , .name = "Cyrillic_HA" }, +{ .code = XKB_KEY_Cyrillic_I , .name = "Cyrillic_I" }, +{ .code = XKB_KEY_Cyrillic_SHORTI , .name = "Cyrillic_SHORTI" }, +{ .code = XKB_KEY_Cyrillic_KA , .name = "Cyrillic_KA" }, +{ .code = XKB_KEY_Cyrillic_EL , .name = "Cyrillic_EL" }, +{ .code = XKB_KEY_Cyrillic_EM , .name = "Cyrillic_EM" }, +{ .code = XKB_KEY_Cyrillic_EN , .name = "Cyrillic_EN" }, +{ .code = XKB_KEY_Cyrillic_O , .name = "Cyrillic_O" }, +{ .code = XKB_KEY_Cyrillic_PE , .name = "Cyrillic_PE" }, +{ .code = XKB_KEY_Cyrillic_YA , .name = "Cyrillic_YA" }, +{ .code = XKB_KEY_Cyrillic_ER , .name = "Cyrillic_ER" }, +{ .code = XKB_KEY_Cyrillic_ES , .name = "Cyrillic_ES" }, +{ .code = XKB_KEY_Cyrillic_TE , .name = "Cyrillic_TE" }, +{ .code = XKB_KEY_Cyrillic_U , .name = "Cyrillic_U" }, +{ .code = XKB_KEY_Cyrillic_ZHE , .name = "Cyrillic_ZHE" }, +{ .code = XKB_KEY_Cyrillic_VE , .name = "Cyrillic_VE" }, +{ .code = XKB_KEY_Cyrillic_SOFTSIGN, .name = "Cyrillic_SOFTSIGN" }, +{ .code = XKB_KEY_Cyrillic_YERU , .name = "Cyrillic_YERU" }, +{ .code = XKB_KEY_Cyrillic_ZE , .name = "Cyrillic_ZE" }, +{ .code = XKB_KEY_Cyrillic_SHA , .name = "Cyrillic_SHA" }, +{ .code = XKB_KEY_Cyrillic_E , .name = "Cyrillic_E" }, +{ .code = XKB_KEY_Cyrillic_SHCHA , .name = "Cyrillic_SHCHA" }, +{ .code = XKB_KEY_Cyrillic_CHE , .name = "Cyrillic_CHE" }, +{ .code = XKB_KEY_Cyrillic_HARDSIGN, .name = "Cyrillic_HARDSIGN" }, +{ .code = XKB_KEY_Greek_ALPHAaccent, .name = "Greek_ALPHAaccent" }, +{ .code = XKB_KEY_Greek_EPSILONaccent, .name = "Greek_EPSILONaccent" }, +{ .code = XKB_KEY_Greek_ETAaccent , .name = "Greek_ETAaccent" }, +{ .code = XKB_KEY_Greek_IOTAaccent, .name = "Greek_IOTAaccent" }, +{ .code = XKB_KEY_Greek_IOTAdieresis, .name = "Greek_IOTAdieresis" }, +{ .code = XKB_KEY_Greek_IOTAdiaeresis, .name = "Greek_IOTAdiaeresis" }, +{ .code = XKB_KEY_Greek_OMICRONaccent, .name = "Greek_OMICRONaccent" }, +{ .code = XKB_KEY_Greek_UPSILONaccent, .name = "Greek_UPSILONaccent" }, +{ .code = XKB_KEY_Greek_UPSILONdieresis, .name = "Greek_UPSILONdieresis" }, +{ .code = XKB_KEY_Greek_OMEGAaccent, .name = "Greek_OMEGAaccent" }, +{ .code = XKB_KEY_Greek_accentdieresis, .name = "Greek_accentdieresis" }, +{ .code = XKB_KEY_Greek_horizbar , .name = "Greek_horizbar" }, +{ .code = XKB_KEY_Greek_alphaaccent, .name = "Greek_alphaaccent" }, +{ .code = XKB_KEY_Greek_epsilonaccent, .name = "Greek_epsilonaccent" }, +{ .code = XKB_KEY_Greek_etaaccent , .name = "Greek_etaaccent" }, +{ .code = XKB_KEY_Greek_iotaaccent, .name = "Greek_iotaaccent" }, +{ .code = XKB_KEY_Greek_iotadieresis, .name = "Greek_iotadieresis" }, +{ .code = XKB_KEY_Greek_iotaaccentdieresis, .name = "Greek_iotaaccentdieresis" }, +{ .code = XKB_KEY_Greek_omicronaccent, .name = "Greek_omicronaccent" }, +{ .code = XKB_KEY_Greek_upsilonaccent, .name = "Greek_upsilonaccent" }, +{ .code = XKB_KEY_Greek_upsilondieresis, .name = "Greek_upsilondieresis" }, +{ .code = XKB_KEY_Greek_upsilonaccentdieresis, .name = "Greek_upsilonaccentdieresis" }, +{ .code = XKB_KEY_Greek_omegaaccent, .name = "Greek_omegaaccent" }, +{ .code = XKB_KEY_Greek_ALPHA , .name = "Greek_ALPHA" }, +{ .code = XKB_KEY_Greek_BETA , .name = "Greek_BETA" }, +{ .code = XKB_KEY_Greek_GAMMA , .name = "Greek_GAMMA" }, +{ .code = XKB_KEY_Greek_DELTA , .name = "Greek_DELTA" }, +{ .code = XKB_KEY_Greek_EPSILON , .name = "Greek_EPSILON" }, +{ .code = XKB_KEY_Greek_ZETA , .name = "Greek_ZETA" }, +{ .code = XKB_KEY_Greek_ETA , .name = "Greek_ETA" }, +{ .code = XKB_KEY_Greek_THETA , .name = "Greek_THETA" }, +{ .code = XKB_KEY_Greek_IOTA , .name = "Greek_IOTA" }, +{ .code = XKB_KEY_Greek_KAPPA , .name = "Greek_KAPPA" }, +{ .code = XKB_KEY_Greek_LAMDA , .name = "Greek_LAMDA" }, +{ .code = XKB_KEY_Greek_LAMBDA , .name = "Greek_LAMBDA" }, +{ .code = XKB_KEY_Greek_MU , .name = "Greek_MU" }, +{ .code = XKB_KEY_Greek_NU , .name = "Greek_NU" }, +{ .code = XKB_KEY_Greek_XI , .name = "Greek_XI" }, +{ .code = XKB_KEY_Greek_OMICRON , .name = "Greek_OMICRON" }, +{ .code = XKB_KEY_Greek_PI , .name = "Greek_PI" }, +{ .code = XKB_KEY_Greek_RHO , .name = "Greek_RHO" }, +{ .code = XKB_KEY_Greek_SIGMA , .name = "Greek_SIGMA" }, +{ .code = XKB_KEY_Greek_TAU , .name = "Greek_TAU" }, +{ .code = XKB_KEY_Greek_UPSILON , .name = "Greek_UPSILON" }, +{ .code = XKB_KEY_Greek_PHI , .name = "Greek_PHI" }, +{ .code = XKB_KEY_Greek_CHI , .name = "Greek_CHI" }, +{ .code = XKB_KEY_Greek_PSI , .name = "Greek_PSI" }, +{ .code = XKB_KEY_Greek_OMEGA , .name = "Greek_OMEGA" }, +{ .code = XKB_KEY_Greek_alpha , .name = "Greek_alpha" }, +{ .code = XKB_KEY_Greek_beta , .name = "Greek_beta" }, +{ .code = XKB_KEY_Greek_gamma , .name = "Greek_gamma" }, +{ .code = XKB_KEY_Greek_delta , .name = "Greek_delta" }, +{ .code = XKB_KEY_Greek_epsilon , .name = "Greek_epsilon" }, +{ .code = XKB_KEY_Greek_zeta , .name = "Greek_zeta" }, +{ .code = XKB_KEY_Greek_eta , .name = "Greek_eta" }, +{ .code = XKB_KEY_Greek_theta , .name = "Greek_theta" }, +{ .code = XKB_KEY_Greek_iota , .name = "Greek_iota" }, +{ .code = XKB_KEY_Greek_kappa , .name = "Greek_kappa" }, +{ .code = XKB_KEY_Greek_lamda , .name = "Greek_lamda" }, +{ .code = XKB_KEY_Greek_lambda , .name = "Greek_lambda" }, +{ .code = XKB_KEY_Greek_mu , .name = "Greek_mu" }, +{ .code = XKB_KEY_Greek_nu , .name = "Greek_nu" }, +{ .code = XKB_KEY_Greek_xi , .name = "Greek_xi" }, +{ .code = XKB_KEY_Greek_omicron , .name = "Greek_omicron" }, +{ .code = XKB_KEY_Greek_pi , .name = "Greek_pi" }, +{ .code = XKB_KEY_Greek_rho , .name = "Greek_rho" }, +{ .code = XKB_KEY_Greek_sigma , .name = "Greek_sigma" }, +{ .code = XKB_KEY_Greek_finalsmallsigma, .name = "Greek_finalsmallsigma" }, +{ .code = XKB_KEY_Greek_tau , .name = "Greek_tau" }, +{ .code = XKB_KEY_Greek_upsilon , .name = "Greek_upsilon" }, +{ .code = XKB_KEY_Greek_phi , .name = "Greek_phi" }, +{ .code = XKB_KEY_Greek_chi , .name = "Greek_chi" }, +{ .code = XKB_KEY_Greek_psi , .name = "Greek_psi" }, +{ .code = XKB_KEY_Greek_omega , .name = "Greek_omega" }, +{ .code = XKB_KEY_Greek_switch , .name = "Greek_switch" }, +{ .code = XKB_KEY_leftradical , .name = "leftradical" }, +{ .code = XKB_KEY_topleftradical , .name = "topleftradical" }, +{ .code = XKB_KEY_horizconnector , .name = "horizconnector" }, +{ .code = XKB_KEY_topintegral , .name = "topintegral" }, +{ .code = XKB_KEY_botintegral , .name = "botintegral" }, +{ .code = XKB_KEY_vertconnector , .name = "vertconnector" }, +{ .code = XKB_KEY_topleftsqbracket, .name = "topleftsqbracket" }, +{ .code = XKB_KEY_botleftsqbracket, .name = "botleftsqbracket" }, +{ .code = XKB_KEY_toprightsqbracket, .name = "toprightsqbracket" }, +{ .code = XKB_KEY_botrightsqbracket, .name = "botrightsqbracket" }, +{ .code = XKB_KEY_topleftparens , .name = "topleftparens" }, +{ .code = XKB_KEY_botleftparens , .name = "botleftparens" }, +{ .code = XKB_KEY_toprightparens , .name = "toprightparens" }, +{ .code = XKB_KEY_botrightparens , .name = "botrightparens" }, +{ .code = XKB_KEY_leftmiddlecurlybrace, .name = "leftmiddlecurlybrace" }, +{ .code = XKB_KEY_rightmiddlecurlybrace, .name = "rightmiddlecurlybrace" }, +{ .code = XKB_KEY_topleftsummation, .name = "topleftsummation" }, +{ .code = XKB_KEY_botleftsummation, .name = "botleftsummation" }, +{ .code = XKB_KEY_topvertsummationconnector, .name = "topvertsummationconnector" }, +{ .code = XKB_KEY_botvertsummationconnector, .name = "botvertsummationconnector" }, +{ .code = XKB_KEY_toprightsummation, .name = "toprightsummation" }, +{ .code = XKB_KEY_botrightsummation, .name = "botrightsummation" }, +{ .code = XKB_KEY_rightmiddlesummation, .name = "rightmiddlesummation" }, +{ .code = XKB_KEY_lessthanequal , .name = "lessthanequal" }, +{ .code = XKB_KEY_notequal , .name = "notequal" }, +{ .code = XKB_KEY_greaterthanequal, .name = "greaterthanequal" }, +{ .code = XKB_KEY_integral , .name = "integral" }, +{ .code = XKB_KEY_therefore , .name = "therefore" }, +{ .code = XKB_KEY_variation , .name = "variation" }, +{ .code = XKB_KEY_infinity , .name = "infinity" }, +{ .code = XKB_KEY_nabla , .name = "nabla" }, +{ .code = XKB_KEY_approximate , .name = "approximate" }, +{ .code = XKB_KEY_similarequal , .name = "similarequal" }, +{ .code = XKB_KEY_ifonlyif , .name = "ifonlyif" }, +{ .code = XKB_KEY_implies , .name = "implies" }, +{ .code = XKB_KEY_identical , .name = "identical" }, +{ .code = XKB_KEY_radical , .name = "radical" }, +{ .code = XKB_KEY_includedin , .name = "includedin" }, +{ .code = XKB_KEY_includes , .name = "includes" }, +{ .code = XKB_KEY_intersection , .name = "intersection" }, +{ .code = XKB_KEY_union , .name = "union" }, +{ .code = XKB_KEY_logicaland , .name = "logicaland" }, +{ .code = XKB_KEY_logicalor , .name = "logicalor" }, +{ .code = XKB_KEY_partialderivative, .name = "partialderivative" }, +{ .code = XKB_KEY_function , .name = "function" }, +{ .code = XKB_KEY_leftarrow , .name = "leftarrow" }, +{ .code = XKB_KEY_uparrow , .name = "uparrow" }, +{ .code = XKB_KEY_rightarrow , .name = "rightarrow" }, +{ .code = XKB_KEY_downarrow , .name = "downarrow" }, +{ .code = XKB_KEY_blank , .name = "blank" }, +{ .code = XKB_KEY_soliddiamond , .name = "soliddiamond" }, +{ .code = XKB_KEY_checkerboard , .name = "checkerboard" }, +{ .code = XKB_KEY_ht , .name = "ht" }, +{ .code = XKB_KEY_ff , .name = "ff" }, +{ .code = XKB_KEY_cr , .name = "cr" }, +{ .code = XKB_KEY_lf , .name = "lf" }, +{ .code = XKB_KEY_nl , .name = "nl" }, +{ .code = XKB_KEY_vt , .name = "vt" }, +{ .code = XKB_KEY_lowrightcorner , .name = "lowrightcorner" }, +{ .code = XKB_KEY_uprightcorner , .name = "uprightcorner" }, +{ .code = XKB_KEY_upleftcorner , .name = "upleftcorner" }, +{ .code = XKB_KEY_lowleftcorner , .name = "lowleftcorner" }, +{ .code = XKB_KEY_crossinglines , .name = "crossinglines" }, +{ .code = XKB_KEY_horizlinescan1 , .name = "horizlinescan1" }, +{ .code = XKB_KEY_horizlinescan3 , .name = "horizlinescan3" }, +{ .code = XKB_KEY_horizlinescan5 , .name = "horizlinescan5" }, +{ .code = XKB_KEY_horizlinescan7 , .name = "horizlinescan7" }, +{ .code = XKB_KEY_horizlinescan9 , .name = "horizlinescan9" }, +{ .code = XKB_KEY_leftt , .name = "leftt" }, +{ .code = XKB_KEY_rightt , .name = "rightt" }, +{ .code = XKB_KEY_bott , .name = "bott" }, +{ .code = XKB_KEY_topt , .name = "topt" }, +{ .code = XKB_KEY_vertbar , .name = "vertbar" }, +{ .code = XKB_KEY_emspace , .name = "emspace" }, +{ .code = XKB_KEY_enspace , .name = "enspace" }, +{ .code = XKB_KEY_em3space , .name = "em3space" }, +{ .code = XKB_KEY_em4space , .name = "em4space" }, +{ .code = XKB_KEY_digitspace , .name = "digitspace" }, +{ .code = XKB_KEY_punctspace , .name = "punctspace" }, +{ .code = XKB_KEY_thinspace , .name = "thinspace" }, +{ .code = XKB_KEY_hairspace , .name = "hairspace" }, +{ .code = XKB_KEY_emdash , .name = "emdash" }, +{ .code = XKB_KEY_endash , .name = "endash" }, +{ .code = XKB_KEY_signifblank , .name = "signifblank" }, +{ .code = XKB_KEY_ellipsis , .name = "ellipsis" }, +{ .code = XKB_KEY_doubbaselinedot , .name = "doubbaselinedot" }, +{ .code = XKB_KEY_onethird , .name = "onethird" }, +{ .code = XKB_KEY_twothirds , .name = "twothirds" }, +{ .code = XKB_KEY_onefifth , .name = "onefifth" }, +{ .code = XKB_KEY_twofifths , .name = "twofifths" }, +{ .code = XKB_KEY_threefifths , .name = "threefifths" }, +{ .code = XKB_KEY_fourfifths , .name = "fourfifths" }, +{ .code = XKB_KEY_onesixth , .name = "onesixth" }, +{ .code = XKB_KEY_fivesixths , .name = "fivesixths" }, +{ .code = XKB_KEY_careof , .name = "careof" }, +{ .code = XKB_KEY_figdash , .name = "figdash" }, +{ .code = XKB_KEY_leftanglebracket, .name = "leftanglebracket" }, +{ .code = XKB_KEY_decimalpoint , .name = "decimalpoint" }, +{ .code = XKB_KEY_rightanglebracket, .name = "rightanglebracket" }, +{ .code = XKB_KEY_marker , .name = "marker" }, +{ .code = XKB_KEY_oneeighth , .name = "oneeighth" }, +{ .code = XKB_KEY_threeeighths , .name = "threeeighths" }, +{ .code = XKB_KEY_fiveeighths , .name = "fiveeighths" }, +{ .code = XKB_KEY_seveneighths , .name = "seveneighths" }, +{ .code = XKB_KEY_trademark , .name = "trademark" }, +{ .code = XKB_KEY_signaturemark , .name = "signaturemark" }, +{ .code = XKB_KEY_trademarkincircle, .name = "trademarkincircle" }, +{ .code = XKB_KEY_leftopentriangle, .name = "leftopentriangle" }, +{ .code = XKB_KEY_rightopentriangle, .name = "rightopentriangle" }, +{ .code = XKB_KEY_emopencircle , .name = "emopencircle" }, +{ .code = XKB_KEY_emopenrectangle , .name = "emopenrectangle" }, +{ .code = XKB_KEY_leftsinglequotemark, .name = "leftsinglequotemark" }, +{ .code = XKB_KEY_rightsinglequotemark, .name = "rightsinglequotemark" }, +{ .code = XKB_KEY_leftdoublequotemark, .name = "leftdoublequotemark" }, +{ .code = XKB_KEY_rightdoublequotemark, .name = "rightdoublequotemark" }, +{ .code = XKB_KEY_prescription , .name = "prescription" }, +{ .code = XKB_KEY_permille , .name = "permille" }, +{ .code = XKB_KEY_minutes , .name = "minutes" }, +{ .code = XKB_KEY_seconds , .name = "seconds" }, +{ .code = XKB_KEY_latincross , .name = "latincross" }, +{ .code = XKB_KEY_hexagram , .name = "hexagram" }, +{ .code = XKB_KEY_filledrectbullet, .name = "filledrectbullet" }, +{ .code = XKB_KEY_filledlefttribullet, .name = "filledlefttribullet" }, +{ .code = XKB_KEY_filledrighttribullet, .name = "filledrighttribullet" }, +{ .code = XKB_KEY_emfilledcircle , .name = "emfilledcircle" }, +{ .code = XKB_KEY_emfilledrect , .name = "emfilledrect" }, +{ .code = XKB_KEY_enopencircbullet, .name = "enopencircbullet" }, +{ .code = XKB_KEY_enopensquarebullet, .name = "enopensquarebullet" }, +{ .code = XKB_KEY_openrectbullet , .name = "openrectbullet" }, +{ .code = XKB_KEY_opentribulletup , .name = "opentribulletup" }, +{ .code = XKB_KEY_opentribulletdown, .name = "opentribulletdown" }, +{ .code = XKB_KEY_openstar , .name = "openstar" }, +{ .code = XKB_KEY_enfilledcircbullet, .name = "enfilledcircbullet" }, +{ .code = XKB_KEY_enfilledsqbullet, .name = "enfilledsqbullet" }, +{ .code = XKB_KEY_filledtribulletup, .name = "filledtribulletup" }, +{ .code = XKB_KEY_filledtribulletdown, .name = "filledtribulletdown" }, +{ .code = XKB_KEY_leftpointer , .name = "leftpointer" }, +{ .code = XKB_KEY_rightpointer , .name = "rightpointer" }, +{ .code = XKB_KEY_club , .name = "club" }, +{ .code = XKB_KEY_diamond , .name = "diamond" }, +{ .code = XKB_KEY_heart , .name = "heart" }, +{ .code = XKB_KEY_maltesecross , .name = "maltesecross" }, +{ .code = XKB_KEY_dagger , .name = "dagger" }, +{ .code = XKB_KEY_doubledagger , .name = "doubledagger" }, +{ .code = XKB_KEY_checkmark , .name = "checkmark" }, +{ .code = XKB_KEY_ballotcross , .name = "ballotcross" }, +{ .code = XKB_KEY_musicalsharp , .name = "musicalsharp" }, +{ .code = XKB_KEY_musicalflat , .name = "musicalflat" }, +{ .code = XKB_KEY_malesymbol , .name = "malesymbol" }, +{ .code = XKB_KEY_femalesymbol , .name = "femalesymbol" }, +{ .code = XKB_KEY_telephone , .name = "telephone" }, +{ .code = XKB_KEY_telephonerecorder, .name = "telephonerecorder" }, +{ .code = XKB_KEY_phonographcopyright, .name = "phonographcopyright" }, +{ .code = XKB_KEY_caret , .name = "caret" }, +{ .code = XKB_KEY_singlelowquotemark, .name = "singlelowquotemark" }, +{ .code = XKB_KEY_doublelowquotemark, .name = "doublelowquotemark" }, +{ .code = XKB_KEY_cursor , .name = "cursor" }, +{ .code = XKB_KEY_leftcaret , .name = "leftcaret" }, +{ .code = XKB_KEY_rightcaret , .name = "rightcaret" }, +{ .code = XKB_KEY_downcaret , .name = "downcaret" }, +{ .code = XKB_KEY_upcaret , .name = "upcaret" }, +{ .code = XKB_KEY_overbar , .name = "overbar" }, +{ .code = XKB_KEY_downtack , .name = "downtack" }, +{ .code = XKB_KEY_upshoe , .name = "upshoe" }, +{ .code = XKB_KEY_downstile , .name = "downstile" }, +{ .code = XKB_KEY_underbar , .name = "underbar" }, +{ .code = XKB_KEY_jot , .name = "jot" }, +{ .code = XKB_KEY_quad , .name = "quad" }, +{ .code = XKB_KEY_uptack , .name = "uptack" }, +{ .code = XKB_KEY_circle , .name = "circle" }, +{ .code = XKB_KEY_upstile , .name = "upstile" }, +{ .code = XKB_KEY_downshoe , .name = "downshoe" }, +{ .code = XKB_KEY_rightshoe , .name = "rightshoe" }, +{ .code = XKB_KEY_leftshoe , .name = "leftshoe" }, +{ .code = XKB_KEY_lefttack , .name = "lefttack" }, +{ .code = XKB_KEY_righttack , .name = "righttack" }, +{ .code = XKB_KEY_hebrew_doublelowline, .name = "hebrew_doublelowline" }, +{ .code = XKB_KEY_hebrew_aleph , .name = "hebrew_aleph" }, +{ .code = XKB_KEY_hebrew_bet , .name = "hebrew_bet" }, +{ .code = XKB_KEY_hebrew_beth , .name = "hebrew_beth" }, +{ .code = XKB_KEY_hebrew_gimel , .name = "hebrew_gimel" }, +{ .code = XKB_KEY_hebrew_gimmel , .name = "hebrew_gimmel" }, +{ .code = XKB_KEY_hebrew_dalet , .name = "hebrew_dalet" }, +{ .code = XKB_KEY_hebrew_daleth , .name = "hebrew_daleth" }, +{ .code = XKB_KEY_hebrew_he , .name = "hebrew_he" }, +{ .code = XKB_KEY_hebrew_waw , .name = "hebrew_waw" }, +{ .code = XKB_KEY_hebrew_zain , .name = "hebrew_zain" }, +{ .code = XKB_KEY_hebrew_zayin , .name = "hebrew_zayin" }, +{ .code = XKB_KEY_hebrew_chet , .name = "hebrew_chet" }, +{ .code = XKB_KEY_hebrew_het , .name = "hebrew_het" }, +{ .code = XKB_KEY_hebrew_tet , .name = "hebrew_tet" }, +{ .code = XKB_KEY_hebrew_teth , .name = "hebrew_teth" }, +{ .code = XKB_KEY_hebrew_yod , .name = "hebrew_yod" }, +{ .code = XKB_KEY_hebrew_finalkaph, .name = "hebrew_finalkaph" }, +{ .code = XKB_KEY_hebrew_kaph , .name = "hebrew_kaph" }, +{ .code = XKB_KEY_hebrew_lamed , .name = "hebrew_lamed" }, +{ .code = XKB_KEY_hebrew_finalmem , .name = "hebrew_finalmem" }, +{ .code = XKB_KEY_hebrew_mem , .name = "hebrew_mem" }, +{ .code = XKB_KEY_hebrew_finalnun , .name = "hebrew_finalnun" }, +{ .code = XKB_KEY_hebrew_nun , .name = "hebrew_nun" }, +{ .code = XKB_KEY_hebrew_samech , .name = "hebrew_samech" }, +{ .code = XKB_KEY_hebrew_samekh , .name = "hebrew_samekh" }, +{ .code = XKB_KEY_hebrew_ayin , .name = "hebrew_ayin" }, +{ .code = XKB_KEY_hebrew_finalpe , .name = "hebrew_finalpe" }, +{ .code = XKB_KEY_hebrew_pe , .name = "hebrew_pe" }, +{ .code = XKB_KEY_hebrew_finalzade, .name = "hebrew_finalzade" }, +{ .code = XKB_KEY_hebrew_finalzadi, .name = "hebrew_finalzadi" }, +{ .code = XKB_KEY_hebrew_zade , .name = "hebrew_zade" }, +{ .code = XKB_KEY_hebrew_zadi , .name = "hebrew_zadi" }, +{ .code = XKB_KEY_hebrew_qoph , .name = "hebrew_qoph" }, +{ .code = XKB_KEY_hebrew_kuf , .name = "hebrew_kuf" }, +{ .code = XKB_KEY_hebrew_resh , .name = "hebrew_resh" }, +{ .code = XKB_KEY_hebrew_shin , .name = "hebrew_shin" }, +{ .code = XKB_KEY_hebrew_taw , .name = "hebrew_taw" }, +{ .code = XKB_KEY_hebrew_taf , .name = "hebrew_taf" }, +{ .code = XKB_KEY_Hebrew_switch , .name = "Hebrew_switch" }, +{ .code = XKB_KEY_Thai_kokai , .name = "Thai_kokai" }, +{ .code = XKB_KEY_Thai_khokhai , .name = "Thai_khokhai" }, +{ .code = XKB_KEY_Thai_khokhuat , .name = "Thai_khokhuat" }, +{ .code = XKB_KEY_Thai_khokhwai , .name = "Thai_khokhwai" }, +{ .code = XKB_KEY_Thai_khokhon , .name = "Thai_khokhon" }, +{ .code = XKB_KEY_Thai_khorakhang , .name = "Thai_khorakhang" }, +{ .code = XKB_KEY_Thai_ngongu , .name = "Thai_ngongu" }, +{ .code = XKB_KEY_Thai_chochan , .name = "Thai_chochan" }, +{ .code = XKB_KEY_Thai_choching , .name = "Thai_choching" }, +{ .code = XKB_KEY_Thai_chochang , .name = "Thai_chochang" }, +{ .code = XKB_KEY_Thai_soso , .name = "Thai_soso" }, +{ .code = XKB_KEY_Thai_chochoe , .name = "Thai_chochoe" }, +{ .code = XKB_KEY_Thai_yoying , .name = "Thai_yoying" }, +{ .code = XKB_KEY_Thai_dochada , .name = "Thai_dochada" }, +{ .code = XKB_KEY_Thai_topatak , .name = "Thai_topatak" }, +{ .code = XKB_KEY_Thai_thothan , .name = "Thai_thothan" }, +{ .code = XKB_KEY_Thai_thonangmontho, .name = "Thai_thonangmontho" }, +{ .code = XKB_KEY_Thai_thophuthao , .name = "Thai_thophuthao" }, +{ .code = XKB_KEY_Thai_nonen , .name = "Thai_nonen" }, +{ .code = XKB_KEY_Thai_dodek , .name = "Thai_dodek" }, +{ .code = XKB_KEY_Thai_totao , .name = "Thai_totao" }, +{ .code = XKB_KEY_Thai_thothung , .name = "Thai_thothung" }, +{ .code = XKB_KEY_Thai_thothahan , .name = "Thai_thothahan" }, +{ .code = XKB_KEY_Thai_thothong , .name = "Thai_thothong" }, +{ .code = XKB_KEY_Thai_nonu , .name = "Thai_nonu" }, +{ .code = XKB_KEY_Thai_bobaimai , .name = "Thai_bobaimai" }, +{ .code = XKB_KEY_Thai_popla , .name = "Thai_popla" }, +{ .code = XKB_KEY_Thai_phophung , .name = "Thai_phophung" }, +{ .code = XKB_KEY_Thai_fofa , .name = "Thai_fofa" }, +{ .code = XKB_KEY_Thai_phophan , .name = "Thai_phophan" }, +{ .code = XKB_KEY_Thai_fofan , .name = "Thai_fofan" }, +{ .code = XKB_KEY_Thai_phosamphao , .name = "Thai_phosamphao" }, +{ .code = XKB_KEY_Thai_moma , .name = "Thai_moma" }, +{ .code = XKB_KEY_Thai_yoyak , .name = "Thai_yoyak" }, +{ .code = XKB_KEY_Thai_rorua , .name = "Thai_rorua" }, +{ .code = XKB_KEY_Thai_ru , .name = "Thai_ru" }, +{ .code = XKB_KEY_Thai_loling , .name = "Thai_loling" }, +{ .code = XKB_KEY_Thai_lu , .name = "Thai_lu" }, +{ .code = XKB_KEY_Thai_wowaen , .name = "Thai_wowaen" }, +{ .code = XKB_KEY_Thai_sosala , .name = "Thai_sosala" }, +{ .code = XKB_KEY_Thai_sorusi , .name = "Thai_sorusi" }, +{ .code = XKB_KEY_Thai_sosua , .name = "Thai_sosua" }, +{ .code = XKB_KEY_Thai_hohip , .name = "Thai_hohip" }, +{ .code = XKB_KEY_Thai_lochula , .name = "Thai_lochula" }, +{ .code = XKB_KEY_Thai_oang , .name = "Thai_oang" }, +{ .code = XKB_KEY_Thai_honokhuk , .name = "Thai_honokhuk" }, +{ .code = XKB_KEY_Thai_paiyannoi , .name = "Thai_paiyannoi" }, +{ .code = XKB_KEY_Thai_saraa , .name = "Thai_saraa" }, +{ .code = XKB_KEY_Thai_maihanakat , .name = "Thai_maihanakat" }, +{ .code = XKB_KEY_Thai_saraaa , .name = "Thai_saraaa" }, +{ .code = XKB_KEY_Thai_saraam , .name = "Thai_saraam" }, +{ .code = XKB_KEY_Thai_sarai , .name = "Thai_sarai" }, +{ .code = XKB_KEY_Thai_saraii , .name = "Thai_saraii" }, +{ .code = XKB_KEY_Thai_saraue , .name = "Thai_saraue" }, +{ .code = XKB_KEY_Thai_sarauee , .name = "Thai_sarauee" }, +{ .code = XKB_KEY_Thai_sarau , .name = "Thai_sarau" }, +{ .code = XKB_KEY_Thai_sarauu , .name = "Thai_sarauu" }, +{ .code = XKB_KEY_Thai_phinthu , .name = "Thai_phinthu" }, +{ .code = XKB_KEY_Thai_maihanakat_maitho, .name = "Thai_maihanakat_maitho" }, +{ .code = XKB_KEY_Thai_baht , .name = "Thai_baht" }, +{ .code = XKB_KEY_Thai_sarae , .name = "Thai_sarae" }, +{ .code = XKB_KEY_Thai_saraae , .name = "Thai_saraae" }, +{ .code = XKB_KEY_Thai_sarao , .name = "Thai_sarao" }, +{ .code = XKB_KEY_Thai_saraaimaimuan, .name = "Thai_saraaimaimuan" }, +{ .code = XKB_KEY_Thai_saraaimaimalai, .name = "Thai_saraaimaimalai" }, +{ .code = XKB_KEY_Thai_lakkhangyao, .name = "Thai_lakkhangyao" }, +{ .code = XKB_KEY_Thai_maiyamok , .name = "Thai_maiyamok" }, +{ .code = XKB_KEY_Thai_maitaikhu , .name = "Thai_maitaikhu" }, +{ .code = XKB_KEY_Thai_maiek , .name = "Thai_maiek" }, +{ .code = XKB_KEY_Thai_maitho , .name = "Thai_maitho" }, +{ .code = XKB_KEY_Thai_maitri , .name = "Thai_maitri" }, +{ .code = XKB_KEY_Thai_maichattawa, .name = "Thai_maichattawa" }, +{ .code = XKB_KEY_Thai_thanthakhat, .name = "Thai_thanthakhat" }, +{ .code = XKB_KEY_Thai_nikhahit , .name = "Thai_nikhahit" }, +{ .code = XKB_KEY_Thai_leksun , .name = "Thai_leksun" }, +{ .code = XKB_KEY_Thai_leknung , .name = "Thai_leknung" }, +{ .code = XKB_KEY_Thai_leksong , .name = "Thai_leksong" }, +{ .code = XKB_KEY_Thai_leksam , .name = "Thai_leksam" }, +{ .code = XKB_KEY_Thai_leksi , .name = "Thai_leksi" }, +{ .code = XKB_KEY_Thai_lekha , .name = "Thai_lekha" }, +{ .code = XKB_KEY_Thai_lekhok , .name = "Thai_lekhok" }, +{ .code = XKB_KEY_Thai_lekchet , .name = "Thai_lekchet" }, +{ .code = XKB_KEY_Thai_lekpaet , .name = "Thai_lekpaet" }, +{ .code = XKB_KEY_Thai_lekkao , .name = "Thai_lekkao" }, +{ .code = XKB_KEY_Hangul , .name = "Hangul" }, +{ .code = XKB_KEY_Hangul_Start , .name = "Hangul_Start" }, +{ .code = XKB_KEY_Hangul_End , .name = "Hangul_End" }, +{ .code = XKB_KEY_Hangul_Hanja , .name = "Hangul_Hanja" }, +{ .code = XKB_KEY_Hangul_Jamo , .name = "Hangul_Jamo" }, +{ .code = XKB_KEY_Hangul_Romaja , .name = "Hangul_Romaja" }, +{ .code = XKB_KEY_Hangul_Codeinput, .name = "Hangul_Codeinput" }, +{ .code = XKB_KEY_Hangul_Jeonja , .name = "Hangul_Jeonja" }, +{ .code = XKB_KEY_Hangul_Banja , .name = "Hangul_Banja" }, +{ .code = XKB_KEY_Hangul_PreHanja , .name = "Hangul_PreHanja" }, +{ .code = XKB_KEY_Hangul_PostHanja, .name = "Hangul_PostHanja" }, +{ .code = XKB_KEY_Hangul_SingleCandidate, .name = "Hangul_SingleCandidate" }, +{ .code = XKB_KEY_Hangul_MultipleCandidate, .name = "Hangul_MultipleCandidate" }, +{ .code = XKB_KEY_Hangul_PreviousCandidate, .name = "Hangul_PreviousCandidate" }, +{ .code = XKB_KEY_Hangul_Special , .name = "Hangul_Special" }, +{ .code = XKB_KEY_Hangul_switch , .name = "Hangul_switch" }, +{ .code = XKB_KEY_Hangul_Kiyeog , .name = "Hangul_Kiyeog" }, +{ .code = XKB_KEY_Hangul_SsangKiyeog, .name = "Hangul_SsangKiyeog" }, +{ .code = XKB_KEY_Hangul_KiyeogSios, .name = "Hangul_KiyeogSios" }, +{ .code = XKB_KEY_Hangul_Nieun , .name = "Hangul_Nieun" }, +{ .code = XKB_KEY_Hangul_NieunJieuj, .name = "Hangul_NieunJieuj" }, +{ .code = XKB_KEY_Hangul_NieunHieuh, .name = "Hangul_NieunHieuh" }, +{ .code = XKB_KEY_Hangul_Dikeud , .name = "Hangul_Dikeud" }, +{ .code = XKB_KEY_Hangul_SsangDikeud, .name = "Hangul_SsangDikeud" }, +{ .code = XKB_KEY_Hangul_Rieul , .name = "Hangul_Rieul" }, +{ .code = XKB_KEY_Hangul_RieulKiyeog, .name = "Hangul_RieulKiyeog" }, +{ .code = XKB_KEY_Hangul_RieulMieum, .name = "Hangul_RieulMieum" }, +{ .code = XKB_KEY_Hangul_RieulPieub, .name = "Hangul_RieulPieub" }, +{ .code = XKB_KEY_Hangul_RieulSios, .name = "Hangul_RieulSios" }, +{ .code = XKB_KEY_Hangul_RieulTieut, .name = "Hangul_RieulTieut" }, +{ .code = XKB_KEY_Hangul_RieulPhieuf, .name = "Hangul_RieulPhieuf" }, +{ .code = XKB_KEY_Hangul_RieulHieuh, .name = "Hangul_RieulHieuh" }, +{ .code = XKB_KEY_Hangul_Mieum , .name = "Hangul_Mieum" }, +{ .code = XKB_KEY_Hangul_Pieub , .name = "Hangul_Pieub" }, +{ .code = XKB_KEY_Hangul_SsangPieub, .name = "Hangul_SsangPieub" }, +{ .code = XKB_KEY_Hangul_PieubSios, .name = "Hangul_PieubSios" }, +{ .code = XKB_KEY_Hangul_Sios , .name = "Hangul_Sios" }, +{ .code = XKB_KEY_Hangul_SsangSios, .name = "Hangul_SsangSios" }, +{ .code = XKB_KEY_Hangul_Ieung , .name = "Hangul_Ieung" }, +{ .code = XKB_KEY_Hangul_Jieuj , .name = "Hangul_Jieuj" }, +{ .code = XKB_KEY_Hangul_SsangJieuj, .name = "Hangul_SsangJieuj" }, +{ .code = XKB_KEY_Hangul_Cieuc , .name = "Hangul_Cieuc" }, +{ .code = XKB_KEY_Hangul_Khieuq , .name = "Hangul_Khieuq" }, +{ .code = XKB_KEY_Hangul_Tieut , .name = "Hangul_Tieut" }, +{ .code = XKB_KEY_Hangul_Phieuf , .name = "Hangul_Phieuf" }, +{ .code = XKB_KEY_Hangul_Hieuh , .name = "Hangul_Hieuh" }, +{ .code = XKB_KEY_Hangul_A , .name = "Hangul_A" }, +{ .code = XKB_KEY_Hangul_AE , .name = "Hangul_AE" }, +{ .code = XKB_KEY_Hangul_YA , .name = "Hangul_YA" }, +{ .code = XKB_KEY_Hangul_YAE , .name = "Hangul_YAE" }, +{ .code = XKB_KEY_Hangul_EO , .name = "Hangul_EO" }, +{ .code = XKB_KEY_Hangul_E , .name = "Hangul_E" }, +{ .code = XKB_KEY_Hangul_YEO , .name = "Hangul_YEO" }, +{ .code = XKB_KEY_Hangul_YE , .name = "Hangul_YE" }, +{ .code = XKB_KEY_Hangul_O , .name = "Hangul_O" }, +{ .code = XKB_KEY_Hangul_WA , .name = "Hangul_WA" }, +{ .code = XKB_KEY_Hangul_WAE , .name = "Hangul_WAE" }, +{ .code = XKB_KEY_Hangul_OE , .name = "Hangul_OE" }, +{ .code = XKB_KEY_Hangul_YO , .name = "Hangul_YO" }, +{ .code = XKB_KEY_Hangul_U , .name = "Hangul_U" }, +{ .code = XKB_KEY_Hangul_WEO , .name = "Hangul_WEO" }, +{ .code = XKB_KEY_Hangul_WE , .name = "Hangul_WE" }, +{ .code = XKB_KEY_Hangul_WI , .name = "Hangul_WI" }, +{ .code = XKB_KEY_Hangul_YU , .name = "Hangul_YU" }, +{ .code = XKB_KEY_Hangul_EU , .name = "Hangul_EU" }, +{ .code = XKB_KEY_Hangul_YI , .name = "Hangul_YI" }, +{ .code = XKB_KEY_Hangul_I , .name = "Hangul_I" }, +{ .code = XKB_KEY_Hangul_J_Kiyeog , .name = "Hangul_J_Kiyeog" }, +{ .code = XKB_KEY_Hangul_J_SsangKiyeog, .name = "Hangul_J_SsangKiyeog" }, +{ .code = XKB_KEY_Hangul_J_KiyeogSios, .name = "Hangul_J_KiyeogSios" }, +{ .code = XKB_KEY_Hangul_J_Nieun , .name = "Hangul_J_Nieun" }, +{ .code = XKB_KEY_Hangul_J_NieunJieuj, .name = "Hangul_J_NieunJieuj" }, +{ .code = XKB_KEY_Hangul_J_NieunHieuh, .name = "Hangul_J_NieunHieuh" }, +{ .code = XKB_KEY_Hangul_J_Dikeud , .name = "Hangul_J_Dikeud" }, +{ .code = XKB_KEY_Hangul_J_Rieul , .name = "Hangul_J_Rieul" }, +{ .code = XKB_KEY_Hangul_J_RieulKiyeog, .name = "Hangul_J_RieulKiyeog" }, +{ .code = XKB_KEY_Hangul_J_RieulMieum, .name = "Hangul_J_RieulMieum" }, +{ .code = XKB_KEY_Hangul_J_RieulPieub, .name = "Hangul_J_RieulPieub" }, +{ .code = XKB_KEY_Hangul_J_RieulSios, .name = "Hangul_J_RieulSios" }, +{ .code = XKB_KEY_Hangul_J_RieulTieut, .name = "Hangul_J_RieulTieut" }, +{ .code = XKB_KEY_Hangul_J_RieulPhieuf, .name = "Hangul_J_RieulPhieuf" }, +{ .code = XKB_KEY_Hangul_J_RieulHieuh, .name = "Hangul_J_RieulHieuh" }, +{ .code = XKB_KEY_Hangul_J_Mieum , .name = "Hangul_J_Mieum" }, +{ .code = XKB_KEY_Hangul_J_Pieub , .name = "Hangul_J_Pieub" }, +{ .code = XKB_KEY_Hangul_J_PieubSios, .name = "Hangul_J_PieubSios" }, +{ .code = XKB_KEY_Hangul_J_Sios , .name = "Hangul_J_Sios" }, +{ .code = XKB_KEY_Hangul_J_SsangSios, .name = "Hangul_J_SsangSios" }, +{ .code = XKB_KEY_Hangul_J_Ieung , .name = "Hangul_J_Ieung" }, +{ .code = XKB_KEY_Hangul_J_Jieuj , .name = "Hangul_J_Jieuj" }, +{ .code = XKB_KEY_Hangul_J_Cieuc , .name = "Hangul_J_Cieuc" }, +{ .code = XKB_KEY_Hangul_J_Khieuq , .name = "Hangul_J_Khieuq" }, +{ .code = XKB_KEY_Hangul_J_Tieut , .name = "Hangul_J_Tieut" }, +{ .code = XKB_KEY_Hangul_J_Phieuf , .name = "Hangul_J_Phieuf" }, +{ .code = XKB_KEY_Hangul_J_Hieuh , .name = "Hangul_J_Hieuh" }, +{ .code = XKB_KEY_Hangul_RieulYeorinHieuh, .name = "Hangul_RieulYeorinHieuh" }, +{ .code = XKB_KEY_Hangul_SunkyeongeumMieum, .name = "Hangul_SunkyeongeumMieum" }, +{ .code = XKB_KEY_Hangul_SunkyeongeumPieub, .name = "Hangul_SunkyeongeumPieub" }, +{ .code = XKB_KEY_Hangul_PanSios , .name = "Hangul_PanSios" }, +{ .code = XKB_KEY_Hangul_KkogjiDalrinIeung, .name = "Hangul_KkogjiDalrinIeung" }, +{ .code = XKB_KEY_Hangul_SunkyeongeumPhieuf, .name = "Hangul_SunkyeongeumPhieuf" }, +{ .code = XKB_KEY_Hangul_YeorinHieuh, .name = "Hangul_YeorinHieuh" }, +{ .code = XKB_KEY_Hangul_AraeA , .name = "Hangul_AraeA" }, +{ .code = XKB_KEY_Hangul_AraeAE , .name = "Hangul_AraeAE" }, +{ .code = XKB_KEY_Hangul_J_PanSios, .name = "Hangul_J_PanSios" }, +{ .code = XKB_KEY_Hangul_J_KkogjiDalrinIeung, .name = "Hangul_J_KkogjiDalrinIeung" }, +{ .code = XKB_KEY_Hangul_J_YeorinHieuh, .name = "Hangul_J_YeorinHieuh" }, +{ .code = XKB_KEY_Korean_Won , .name = "Korean_Won" }, +{ .code = XKB_KEY_Armenian_ligature_ew, .name = "Armenian_ligature_ew" }, +{ .code = XKB_KEY_Armenian_full_stop, .name = "Armenian_full_stop" }, +{ .code = XKB_KEY_Armenian_verjaket, .name = "Armenian_verjaket" }, +{ .code = XKB_KEY_Armenian_separation_mark, .name = "Armenian_separation_mark" }, +{ .code = XKB_KEY_Armenian_but , .name = "Armenian_but" }, +{ .code = XKB_KEY_Armenian_hyphen , .name = "Armenian_hyphen" }, +{ .code = XKB_KEY_Armenian_yentamna, .name = "Armenian_yentamna" }, +{ .code = XKB_KEY_Armenian_exclam , .name = "Armenian_exclam" }, +{ .code = XKB_KEY_Armenian_amanak , .name = "Armenian_amanak" }, +{ .code = XKB_KEY_Armenian_accent , .name = "Armenian_accent" }, +{ .code = XKB_KEY_Armenian_shesht , .name = "Armenian_shesht" }, +{ .code = XKB_KEY_Armenian_question, .name = "Armenian_question" }, +{ .code = XKB_KEY_Armenian_paruyk , .name = "Armenian_paruyk" }, +{ .code = XKB_KEY_Armenian_AYB , .name = "Armenian_AYB" }, +{ .code = XKB_KEY_Armenian_ayb , .name = "Armenian_ayb" }, +{ .code = XKB_KEY_Armenian_BEN , .name = "Armenian_BEN" }, +{ .code = XKB_KEY_Armenian_ben , .name = "Armenian_ben" }, +{ .code = XKB_KEY_Armenian_GIM , .name = "Armenian_GIM" }, +{ .code = XKB_KEY_Armenian_gim , .name = "Armenian_gim" }, +{ .code = XKB_KEY_Armenian_DA , .name = "Armenian_DA" }, +{ .code = XKB_KEY_Armenian_da , .name = "Armenian_da" }, +{ .code = XKB_KEY_Armenian_YECH , .name = "Armenian_YECH" }, +{ .code = XKB_KEY_Armenian_yech , .name = "Armenian_yech" }, +{ .code = XKB_KEY_Armenian_ZA , .name = "Armenian_ZA" }, +{ .code = XKB_KEY_Armenian_za , .name = "Armenian_za" }, +{ .code = XKB_KEY_Armenian_E , .name = "Armenian_E" }, +{ .code = XKB_KEY_Armenian_e , .name = "Armenian_e" }, +{ .code = XKB_KEY_Armenian_AT , .name = "Armenian_AT" }, +{ .code = XKB_KEY_Armenian_at , .name = "Armenian_at" }, +{ .code = XKB_KEY_Armenian_TO , .name = "Armenian_TO" }, +{ .code = XKB_KEY_Armenian_to , .name = "Armenian_to" }, +{ .code = XKB_KEY_Armenian_ZHE , .name = "Armenian_ZHE" }, +{ .code = XKB_KEY_Armenian_zhe , .name = "Armenian_zhe" }, +{ .code = XKB_KEY_Armenian_INI , .name = "Armenian_INI" }, +{ .code = XKB_KEY_Armenian_ini , .name = "Armenian_ini" }, +{ .code = XKB_KEY_Armenian_LYUN , .name = "Armenian_LYUN" }, +{ .code = XKB_KEY_Armenian_lyun , .name = "Armenian_lyun" }, +{ .code = XKB_KEY_Armenian_KHE , .name = "Armenian_KHE" }, +{ .code = XKB_KEY_Armenian_khe , .name = "Armenian_khe" }, +{ .code = XKB_KEY_Armenian_TSA , .name = "Armenian_TSA" }, +{ .code = XKB_KEY_Armenian_tsa , .name = "Armenian_tsa" }, +{ .code = XKB_KEY_Armenian_KEN , .name = "Armenian_KEN" }, +{ .code = XKB_KEY_Armenian_ken , .name = "Armenian_ken" }, +{ .code = XKB_KEY_Armenian_HO , .name = "Armenian_HO" }, +{ .code = XKB_KEY_Armenian_ho , .name = "Armenian_ho" }, +{ .code = XKB_KEY_Armenian_DZA , .name = "Armenian_DZA" }, +{ .code = XKB_KEY_Armenian_dza , .name = "Armenian_dza" }, +{ .code = XKB_KEY_Armenian_GHAT , .name = "Armenian_GHAT" }, +{ .code = XKB_KEY_Armenian_ghat , .name = "Armenian_ghat" }, +{ .code = XKB_KEY_Armenian_TCHE , .name = "Armenian_TCHE" }, +{ .code = XKB_KEY_Armenian_tche , .name = "Armenian_tche" }, +{ .code = XKB_KEY_Armenian_MEN , .name = "Armenian_MEN" }, +{ .code = XKB_KEY_Armenian_men , .name = "Armenian_men" }, +{ .code = XKB_KEY_Armenian_HI , .name = "Armenian_HI" }, +{ .code = XKB_KEY_Armenian_hi , .name = "Armenian_hi" }, +{ .code = XKB_KEY_Armenian_NU , .name = "Armenian_NU" }, +{ .code = XKB_KEY_Armenian_nu , .name = "Armenian_nu" }, +{ .code = XKB_KEY_Armenian_SHA , .name = "Armenian_SHA" }, +{ .code = XKB_KEY_Armenian_sha , .name = "Armenian_sha" }, +{ .code = XKB_KEY_Armenian_VO , .name = "Armenian_VO" }, +{ .code = XKB_KEY_Armenian_vo , .name = "Armenian_vo" }, +{ .code = XKB_KEY_Armenian_CHA , .name = "Armenian_CHA" }, +{ .code = XKB_KEY_Armenian_cha , .name = "Armenian_cha" }, +{ .code = XKB_KEY_Armenian_PE , .name = "Armenian_PE" }, +{ .code = XKB_KEY_Armenian_pe , .name = "Armenian_pe" }, +{ .code = XKB_KEY_Armenian_JE , .name = "Armenian_JE" }, +{ .code = XKB_KEY_Armenian_je , .name = "Armenian_je" }, +{ .code = XKB_KEY_Armenian_RA , .name = "Armenian_RA" }, +{ .code = XKB_KEY_Armenian_ra , .name = "Armenian_ra" }, +{ .code = XKB_KEY_Armenian_SE , .name = "Armenian_SE" }, +{ .code = XKB_KEY_Armenian_se , .name = "Armenian_se" }, +{ .code = XKB_KEY_Armenian_VEV , .name = "Armenian_VEV" }, +{ .code = XKB_KEY_Armenian_vev , .name = "Armenian_vev" }, +{ .code = XKB_KEY_Armenian_TYUN , .name = "Armenian_TYUN" }, +{ .code = XKB_KEY_Armenian_tyun , .name = "Armenian_tyun" }, +{ .code = XKB_KEY_Armenian_RE , .name = "Armenian_RE" }, +{ .code = XKB_KEY_Armenian_re , .name = "Armenian_re" }, +{ .code = XKB_KEY_Armenian_TSO , .name = "Armenian_TSO" }, +{ .code = XKB_KEY_Armenian_tso , .name = "Armenian_tso" }, +{ .code = XKB_KEY_Armenian_VYUN , .name = "Armenian_VYUN" }, +{ .code = XKB_KEY_Armenian_vyun , .name = "Armenian_vyun" }, +{ .code = XKB_KEY_Armenian_PYUR , .name = "Armenian_PYUR" }, +{ .code = XKB_KEY_Armenian_pyur , .name = "Armenian_pyur" }, +{ .code = XKB_KEY_Armenian_KE , .name = "Armenian_KE" }, +{ .code = XKB_KEY_Armenian_ke , .name = "Armenian_ke" }, +{ .code = XKB_KEY_Armenian_O , .name = "Armenian_O" }, +{ .code = XKB_KEY_Armenian_o , .name = "Armenian_o" }, +{ .code = XKB_KEY_Armenian_FE , .name = "Armenian_FE" }, +{ .code = XKB_KEY_Armenian_fe , .name = "Armenian_fe" }, +{ .code = XKB_KEY_Armenian_apostrophe, .name = "Armenian_apostrophe" }, +{ .code = XKB_KEY_Georgian_an , .name = "Georgian_an" }, +{ .code = XKB_KEY_Georgian_ban , .name = "Georgian_ban" }, +{ .code = XKB_KEY_Georgian_gan , .name = "Georgian_gan" }, +{ .code = XKB_KEY_Georgian_don , .name = "Georgian_don" }, +{ .code = XKB_KEY_Georgian_en , .name = "Georgian_en" }, +{ .code = XKB_KEY_Georgian_vin , .name = "Georgian_vin" }, +{ .code = XKB_KEY_Georgian_zen , .name = "Georgian_zen" }, +{ .code = XKB_KEY_Georgian_tan , .name = "Georgian_tan" }, +{ .code = XKB_KEY_Georgian_in , .name = "Georgian_in" }, +{ .code = XKB_KEY_Georgian_kan , .name = "Georgian_kan" }, +{ .code = XKB_KEY_Georgian_las , .name = "Georgian_las" }, +{ .code = XKB_KEY_Georgian_man , .name = "Georgian_man" }, +{ .code = XKB_KEY_Georgian_nar , .name = "Georgian_nar" }, +{ .code = XKB_KEY_Georgian_on , .name = "Georgian_on" }, +{ .code = XKB_KEY_Georgian_par , .name = "Georgian_par" }, +{ .code = XKB_KEY_Georgian_zhar , .name = "Georgian_zhar" }, +{ .code = XKB_KEY_Georgian_rae , .name = "Georgian_rae" }, +{ .code = XKB_KEY_Georgian_san , .name = "Georgian_san" }, +{ .code = XKB_KEY_Georgian_tar , .name = "Georgian_tar" }, +{ .code = XKB_KEY_Georgian_un , .name = "Georgian_un" }, +{ .code = XKB_KEY_Georgian_phar , .name = "Georgian_phar" }, +{ .code = XKB_KEY_Georgian_khar , .name = "Georgian_khar" }, +{ .code = XKB_KEY_Georgian_ghan , .name = "Georgian_ghan" }, +{ .code = XKB_KEY_Georgian_qar , .name = "Georgian_qar" }, +{ .code = XKB_KEY_Georgian_shin , .name = "Georgian_shin" }, +{ .code = XKB_KEY_Georgian_chin , .name = "Georgian_chin" }, +{ .code = XKB_KEY_Georgian_can , .name = "Georgian_can" }, +{ .code = XKB_KEY_Georgian_jil , .name = "Georgian_jil" }, +{ .code = XKB_KEY_Georgian_cil , .name = "Georgian_cil" }, +{ .code = XKB_KEY_Georgian_char , .name = "Georgian_char" }, +{ .code = XKB_KEY_Georgian_xan , .name = "Georgian_xan" }, +{ .code = XKB_KEY_Georgian_jhan , .name = "Georgian_jhan" }, +{ .code = XKB_KEY_Georgian_hae , .name = "Georgian_hae" }, +{ .code = XKB_KEY_Georgian_he , .name = "Georgian_he" }, +{ .code = XKB_KEY_Georgian_hie , .name = "Georgian_hie" }, +{ .code = XKB_KEY_Georgian_we , .name = "Georgian_we" }, +{ .code = XKB_KEY_Georgian_har , .name = "Georgian_har" }, +{ .code = XKB_KEY_Georgian_hoe , .name = "Georgian_hoe" }, +{ .code = XKB_KEY_Georgian_fi , .name = "Georgian_fi" }, +{ .code = XKB_KEY_Xabovedot , .name = "Xabovedot" }, +{ .code = XKB_KEY_Ibreve , .name = "Ibreve" }, +{ .code = XKB_KEY_Zstroke , .name = "Zstroke" }, +{ .code = XKB_KEY_Gcaron , .name = "Gcaron" }, +{ .code = XKB_KEY_Ocaron , .name = "Ocaron" }, +{ .code = XKB_KEY_Obarred , .name = "Obarred" }, +{ .code = XKB_KEY_xabovedot , .name = "xabovedot" }, +{ .code = XKB_KEY_ibreve , .name = "ibreve" }, +{ .code = XKB_KEY_zstroke , .name = "zstroke" }, +{ .code = XKB_KEY_gcaron , .name = "gcaron" }, +{ .code = XKB_KEY_ocaron , .name = "ocaron" }, +{ .code = XKB_KEY_obarred , .name = "obarred" }, +{ .code = XKB_KEY_SCHWA , .name = "SCHWA" }, +{ .code = XKB_KEY_schwa , .name = "schwa" }, +{ .code = XKB_KEY_EZH , .name = "EZH" }, +{ .code = XKB_KEY_ezh , .name = "ezh" }, +{ .code = XKB_KEY_Lbelowdot , .name = "Lbelowdot" }, +{ .code = XKB_KEY_lbelowdot , .name = "lbelowdot" }, +{ .code = XKB_KEY_Abelowdot , .name = "Abelowdot" }, +{ .code = XKB_KEY_abelowdot , .name = "abelowdot" }, +{ .code = XKB_KEY_Ahook , .name = "Ahook" }, +{ .code = XKB_KEY_ahook , .name = "ahook" }, +{ .code = XKB_KEY_Acircumflexacute, .name = "Acircumflexacute" }, +{ .code = XKB_KEY_acircumflexacute, .name = "acircumflexacute" }, +{ .code = XKB_KEY_Acircumflexgrave, .name = "Acircumflexgrave" }, +{ .code = XKB_KEY_acircumflexgrave, .name = "acircumflexgrave" }, +{ .code = XKB_KEY_Acircumflexhook , .name = "Acircumflexhook" }, +{ .code = XKB_KEY_acircumflexhook , .name = "acircumflexhook" }, +{ .code = XKB_KEY_Acircumflextilde, .name = "Acircumflextilde" }, +{ .code = XKB_KEY_acircumflextilde, .name = "acircumflextilde" }, +{ .code = XKB_KEY_Acircumflexbelowdot, .name = "Acircumflexbelowdot" }, +{ .code = XKB_KEY_acircumflexbelowdot, .name = "acircumflexbelowdot" }, +{ .code = XKB_KEY_Abreveacute , .name = "Abreveacute" }, +{ .code = XKB_KEY_abreveacute , .name = "abreveacute" }, +{ .code = XKB_KEY_Abrevegrave , .name = "Abrevegrave" }, +{ .code = XKB_KEY_abrevegrave , .name = "abrevegrave" }, +{ .code = XKB_KEY_Abrevehook , .name = "Abrevehook" }, +{ .code = XKB_KEY_abrevehook , .name = "abrevehook" }, +{ .code = XKB_KEY_Abrevetilde , .name = "Abrevetilde" }, +{ .code = XKB_KEY_abrevetilde , .name = "abrevetilde" }, +{ .code = XKB_KEY_Abrevebelowdot , .name = "Abrevebelowdot" }, +{ .code = XKB_KEY_abrevebelowdot , .name = "abrevebelowdot" }, +{ .code = XKB_KEY_Ebelowdot , .name = "Ebelowdot" }, +{ .code = XKB_KEY_ebelowdot , .name = "ebelowdot" }, +{ .code = XKB_KEY_Ehook , .name = "Ehook" }, +{ .code = XKB_KEY_ehook , .name = "ehook" }, +{ .code = XKB_KEY_Etilde , .name = "Etilde" }, +{ .code = XKB_KEY_etilde , .name = "etilde" }, +{ .code = XKB_KEY_Ecircumflexacute, .name = "Ecircumflexacute" }, +{ .code = XKB_KEY_ecircumflexacute, .name = "ecircumflexacute" }, +{ .code = XKB_KEY_Ecircumflexgrave, .name = "Ecircumflexgrave" }, +{ .code = XKB_KEY_ecircumflexgrave, .name = "ecircumflexgrave" }, +{ .code = XKB_KEY_Ecircumflexhook , .name = "Ecircumflexhook" }, +{ .code = XKB_KEY_ecircumflexhook , .name = "ecircumflexhook" }, +{ .code = XKB_KEY_Ecircumflextilde, .name = "Ecircumflextilde" }, +{ .code = XKB_KEY_ecircumflextilde, .name = "ecircumflextilde" }, +{ .code = XKB_KEY_Ecircumflexbelowdot, .name = "Ecircumflexbelowdot" }, +{ .code = XKB_KEY_ecircumflexbelowdot, .name = "ecircumflexbelowdot" }, +{ .code = XKB_KEY_Ihook , .name = "Ihook" }, +{ .code = XKB_KEY_ihook , .name = "ihook" }, +{ .code = XKB_KEY_Ibelowdot , .name = "Ibelowdot" }, +{ .code = XKB_KEY_ibelowdot , .name = "ibelowdot" }, +{ .code = XKB_KEY_Obelowdot , .name = "Obelowdot" }, +{ .code = XKB_KEY_obelowdot , .name = "obelowdot" }, +{ .code = XKB_KEY_Ohook , .name = "Ohook" }, +{ .code = XKB_KEY_ohook , .name = "ohook" }, +{ .code = XKB_KEY_Ocircumflexacute, .name = "Ocircumflexacute" }, +{ .code = XKB_KEY_ocircumflexacute, .name = "ocircumflexacute" }, +{ .code = XKB_KEY_Ocircumflexgrave, .name = "Ocircumflexgrave" }, +{ .code = XKB_KEY_ocircumflexgrave, .name = "ocircumflexgrave" }, +{ .code = XKB_KEY_Ocircumflexhook , .name = "Ocircumflexhook" }, +{ .code = XKB_KEY_ocircumflexhook , .name = "ocircumflexhook" }, +{ .code = XKB_KEY_Ocircumflextilde, .name = "Ocircumflextilde" }, +{ .code = XKB_KEY_ocircumflextilde, .name = "ocircumflextilde" }, +{ .code = XKB_KEY_Ocircumflexbelowdot, .name = "Ocircumflexbelowdot" }, +{ .code = XKB_KEY_ocircumflexbelowdot, .name = "ocircumflexbelowdot" }, +{ .code = XKB_KEY_Ohornacute , .name = "Ohornacute" }, +{ .code = XKB_KEY_ohornacute , .name = "ohornacute" }, +{ .code = XKB_KEY_Ohorngrave , .name = "Ohorngrave" }, +{ .code = XKB_KEY_ohorngrave , .name = "ohorngrave" }, +{ .code = XKB_KEY_Ohornhook , .name = "Ohornhook" }, +{ .code = XKB_KEY_ohornhook , .name = "ohornhook" }, +{ .code = XKB_KEY_Ohorntilde , .name = "Ohorntilde" }, +{ .code = XKB_KEY_ohorntilde , .name = "ohorntilde" }, +{ .code = XKB_KEY_Ohornbelowdot , .name = "Ohornbelowdot" }, +{ .code = XKB_KEY_ohornbelowdot , .name = "ohornbelowdot" }, +{ .code = XKB_KEY_Ubelowdot , .name = "Ubelowdot" }, +{ .code = XKB_KEY_ubelowdot , .name = "ubelowdot" }, +{ .code = XKB_KEY_Uhook , .name = "Uhook" }, +{ .code = XKB_KEY_uhook , .name = "uhook" }, +{ .code = XKB_KEY_Uhornacute , .name = "Uhornacute" }, +{ .code = XKB_KEY_uhornacute , .name = "uhornacute" }, +{ .code = XKB_KEY_Uhorngrave , .name = "Uhorngrave" }, +{ .code = XKB_KEY_uhorngrave , .name = "uhorngrave" }, +{ .code = XKB_KEY_Uhornhook , .name = "Uhornhook" }, +{ .code = XKB_KEY_uhornhook , .name = "uhornhook" }, +{ .code = XKB_KEY_Uhorntilde , .name = "Uhorntilde" }, +{ .code = XKB_KEY_uhorntilde , .name = "uhorntilde" }, +{ .code = XKB_KEY_Uhornbelowdot , .name = "Uhornbelowdot" }, +{ .code = XKB_KEY_uhornbelowdot , .name = "uhornbelowdot" }, +{ .code = XKB_KEY_Ybelowdot , .name = "Ybelowdot" }, +{ .code = XKB_KEY_ybelowdot , .name = "ybelowdot" }, +{ .code = XKB_KEY_Yhook , .name = "Yhook" }, +{ .code = XKB_KEY_yhook , .name = "yhook" }, +{ .code = XKB_KEY_Ytilde , .name = "Ytilde" }, +{ .code = XKB_KEY_ytilde , .name = "ytilde" }, +{ .code = XKB_KEY_Ohorn , .name = "Ohorn" }, +{ .code = XKB_KEY_ohorn , .name = "ohorn" }, +{ .code = XKB_KEY_Uhorn , .name = "Uhorn" }, +{ .code = XKB_KEY_uhorn , .name = "uhorn" }, +{ .code = XKB_KEY_EcuSign , .name = "EcuSign" }, +{ .code = XKB_KEY_ColonSign , .name = "ColonSign" }, +{ .code = XKB_KEY_CruzeiroSign , .name = "CruzeiroSign" }, +{ .code = XKB_KEY_FFrancSign , .name = "FFrancSign" }, +{ .code = XKB_KEY_LiraSign , .name = "LiraSign" }, +{ .code = XKB_KEY_MillSign , .name = "MillSign" }, +{ .code = XKB_KEY_NairaSign , .name = "NairaSign" }, +{ .code = XKB_KEY_PesetaSign , .name = "PesetaSign" }, +{ .code = XKB_KEY_RupeeSign , .name = "RupeeSign" }, +{ .code = XKB_KEY_WonSign , .name = "WonSign" }, +{ .code = XKB_KEY_NewSheqelSign , .name = "NewSheqelSign" }, +{ .code = XKB_KEY_DongSign , .name = "DongSign" }, +{ .code = XKB_KEY_EuroSign , .name = "EuroSign" }, +{ .code = XKB_KEY_zerosuperior , .name = "zerosuperior" }, +{ .code = XKB_KEY_foursuperior , .name = "foursuperior" }, +{ .code = XKB_KEY_fivesuperior , .name = "fivesuperior" }, +{ .code = XKB_KEY_sixsuperior , .name = "sixsuperior" }, +{ .code = XKB_KEY_sevensuperior , .name = "sevensuperior" }, +{ .code = XKB_KEY_eightsuperior , .name = "eightsuperior" }, +{ .code = XKB_KEY_ninesuperior , .name = "ninesuperior" }, +{ .code = XKB_KEY_zerosubscript , .name = "zerosubscript" }, +{ .code = XKB_KEY_onesubscript , .name = "onesubscript" }, +{ .code = XKB_KEY_twosubscript , .name = "twosubscript" }, +{ .code = XKB_KEY_threesubscript , .name = "threesubscript" }, +{ .code = XKB_KEY_foursubscript , .name = "foursubscript" }, +{ .code = XKB_KEY_fivesubscript , .name = "fivesubscript" }, +{ .code = XKB_KEY_sixsubscript , .name = "sixsubscript" }, +{ .code = XKB_KEY_sevensubscript , .name = "sevensubscript" }, +{ .code = XKB_KEY_eightsubscript , .name = "eightsubscript" }, +{ .code = XKB_KEY_ninesubscript , .name = "ninesubscript" }, +{ .code = XKB_KEY_partdifferential, .name = "partdifferential" }, +{ .code = XKB_KEY_emptyset , .name = "emptyset" }, +{ .code = XKB_KEY_elementof , .name = "elementof" }, +{ .code = XKB_KEY_notelementof , .name = "notelementof" }, +{ .code = XKB_KEY_containsas , .name = "containsas" }, +{ .code = XKB_KEY_squareroot , .name = "squareroot" }, +{ .code = XKB_KEY_cuberoot , .name = "cuberoot" }, +{ .code = XKB_KEY_fourthroot , .name = "fourthroot" }, +{ .code = XKB_KEY_dintegral , .name = "dintegral" }, +{ .code = XKB_KEY_tintegral , .name = "tintegral" }, +{ .code = XKB_KEY_because , .name = "because" }, +{ .code = XKB_KEY_approxeq , .name = "approxeq" }, +{ .code = XKB_KEY_notapproxeq , .name = "notapproxeq" }, +{ .code = XKB_KEY_notidentical , .name = "notidentical" }, +{ .code = XKB_KEY_stricteq , .name = "stricteq" }, +{ .code = XKB_KEY_braille_dot_1 , .name = "braille_dot_1" }, +{ .code = XKB_KEY_braille_dot_2 , .name = "braille_dot_2" }, +{ .code = XKB_KEY_braille_dot_3 , .name = "braille_dot_3" }, +{ .code = XKB_KEY_braille_dot_4 , .name = "braille_dot_4" }, +{ .code = XKB_KEY_braille_dot_5 , .name = "braille_dot_5" }, +{ .code = XKB_KEY_braille_dot_6 , .name = "braille_dot_6" }, +{ .code = XKB_KEY_braille_dot_7 , .name = "braille_dot_7" }, +{ .code = XKB_KEY_braille_dot_8 , .name = "braille_dot_8" }, +{ .code = XKB_KEY_braille_dot_9 , .name = "braille_dot_9" }, +{ .code = XKB_KEY_braille_dot_10 , .name = "braille_dot_10" }, +{ .code = XKB_KEY_braille_blank , .name = "braille_blank" }, +{ .code = XKB_KEY_braille_dots_1 , .name = "braille_dots_1" }, +{ .code = XKB_KEY_braille_dots_2 , .name = "braille_dots_2" }, +{ .code = XKB_KEY_braille_dots_12 , .name = "braille_dots_12" }, +{ .code = XKB_KEY_braille_dots_3 , .name = "braille_dots_3" }, +{ .code = XKB_KEY_braille_dots_13 , .name = "braille_dots_13" }, +{ .code = XKB_KEY_braille_dots_23 , .name = "braille_dots_23" }, +{ .code = XKB_KEY_braille_dots_123, .name = "braille_dots_123" }, +{ .code = XKB_KEY_braille_dots_4 , .name = "braille_dots_4" }, +{ .code = XKB_KEY_braille_dots_14 , .name = "braille_dots_14" }, +{ .code = XKB_KEY_braille_dots_24 , .name = "braille_dots_24" }, +{ .code = XKB_KEY_braille_dots_124, .name = "braille_dots_124" }, +{ .code = XKB_KEY_braille_dots_34 , .name = "braille_dots_34" }, +{ .code = XKB_KEY_braille_dots_134, .name = "braille_dots_134" }, +{ .code = XKB_KEY_braille_dots_234, .name = "braille_dots_234" }, +{ .code = XKB_KEY_braille_dots_1234, .name = "braille_dots_1234" }, +{ .code = XKB_KEY_braille_dots_5 , .name = "braille_dots_5" }, +{ .code = XKB_KEY_braille_dots_15 , .name = "braille_dots_15" }, +{ .code = XKB_KEY_braille_dots_25 , .name = "braille_dots_25" }, +{ .code = XKB_KEY_braille_dots_125, .name = "braille_dots_125" }, +{ .code = XKB_KEY_braille_dots_35 , .name = "braille_dots_35" }, +{ .code = XKB_KEY_braille_dots_135, .name = "braille_dots_135" }, +{ .code = XKB_KEY_braille_dots_235, .name = "braille_dots_235" }, +{ .code = XKB_KEY_braille_dots_1235, .name = "braille_dots_1235" }, +{ .code = XKB_KEY_braille_dots_45 , .name = "braille_dots_45" }, +{ .code = XKB_KEY_braille_dots_145, .name = "braille_dots_145" }, +{ .code = XKB_KEY_braille_dots_245, .name = "braille_dots_245" }, +{ .code = XKB_KEY_braille_dots_1245, .name = "braille_dots_1245" }, +{ .code = XKB_KEY_braille_dots_345, .name = "braille_dots_345" }, +{ .code = XKB_KEY_braille_dots_1345, .name = "braille_dots_1345" }, +{ .code = XKB_KEY_braille_dots_2345, .name = "braille_dots_2345" }, +{ .code = XKB_KEY_braille_dots_12345, .name = "braille_dots_12345" }, +{ .code = XKB_KEY_braille_dots_6 , .name = "braille_dots_6" }, +{ .code = XKB_KEY_braille_dots_16 , .name = "braille_dots_16" }, +{ .code = XKB_KEY_braille_dots_26 , .name = "braille_dots_26" }, +{ .code = XKB_KEY_braille_dots_126, .name = "braille_dots_126" }, +{ .code = XKB_KEY_braille_dots_36 , .name = "braille_dots_36" }, +{ .code = XKB_KEY_braille_dots_136, .name = "braille_dots_136" }, +{ .code = XKB_KEY_braille_dots_236, .name = "braille_dots_236" }, +{ .code = XKB_KEY_braille_dots_1236, .name = "braille_dots_1236" }, +{ .code = XKB_KEY_braille_dots_46 , .name = "braille_dots_46" }, +{ .code = XKB_KEY_braille_dots_146, .name = "braille_dots_146" }, +{ .code = XKB_KEY_braille_dots_246, .name = "braille_dots_246" }, +{ .code = XKB_KEY_braille_dots_1246, .name = "braille_dots_1246" }, +{ .code = XKB_KEY_braille_dots_346, .name = "braille_dots_346" }, +{ .code = XKB_KEY_braille_dots_1346, .name = "braille_dots_1346" }, +{ .code = XKB_KEY_braille_dots_2346, .name = "braille_dots_2346" }, +{ .code = XKB_KEY_braille_dots_12346, .name = "braille_dots_12346" }, +{ .code = XKB_KEY_braille_dots_56 , .name = "braille_dots_56" }, +{ .code = XKB_KEY_braille_dots_156, .name = "braille_dots_156" }, +{ .code = XKB_KEY_braille_dots_256, .name = "braille_dots_256" }, +{ .code = XKB_KEY_braille_dots_1256, .name = "braille_dots_1256" }, +{ .code = XKB_KEY_braille_dots_356, .name = "braille_dots_356" }, +{ .code = XKB_KEY_braille_dots_1356, .name = "braille_dots_1356" }, +{ .code = XKB_KEY_braille_dots_2356, .name = "braille_dots_2356" }, +{ .code = XKB_KEY_braille_dots_12356, .name = "braille_dots_12356" }, +{ .code = XKB_KEY_braille_dots_456, .name = "braille_dots_456" }, +{ .code = XKB_KEY_braille_dots_1456, .name = "braille_dots_1456" }, +{ .code = XKB_KEY_braille_dots_2456, .name = "braille_dots_2456" }, +{ .code = XKB_KEY_braille_dots_12456, .name = "braille_dots_12456" }, +{ .code = XKB_KEY_braille_dots_3456, .name = "braille_dots_3456" }, +{ .code = XKB_KEY_braille_dots_13456, .name = "braille_dots_13456" }, +{ .code = XKB_KEY_braille_dots_23456, .name = "braille_dots_23456" }, +{ .code = XKB_KEY_braille_dots_123456, .name = "braille_dots_123456" }, +{ .code = XKB_KEY_braille_dots_7 , .name = "braille_dots_7" }, +{ .code = XKB_KEY_braille_dots_17 , .name = "braille_dots_17" }, +{ .code = XKB_KEY_braille_dots_27 , .name = "braille_dots_27" }, +{ .code = XKB_KEY_braille_dots_127, .name = "braille_dots_127" }, +{ .code = XKB_KEY_braille_dots_37 , .name = "braille_dots_37" }, +{ .code = XKB_KEY_braille_dots_137, .name = "braille_dots_137" }, +{ .code = XKB_KEY_braille_dots_237, .name = "braille_dots_237" }, +{ .code = XKB_KEY_braille_dots_1237, .name = "braille_dots_1237" }, +{ .code = XKB_KEY_braille_dots_47 , .name = "braille_dots_47" }, +{ .code = XKB_KEY_braille_dots_147, .name = "braille_dots_147" }, +{ .code = XKB_KEY_braille_dots_247, .name = "braille_dots_247" }, +{ .code = XKB_KEY_braille_dots_1247, .name = "braille_dots_1247" }, +{ .code = XKB_KEY_braille_dots_347, .name = "braille_dots_347" }, +{ .code = XKB_KEY_braille_dots_1347, .name = "braille_dots_1347" }, +{ .code = XKB_KEY_braille_dots_2347, .name = "braille_dots_2347" }, +{ .code = XKB_KEY_braille_dots_12347, .name = "braille_dots_12347" }, +{ .code = XKB_KEY_braille_dots_57 , .name = "braille_dots_57" }, +{ .code = XKB_KEY_braille_dots_157, .name = "braille_dots_157" }, +{ .code = XKB_KEY_braille_dots_257, .name = "braille_dots_257" }, +{ .code = XKB_KEY_braille_dots_1257, .name = "braille_dots_1257" }, +{ .code = XKB_KEY_braille_dots_357, .name = "braille_dots_357" }, +{ .code = XKB_KEY_braille_dots_1357, .name = "braille_dots_1357" }, +{ .code = XKB_KEY_braille_dots_2357, .name = "braille_dots_2357" }, +{ .code = XKB_KEY_braille_dots_12357, .name = "braille_dots_12357" }, +{ .code = XKB_KEY_braille_dots_457, .name = "braille_dots_457" }, +{ .code = XKB_KEY_braille_dots_1457, .name = "braille_dots_1457" }, +{ .code = XKB_KEY_braille_dots_2457, .name = "braille_dots_2457" }, +{ .code = XKB_KEY_braille_dots_12457, .name = "braille_dots_12457" }, +{ .code = XKB_KEY_braille_dots_3457, .name = "braille_dots_3457" }, +{ .code = XKB_KEY_braille_dots_13457, .name = "braille_dots_13457" }, +{ .code = XKB_KEY_braille_dots_23457, .name = "braille_dots_23457" }, +{ .code = XKB_KEY_braille_dots_123457, .name = "braille_dots_123457" }, +{ .code = XKB_KEY_braille_dots_67 , .name = "braille_dots_67" }, +{ .code = XKB_KEY_braille_dots_167, .name = "braille_dots_167" }, +{ .code = XKB_KEY_braille_dots_267, .name = "braille_dots_267" }, +{ .code = XKB_KEY_braille_dots_1267, .name = "braille_dots_1267" }, +{ .code = XKB_KEY_braille_dots_367, .name = "braille_dots_367" }, +{ .code = XKB_KEY_braille_dots_1367, .name = "braille_dots_1367" }, +{ .code = XKB_KEY_braille_dots_2367, .name = "braille_dots_2367" }, +{ .code = XKB_KEY_braille_dots_12367, .name = "braille_dots_12367" }, +{ .code = XKB_KEY_braille_dots_467, .name = "braille_dots_467" }, +{ .code = XKB_KEY_braille_dots_1467, .name = "braille_dots_1467" }, +{ .code = XKB_KEY_braille_dots_2467, .name = "braille_dots_2467" }, +{ .code = XKB_KEY_braille_dots_12467, .name = "braille_dots_12467" }, +{ .code = XKB_KEY_braille_dots_3467, .name = "braille_dots_3467" }, +{ .code = XKB_KEY_braille_dots_13467, .name = "braille_dots_13467" }, +{ .code = XKB_KEY_braille_dots_23467, .name = "braille_dots_23467" }, +{ .code = XKB_KEY_braille_dots_123467, .name = "braille_dots_123467" }, +{ .code = XKB_KEY_braille_dots_567, .name = "braille_dots_567" }, +{ .code = XKB_KEY_braille_dots_1567, .name = "braille_dots_1567" }, +{ .code = XKB_KEY_braille_dots_2567, .name = "braille_dots_2567" }, +{ .code = XKB_KEY_braille_dots_12567, .name = "braille_dots_12567" }, +{ .code = XKB_KEY_braille_dots_3567, .name = "braille_dots_3567" }, +{ .code = XKB_KEY_braille_dots_13567, .name = "braille_dots_13567" }, +{ .code = XKB_KEY_braille_dots_23567, .name = "braille_dots_23567" }, +{ .code = XKB_KEY_braille_dots_123567, .name = "braille_dots_123567" }, +{ .code = XKB_KEY_braille_dots_4567, .name = "braille_dots_4567" }, +{ .code = XKB_KEY_braille_dots_14567, .name = "braille_dots_14567" }, +{ .code = XKB_KEY_braille_dots_24567, .name = "braille_dots_24567" }, +{ .code = XKB_KEY_braille_dots_124567, .name = "braille_dots_124567" }, +{ .code = XKB_KEY_braille_dots_34567, .name = "braille_dots_34567" }, +{ .code = XKB_KEY_braille_dots_134567, .name = "braille_dots_134567" }, +{ .code = XKB_KEY_braille_dots_234567, .name = "braille_dots_234567" }, +{ .code = XKB_KEY_braille_dots_1234567, .name = "braille_dots_1234567" }, +{ .code = XKB_KEY_braille_dots_8 , .name = "braille_dots_8" }, +{ .code = XKB_KEY_braille_dots_18 , .name = "braille_dots_18" }, +{ .code = XKB_KEY_braille_dots_28 , .name = "braille_dots_28" }, +{ .code = XKB_KEY_braille_dots_128, .name = "braille_dots_128" }, +{ .code = XKB_KEY_braille_dots_38 , .name = "braille_dots_38" }, +{ .code = XKB_KEY_braille_dots_138, .name = "braille_dots_138" }, +{ .code = XKB_KEY_braille_dots_238, .name = "braille_dots_238" }, +{ .code = XKB_KEY_braille_dots_1238, .name = "braille_dots_1238" }, +{ .code = XKB_KEY_braille_dots_48 , .name = "braille_dots_48" }, +{ .code = XKB_KEY_braille_dots_148, .name = "braille_dots_148" }, +{ .code = XKB_KEY_braille_dots_248, .name = "braille_dots_248" }, +{ .code = XKB_KEY_braille_dots_1248, .name = "braille_dots_1248" }, +{ .code = XKB_KEY_braille_dots_348, .name = "braille_dots_348" }, +{ .code = XKB_KEY_braille_dots_1348, .name = "braille_dots_1348" }, +{ .code = XKB_KEY_braille_dots_2348, .name = "braille_dots_2348" }, +{ .code = XKB_KEY_braille_dots_12348, .name = "braille_dots_12348" }, +{ .code = XKB_KEY_braille_dots_58 , .name = "braille_dots_58" }, +{ .code = XKB_KEY_braille_dots_158, .name = "braille_dots_158" }, +{ .code = XKB_KEY_braille_dots_258, .name = "braille_dots_258" }, +{ .code = XKB_KEY_braille_dots_1258, .name = "braille_dots_1258" }, +{ .code = XKB_KEY_braille_dots_358, .name = "braille_dots_358" }, +{ .code = XKB_KEY_braille_dots_1358, .name = "braille_dots_1358" }, +{ .code = XKB_KEY_braille_dots_2358, .name = "braille_dots_2358" }, +{ .code = XKB_KEY_braille_dots_12358, .name = "braille_dots_12358" }, +{ .code = XKB_KEY_braille_dots_458, .name = "braille_dots_458" }, +{ .code = XKB_KEY_braille_dots_1458, .name = "braille_dots_1458" }, +{ .code = XKB_KEY_braille_dots_2458, .name = "braille_dots_2458" }, +{ .code = XKB_KEY_braille_dots_12458, .name = "braille_dots_12458" }, +{ .code = XKB_KEY_braille_dots_3458, .name = "braille_dots_3458" }, +{ .code = XKB_KEY_braille_dots_13458, .name = "braille_dots_13458" }, +{ .code = XKB_KEY_braille_dots_23458, .name = "braille_dots_23458" }, +{ .code = XKB_KEY_braille_dots_123458, .name = "braille_dots_123458" }, +{ .code = XKB_KEY_braille_dots_68 , .name = "braille_dots_68" }, +{ .code = XKB_KEY_braille_dots_168, .name = "braille_dots_168" }, +{ .code = XKB_KEY_braille_dots_268, .name = "braille_dots_268" }, +{ .code = XKB_KEY_braille_dots_1268, .name = "braille_dots_1268" }, +{ .code = XKB_KEY_braille_dots_368, .name = "braille_dots_368" }, +{ .code = XKB_KEY_braille_dots_1368, .name = "braille_dots_1368" }, +{ .code = XKB_KEY_braille_dots_2368, .name = "braille_dots_2368" }, +{ .code = XKB_KEY_braille_dots_12368, .name = "braille_dots_12368" }, +{ .code = XKB_KEY_braille_dots_468, .name = "braille_dots_468" }, +{ .code = XKB_KEY_braille_dots_1468, .name = "braille_dots_1468" }, +{ .code = XKB_KEY_braille_dots_2468, .name = "braille_dots_2468" }, +{ .code = XKB_KEY_braille_dots_12468, .name = "braille_dots_12468" }, +{ .code = XKB_KEY_braille_dots_3468, .name = "braille_dots_3468" }, +{ .code = XKB_KEY_braille_dots_13468, .name = "braille_dots_13468" }, +{ .code = XKB_KEY_braille_dots_23468, .name = "braille_dots_23468" }, +{ .code = XKB_KEY_braille_dots_123468, .name = "braille_dots_123468" }, +{ .code = XKB_KEY_braille_dots_568, .name = "braille_dots_568" }, +{ .code = XKB_KEY_braille_dots_1568, .name = "braille_dots_1568" }, +{ .code = XKB_KEY_braille_dots_2568, .name = "braille_dots_2568" }, +{ .code = XKB_KEY_braille_dots_12568, .name = "braille_dots_12568" }, +{ .code = XKB_KEY_braille_dots_3568, .name = "braille_dots_3568" }, +{ .code = XKB_KEY_braille_dots_13568, .name = "braille_dots_13568" }, +{ .code = XKB_KEY_braille_dots_23568, .name = "braille_dots_23568" }, +{ .code = XKB_KEY_braille_dots_123568, .name = "braille_dots_123568" }, +{ .code = XKB_KEY_braille_dots_4568, .name = "braille_dots_4568" }, +{ .code = XKB_KEY_braille_dots_14568, .name = "braille_dots_14568" }, +{ .code = XKB_KEY_braille_dots_24568, .name = "braille_dots_24568" }, +{ .code = XKB_KEY_braille_dots_124568, .name = "braille_dots_124568" }, +{ .code = XKB_KEY_braille_dots_34568, .name = "braille_dots_34568" }, +{ .code = XKB_KEY_braille_dots_134568, .name = "braille_dots_134568" }, +{ .code = XKB_KEY_braille_dots_234568, .name = "braille_dots_234568" }, +{ .code = XKB_KEY_braille_dots_1234568, .name = "braille_dots_1234568" }, +{ .code = XKB_KEY_braille_dots_78 , .name = "braille_dots_78" }, +{ .code = XKB_KEY_braille_dots_178, .name = "braille_dots_178" }, +{ .code = XKB_KEY_braille_dots_278, .name = "braille_dots_278" }, +{ .code = XKB_KEY_braille_dots_1278, .name = "braille_dots_1278" }, +{ .code = XKB_KEY_braille_dots_378, .name = "braille_dots_378" }, +{ .code = XKB_KEY_braille_dots_1378, .name = "braille_dots_1378" }, +{ .code = XKB_KEY_braille_dots_2378, .name = "braille_dots_2378" }, +{ .code = XKB_KEY_braille_dots_12378, .name = "braille_dots_12378" }, +{ .code = XKB_KEY_braille_dots_478, .name = "braille_dots_478" }, +{ .code = XKB_KEY_braille_dots_1478, .name = "braille_dots_1478" }, +{ .code = XKB_KEY_braille_dots_2478, .name = "braille_dots_2478" }, +{ .code = XKB_KEY_braille_dots_12478, .name = "braille_dots_12478" }, +{ .code = XKB_KEY_braille_dots_3478, .name = "braille_dots_3478" }, +{ .code = XKB_KEY_braille_dots_13478, .name = "braille_dots_13478" }, +{ .code = XKB_KEY_braille_dots_23478, .name = "braille_dots_23478" }, +{ .code = XKB_KEY_braille_dots_123478, .name = "braille_dots_123478" }, +{ .code = XKB_KEY_braille_dots_578, .name = "braille_dots_578" }, +{ .code = XKB_KEY_braille_dots_1578, .name = "braille_dots_1578" }, +{ .code = XKB_KEY_braille_dots_2578, .name = "braille_dots_2578" }, +{ .code = XKB_KEY_braille_dots_12578, .name = "braille_dots_12578" }, +{ .code = XKB_KEY_braille_dots_3578, .name = "braille_dots_3578" }, +{ .code = XKB_KEY_braille_dots_13578, .name = "braille_dots_13578" }, +{ .code = XKB_KEY_braille_dots_23578, .name = "braille_dots_23578" }, +{ .code = XKB_KEY_braille_dots_123578, .name = "braille_dots_123578" }, +{ .code = XKB_KEY_braille_dots_4578, .name = "braille_dots_4578" }, +{ .code = XKB_KEY_braille_dots_14578, .name = "braille_dots_14578" }, +{ .code = XKB_KEY_braille_dots_24578, .name = "braille_dots_24578" }, +{ .code = XKB_KEY_braille_dots_124578, .name = "braille_dots_124578" }, +{ .code = XKB_KEY_braille_dots_34578, .name = "braille_dots_34578" }, +{ .code = XKB_KEY_braille_dots_134578, .name = "braille_dots_134578" }, +{ .code = XKB_KEY_braille_dots_234578, .name = "braille_dots_234578" }, +{ .code = XKB_KEY_braille_dots_1234578, .name = "braille_dots_1234578" }, +{ .code = XKB_KEY_braille_dots_678, .name = "braille_dots_678" }, +{ .code = XKB_KEY_braille_dots_1678, .name = "braille_dots_1678" }, +{ .code = XKB_KEY_braille_dots_2678, .name = "braille_dots_2678" }, +{ .code = XKB_KEY_braille_dots_12678, .name = "braille_dots_12678" }, +{ .code = XKB_KEY_braille_dots_3678, .name = "braille_dots_3678" }, +{ .code = XKB_KEY_braille_dots_13678, .name = "braille_dots_13678" }, +{ .code = XKB_KEY_braille_dots_23678, .name = "braille_dots_23678" }, +{ .code = XKB_KEY_braille_dots_123678, .name = "braille_dots_123678" }, +{ .code = XKB_KEY_braille_dots_4678, .name = "braille_dots_4678" }, +{ .code = XKB_KEY_braille_dots_14678, .name = "braille_dots_14678" }, +{ .code = XKB_KEY_braille_dots_24678, .name = "braille_dots_24678" }, +{ .code = XKB_KEY_braille_dots_124678, .name = "braille_dots_124678" }, +{ .code = XKB_KEY_braille_dots_34678, .name = "braille_dots_34678" }, +{ .code = XKB_KEY_braille_dots_134678, .name = "braille_dots_134678" }, +{ .code = XKB_KEY_braille_dots_234678, .name = "braille_dots_234678" }, +{ .code = XKB_KEY_braille_dots_1234678, .name = "braille_dots_1234678" }, +{ .code = XKB_KEY_braille_dots_5678, .name = "braille_dots_5678" }, +{ .code = XKB_KEY_braille_dots_15678, .name = "braille_dots_15678" }, +{ .code = XKB_KEY_braille_dots_25678, .name = "braille_dots_25678" }, +{ .code = XKB_KEY_braille_dots_125678, .name = "braille_dots_125678" }, +{ .code = XKB_KEY_braille_dots_35678, .name = "braille_dots_35678" }, +{ .code = XKB_KEY_braille_dots_135678, .name = "braille_dots_135678" }, +{ .code = XKB_KEY_braille_dots_235678, .name = "braille_dots_235678" }, +{ .code = XKB_KEY_braille_dots_1235678, .name = "braille_dots_1235678" }, +{ .code = XKB_KEY_braille_dots_45678, .name = "braille_dots_45678" }, +{ .code = XKB_KEY_braille_dots_145678, .name = "braille_dots_145678" }, +{ .code = XKB_KEY_braille_dots_245678, .name = "braille_dots_245678" }, +{ .code = XKB_KEY_braille_dots_1245678, .name = "braille_dots_1245678" }, +{ .code = XKB_KEY_braille_dots_345678, .name = "braille_dots_345678" }, +{ .code = XKB_KEY_braille_dots_1345678, .name = "braille_dots_1345678" }, +{ .code = XKB_KEY_braille_dots_2345678, .name = "braille_dots_2345678" }, +{ .code = XKB_KEY_braille_dots_12345678, .name = "braille_dots_12345678" }, +{ .code = XKB_KEY_Sinh_ng , .name = "Sinh_ng" }, +{ .code = XKB_KEY_Sinh_h2 , .name = "Sinh_h2" }, +{ .code = XKB_KEY_Sinh_a , .name = "Sinh_a" }, +{ .code = XKB_KEY_Sinh_aa , .name = "Sinh_aa" }, +{ .code = XKB_KEY_Sinh_ae , .name = "Sinh_ae" }, +{ .code = XKB_KEY_Sinh_aee , .name = "Sinh_aee" }, +{ .code = XKB_KEY_Sinh_i , .name = "Sinh_i" }, +{ .code = XKB_KEY_Sinh_ii , .name = "Sinh_ii" }, +{ .code = XKB_KEY_Sinh_u , .name = "Sinh_u" }, +{ .code = XKB_KEY_Sinh_uu , .name = "Sinh_uu" }, +{ .code = XKB_KEY_Sinh_ri , .name = "Sinh_ri" }, +{ .code = XKB_KEY_Sinh_rii , .name = "Sinh_rii" }, +{ .code = XKB_KEY_Sinh_lu , .name = "Sinh_lu" }, +{ .code = XKB_KEY_Sinh_luu , .name = "Sinh_luu" }, +{ .code = XKB_KEY_Sinh_e , .name = "Sinh_e" }, +{ .code = XKB_KEY_Sinh_ee , .name = "Sinh_ee" }, +{ .code = XKB_KEY_Sinh_ai , .name = "Sinh_ai" }, +{ .code = XKB_KEY_Sinh_o , .name = "Sinh_o" }, +{ .code = XKB_KEY_Sinh_oo , .name = "Sinh_oo" }, +{ .code = XKB_KEY_Sinh_au , .name = "Sinh_au" }, +{ .code = XKB_KEY_Sinh_ka , .name = "Sinh_ka" }, +{ .code = XKB_KEY_Sinh_kha , .name = "Sinh_kha" }, +{ .code = XKB_KEY_Sinh_ga , .name = "Sinh_ga" }, +{ .code = XKB_KEY_Sinh_gha , .name = "Sinh_gha" }, +{ .code = XKB_KEY_Sinh_ng2 , .name = "Sinh_ng2" }, +{ .code = XKB_KEY_Sinh_nga , .name = "Sinh_nga" }, +{ .code = XKB_KEY_Sinh_ca , .name = "Sinh_ca" }, +{ .code = XKB_KEY_Sinh_cha , .name = "Sinh_cha" }, +{ .code = XKB_KEY_Sinh_ja , .name = "Sinh_ja" }, +{ .code = XKB_KEY_Sinh_jha , .name = "Sinh_jha" }, +{ .code = XKB_KEY_Sinh_nya , .name = "Sinh_nya" }, +{ .code = XKB_KEY_Sinh_jnya , .name = "Sinh_jnya" }, +{ .code = XKB_KEY_Sinh_nja , .name = "Sinh_nja" }, +{ .code = XKB_KEY_Sinh_tta , .name = "Sinh_tta" }, +{ .code = XKB_KEY_Sinh_ttha , .name = "Sinh_ttha" }, +{ .code = XKB_KEY_Sinh_dda , .name = "Sinh_dda" }, +{ .code = XKB_KEY_Sinh_ddha , .name = "Sinh_ddha" }, +{ .code = XKB_KEY_Sinh_nna , .name = "Sinh_nna" }, +{ .code = XKB_KEY_Sinh_ndda , .name = "Sinh_ndda" }, +{ .code = XKB_KEY_Sinh_tha , .name = "Sinh_tha" }, +{ .code = XKB_KEY_Sinh_thha , .name = "Sinh_thha" }, +{ .code = XKB_KEY_Sinh_dha , .name = "Sinh_dha" }, +{ .code = XKB_KEY_Sinh_dhha , .name = "Sinh_dhha" }, +{ .code = XKB_KEY_Sinh_na , .name = "Sinh_na" }, +{ .code = XKB_KEY_Sinh_ndha , .name = "Sinh_ndha" }, +{ .code = XKB_KEY_Sinh_pa , .name = "Sinh_pa" }, +{ .code = XKB_KEY_Sinh_pha , .name = "Sinh_pha" }, +{ .code = XKB_KEY_Sinh_ba , .name = "Sinh_ba" }, +{ .code = XKB_KEY_Sinh_bha , .name = "Sinh_bha" }, +{ .code = XKB_KEY_Sinh_ma , .name = "Sinh_ma" }, +{ .code = XKB_KEY_Sinh_mba , .name = "Sinh_mba" }, +{ .code = XKB_KEY_Sinh_ya , .name = "Sinh_ya" }, +{ .code = XKB_KEY_Sinh_ra , .name = "Sinh_ra" }, +{ .code = XKB_KEY_Sinh_la , .name = "Sinh_la" }, +{ .code = XKB_KEY_Sinh_va , .name = "Sinh_va" }, +{ .code = XKB_KEY_Sinh_sha , .name = "Sinh_sha" }, +{ .code = XKB_KEY_Sinh_ssha , .name = "Sinh_ssha" }, +{ .code = XKB_KEY_Sinh_sa , .name = "Sinh_sa" }, +{ .code = XKB_KEY_Sinh_ha , .name = "Sinh_ha" }, +{ .code = XKB_KEY_Sinh_lla , .name = "Sinh_lla" }, +{ .code = XKB_KEY_Sinh_fa , .name = "Sinh_fa" }, +{ .code = XKB_KEY_Sinh_al , .name = "Sinh_al" }, +{ .code = XKB_KEY_Sinh_aa2 , .name = "Sinh_aa2" }, +{ .code = XKB_KEY_Sinh_ae2 , .name = "Sinh_ae2" }, +{ .code = XKB_KEY_Sinh_aee2 , .name = "Sinh_aee2" }, +{ .code = XKB_KEY_Sinh_i2 , .name = "Sinh_i2" }, +{ .code = XKB_KEY_Sinh_ii2 , .name = "Sinh_ii2" }, +{ .code = XKB_KEY_Sinh_u2 , .name = "Sinh_u2" }, +{ .code = XKB_KEY_Sinh_uu2 , .name = "Sinh_uu2" }, +{ .code = XKB_KEY_Sinh_ru2 , .name = "Sinh_ru2" }, +{ .code = XKB_KEY_Sinh_e2 , .name = "Sinh_e2" }, +{ .code = XKB_KEY_Sinh_ee2 , .name = "Sinh_ee2" }, +{ .code = XKB_KEY_Sinh_ai2 , .name = "Sinh_ai2" }, +{ .code = XKB_KEY_Sinh_o2 , .name = "Sinh_o2" }, +{ .code = XKB_KEY_Sinh_oo2 , .name = "Sinh_oo2" }, +{ .code = XKB_KEY_Sinh_au2 , .name = "Sinh_au2" }, +{ .code = XKB_KEY_Sinh_lu2 , .name = "Sinh_lu2" }, +{ .code = XKB_KEY_Sinh_ruu2 , .name = "Sinh_ruu2" }, +{ .code = XKB_KEY_Sinh_luu2 , .name = "Sinh_luu2" }, +{ .code = XKB_KEY_Sinh_kunddaliya , .name = "Sinh_kunddaliya" }, +{ .code = XKB_KEY_XF86ModeLock , .name = "XF86ModeLock" }, +{ .code = XKB_KEY_XF86MonBrightnessUp, .name = "XF86MonBrightnessUp" }, +{ .code = XKB_KEY_XF86MonBrightnessDown, .name = "XF86MonBrightnessDown" }, +{ .code = XKB_KEY_XF86KbdLightOnOff, .name = "XF86KbdLightOnOff" }, +{ .code = XKB_KEY_XF86KbdBrightnessUp, .name = "XF86KbdBrightnessUp" }, +{ .code = XKB_KEY_XF86KbdBrightnessDown, .name = "XF86KbdBrightnessDown" }, +{ .code = XKB_KEY_XF86Standby , .name = "XF86Standby" }, +{ .code = XKB_KEY_XF86AudioLowerVolume, .name = "XF86AudioLowerVolume" }, +{ .code = XKB_KEY_XF86AudioMute , .name = "XF86AudioMute" }, +{ .code = XKB_KEY_XF86AudioRaiseVolume, .name = "XF86AudioRaiseVolume" }, +{ .code = XKB_KEY_XF86AudioPlay , .name = "XF86AudioPlay" }, +{ .code = XKB_KEY_XF86AudioStop , .name = "XF86AudioStop" }, +{ .code = XKB_KEY_XF86AudioPrev , .name = "XF86AudioPrev" }, +{ .code = XKB_KEY_XF86AudioNext , .name = "XF86AudioNext" }, +{ .code = XKB_KEY_XF86HomePage , .name = "XF86HomePage" }, +{ .code = XKB_KEY_XF86Mail , .name = "XF86Mail" }, +{ .code = XKB_KEY_XF86Start , .name = "XF86Start" }, +{ .code = XKB_KEY_XF86Search , .name = "XF86Search" }, +{ .code = XKB_KEY_XF86AudioRecord , .name = "XF86AudioRecord" }, +{ .code = XKB_KEY_XF86Calculator , .name = "XF86Calculator" }, +{ .code = XKB_KEY_XF86Memo , .name = "XF86Memo" }, +{ .code = XKB_KEY_XF86ToDoList , .name = "XF86ToDoList" }, +{ .code = XKB_KEY_XF86Calendar , .name = "XF86Calendar" }, +{ .code = XKB_KEY_XF86PowerDown , .name = "XF86PowerDown" }, +{ .code = XKB_KEY_XF86ContrastAdjust, .name = "XF86ContrastAdjust" }, +{ .code = XKB_KEY_XF86RockerUp , .name = "XF86RockerUp" }, +{ .code = XKB_KEY_XF86RockerDown , .name = "XF86RockerDown" }, +{ .code = XKB_KEY_XF86RockerEnter , .name = "XF86RockerEnter" }, +{ .code = XKB_KEY_XF86Back , .name = "XF86Back" }, +{ .code = XKB_KEY_XF86Forward , .name = "XF86Forward" }, +{ .code = XKB_KEY_XF86Stop , .name = "XF86Stop" }, +{ .code = XKB_KEY_XF86Refresh , .name = "XF86Refresh" }, +{ .code = XKB_KEY_XF86PowerOff , .name = "XF86PowerOff" }, +{ .code = XKB_KEY_XF86WakeUp , .name = "XF86WakeUp" }, +{ .code = XKB_KEY_XF86Eject , .name = "XF86Eject" }, +{ .code = XKB_KEY_XF86ScreenSaver , .name = "XF86ScreenSaver" }, +{ .code = XKB_KEY_XF86WWW , .name = "XF86WWW" }, +{ .code = XKB_KEY_XF86Sleep , .name = "XF86Sleep" }, +{ .code = XKB_KEY_XF86Favorites , .name = "XF86Favorites" }, +{ .code = XKB_KEY_XF86AudioPause , .name = "XF86AudioPause" }, +{ .code = XKB_KEY_XF86AudioMedia , .name = "XF86AudioMedia" }, +{ .code = XKB_KEY_XF86MyComputer , .name = "XF86MyComputer" }, +{ .code = XKB_KEY_XF86VendorHome , .name = "XF86VendorHome" }, +{ .code = XKB_KEY_XF86LightBulb , .name = "XF86LightBulb" }, +{ .code = XKB_KEY_XF86Shop , .name = "XF86Shop" }, +{ .code = XKB_KEY_XF86History , .name = "XF86History" }, +{ .code = XKB_KEY_XF86OpenURL , .name = "XF86OpenURL" }, +{ .code = XKB_KEY_XF86AddFavorite , .name = "XF86AddFavorite" }, +{ .code = XKB_KEY_XF86HotLinks , .name = "XF86HotLinks" }, +{ .code = XKB_KEY_XF86BrightnessAdjust, .name = "XF86BrightnessAdjust" }, +{ .code = XKB_KEY_XF86Finance , .name = "XF86Finance" }, +{ .code = XKB_KEY_XF86Community , .name = "XF86Community" }, +{ .code = XKB_KEY_XF86AudioRewind , .name = "XF86AudioRewind" }, +{ .code = XKB_KEY_XF86BackForward , .name = "XF86BackForward" }, +{ .code = XKB_KEY_XF86Launch0 , .name = "XF86Launch0" }, +{ .code = XKB_KEY_XF86Launch1 , .name = "XF86Launch1" }, +{ .code = XKB_KEY_XF86Launch2 , .name = "XF86Launch2" }, +{ .code = XKB_KEY_XF86Launch3 , .name = "XF86Launch3" }, +{ .code = XKB_KEY_XF86Launch4 , .name = "XF86Launch4" }, +{ .code = XKB_KEY_XF86Launch5 , .name = "XF86Launch5" }, +{ .code = XKB_KEY_XF86Launch6 , .name = "XF86Launch6" }, +{ .code = XKB_KEY_XF86Launch7 , .name = "XF86Launch7" }, +{ .code = XKB_KEY_XF86Launch8 , .name = "XF86Launch8" }, +{ .code = XKB_KEY_XF86Launch9 , .name = "XF86Launch9" }, +{ .code = XKB_KEY_XF86LaunchA , .name = "XF86LaunchA" }, +{ .code = XKB_KEY_XF86LaunchB , .name = "XF86LaunchB" }, +{ .code = XKB_KEY_XF86LaunchC , .name = "XF86LaunchC" }, +{ .code = XKB_KEY_XF86LaunchD , .name = "XF86LaunchD" }, +{ .code = XKB_KEY_XF86LaunchE , .name = "XF86LaunchE" }, +{ .code = XKB_KEY_XF86LaunchF , .name = "XF86LaunchF" }, +{ .code = XKB_KEY_XF86ApplicationLeft, .name = "XF86ApplicationLeft" }, +{ .code = XKB_KEY_XF86ApplicationRight, .name = "XF86ApplicationRight" }, +{ .code = XKB_KEY_XF86Book , .name = "XF86Book" }, +{ .code = XKB_KEY_XF86CD , .name = "XF86CD" }, +{ .code = XKB_KEY_XF86Calculater , .name = "XF86Calculater" }, +{ .code = XKB_KEY_XF86Clear , .name = "XF86Clear" }, +{ .code = XKB_KEY_XF86Close , .name = "XF86Close" }, +{ .code = XKB_KEY_XF86Copy , .name = "XF86Copy" }, +{ .code = XKB_KEY_XF86Cut , .name = "XF86Cut" }, +{ .code = XKB_KEY_XF86Display , .name = "XF86Display" }, +{ .code = XKB_KEY_XF86DOS , .name = "XF86DOS" }, +{ .code = XKB_KEY_XF86Documents , .name = "XF86Documents" }, +{ .code = XKB_KEY_XF86Excel , .name = "XF86Excel" }, +{ .code = XKB_KEY_XF86Explorer , .name = "XF86Explorer" }, +{ .code = XKB_KEY_XF86Game , .name = "XF86Game" }, +{ .code = XKB_KEY_XF86Go , .name = "XF86Go" }, +{ .code = XKB_KEY_XF86iTouch , .name = "XF86iTouch" }, +{ .code = XKB_KEY_XF86LogOff , .name = "XF86LogOff" }, +{ .code = XKB_KEY_XF86Market , .name = "XF86Market" }, +{ .code = XKB_KEY_XF86Meeting , .name = "XF86Meeting" }, +{ .code = XKB_KEY_XF86MenuKB , .name = "XF86MenuKB" }, +{ .code = XKB_KEY_XF86MenuPB , .name = "XF86MenuPB" }, +{ .code = XKB_KEY_XF86MySites , .name = "XF86MySites" }, +{ .code = XKB_KEY_XF86New , .name = "XF86New" }, +{ .code = XKB_KEY_XF86News , .name = "XF86News" }, +{ .code = XKB_KEY_XF86OfficeHome , .name = "XF86OfficeHome" }, +{ .code = XKB_KEY_XF86Open , .name = "XF86Open" }, +{ .code = XKB_KEY_XF86Option , .name = "XF86Option" }, +{ .code = XKB_KEY_XF86Paste , .name = "XF86Paste" }, +{ .code = XKB_KEY_XF86Phone , .name = "XF86Phone" }, +{ .code = XKB_KEY_XF86Q , .name = "XF86Q" }, +{ .code = XKB_KEY_XF86Reply , .name = "XF86Reply" }, +{ .code = XKB_KEY_XF86Reload , .name = "XF86Reload" }, +{ .code = XKB_KEY_XF86RotateWindows, .name = "XF86RotateWindows" }, +{ .code = XKB_KEY_XF86RotationPB , .name = "XF86RotationPB" }, +{ .code = XKB_KEY_XF86RotationKB , .name = "XF86RotationKB" }, +{ .code = XKB_KEY_XF86Save , .name = "XF86Save" }, +{ .code = XKB_KEY_XF86ScrollUp , .name = "XF86ScrollUp" }, +{ .code = XKB_KEY_XF86ScrollDown , .name = "XF86ScrollDown" }, +{ .code = XKB_KEY_XF86ScrollClick , .name = "XF86ScrollClick" }, +{ .code = XKB_KEY_XF86Send , .name = "XF86Send" }, +{ .code = XKB_KEY_XF86Spell , .name = "XF86Spell" }, +{ .code = XKB_KEY_XF86SplitScreen , .name = "XF86SplitScreen" }, +{ .code = XKB_KEY_XF86Support , .name = "XF86Support" }, +{ .code = XKB_KEY_XF86TaskPane , .name = "XF86TaskPane" }, +{ .code = XKB_KEY_XF86Terminal , .name = "XF86Terminal" }, +{ .code = XKB_KEY_XF86Tools , .name = "XF86Tools" }, +{ .code = XKB_KEY_XF86Travel , .name = "XF86Travel" }, +{ .code = XKB_KEY_XF86UserPB , .name = "XF86UserPB" }, +{ .code = XKB_KEY_XF86User1KB , .name = "XF86User1KB" }, +{ .code = XKB_KEY_XF86User2KB , .name = "XF86User2KB" }, +{ .code = XKB_KEY_XF86Video , .name = "XF86Video" }, +{ .code = XKB_KEY_XF86WheelButton , .name = "XF86WheelButton" }, +{ .code = XKB_KEY_XF86Word , .name = "XF86Word" }, +{ .code = XKB_KEY_XF86Xfer , .name = "XF86Xfer" }, +{ .code = XKB_KEY_XF86ZoomIn , .name = "XF86ZoomIn" }, +{ .code = XKB_KEY_XF86ZoomOut , .name = "XF86ZoomOut" }, +{ .code = XKB_KEY_XF86Away , .name = "XF86Away" }, +{ .code = XKB_KEY_XF86Messenger , .name = "XF86Messenger" }, +{ .code = XKB_KEY_XF86WebCam , .name = "XF86WebCam" }, +{ .code = XKB_KEY_XF86MailForward , .name = "XF86MailForward" }, +{ .code = XKB_KEY_XF86Pictures , .name = "XF86Pictures" }, +{ .code = XKB_KEY_XF86Music , .name = "XF86Music" }, +{ .code = XKB_KEY_XF86Battery , .name = "XF86Battery" }, +{ .code = XKB_KEY_XF86Bluetooth , .name = "XF86Bluetooth" }, +{ .code = XKB_KEY_XF86WLAN , .name = "XF86WLAN" }, +{ .code = XKB_KEY_XF86UWB , .name = "XF86UWB" }, +{ .code = XKB_KEY_XF86AudioForward, .name = "XF86AudioForward" }, +{ .code = XKB_KEY_XF86AudioRepeat , .name = "XF86AudioRepeat" }, +{ .code = XKB_KEY_XF86AudioRandomPlay, .name = "XF86AudioRandomPlay" }, +{ .code = XKB_KEY_XF86Subtitle , .name = "XF86Subtitle" }, +{ .code = XKB_KEY_XF86AudioCycleTrack, .name = "XF86AudioCycleTrack" }, +{ .code = XKB_KEY_XF86CycleAngle , .name = "XF86CycleAngle" }, +{ .code = XKB_KEY_XF86FrameBack , .name = "XF86FrameBack" }, +{ .code = XKB_KEY_XF86FrameForward, .name = "XF86FrameForward" }, +{ .code = XKB_KEY_XF86Time , .name = "XF86Time" }, +{ .code = XKB_KEY_XF86Select , .name = "XF86Select" }, +{ .code = XKB_KEY_XF86View , .name = "XF86View" }, +{ .code = XKB_KEY_XF86TopMenu , .name = "XF86TopMenu" }, +{ .code = XKB_KEY_XF86Red , .name = "XF86Red" }, +{ .code = XKB_KEY_XF86Green , .name = "XF86Green" }, +{ .code = XKB_KEY_XF86Yellow , .name = "XF86Yellow" }, +{ .code = XKB_KEY_XF86Blue , .name = "XF86Blue" }, +{ .code = XKB_KEY_XF86Suspend , .name = "XF86Suspend" }, +{ .code = XKB_KEY_XF86Hibernate , .name = "XF86Hibernate" }, +{ .code = XKB_KEY_XF86TouchpadToggle, .name = "XF86TouchpadToggle" }, +{ .code = XKB_KEY_XF86TouchpadOn , .name = "XF86TouchpadOn" }, +{ .code = XKB_KEY_XF86TouchpadOff , .name = "XF86TouchpadOff" }, +{ .code = XKB_KEY_XF86AudioMicMute, .name = "XF86AudioMicMute" }, +{ .code = XKB_KEY_XF86Switch_VT_1 , .name = "XF86Switch_VT_1" }, +{ .code = XKB_KEY_XF86Switch_VT_2 , .name = "XF86Switch_VT_2" }, +{ .code = XKB_KEY_XF86Switch_VT_3 , .name = "XF86Switch_VT_3" }, +{ .code = XKB_KEY_XF86Switch_VT_4 , .name = "XF86Switch_VT_4" }, +{ .code = XKB_KEY_XF86Switch_VT_5 , .name = "XF86Switch_VT_5" }, +{ .code = XKB_KEY_XF86Switch_VT_6 , .name = "XF86Switch_VT_6" }, +{ .code = XKB_KEY_XF86Switch_VT_7 , .name = "XF86Switch_VT_7" }, +{ .code = XKB_KEY_XF86Switch_VT_8 , .name = "XF86Switch_VT_8" }, +{ .code = XKB_KEY_XF86Switch_VT_9 , .name = "XF86Switch_VT_9" }, +{ .code = XKB_KEY_XF86Switch_VT_10, .name = "XF86Switch_VT_10" }, +{ .code = XKB_KEY_XF86Switch_VT_11, .name = "XF86Switch_VT_11" }, +{ .code = XKB_KEY_XF86Switch_VT_12, .name = "XF86Switch_VT_12" }, +{ .code = XKB_KEY_XF86Ungrab , .name = "XF86Ungrab" }, +{ .code = XKB_KEY_XF86ClearGrab , .name = "XF86ClearGrab" }, +{ .code = XKB_KEY_XF86Next_VMode , .name = "XF86Next_VMode" }, +{ .code = XKB_KEY_XF86Prev_VMode , .name = "XF86Prev_VMode" }, +{ .code = XKB_KEY_XF86LogWindowTree, .name = "XF86LogWindowTree" }, +{ .code = XKB_KEY_XF86LogGrabInfo , .name = "XF86LogGrabInfo" }, +{ .code = XKB_KEY_SunFA_Grave , .name = "SunFA_Grave" }, +{ .code = XKB_KEY_SunFA_Circum , .name = "SunFA_Circum" }, +{ .code = XKB_KEY_SunFA_Tilde , .name = "SunFA_Tilde" }, +{ .code = XKB_KEY_SunFA_Acute , .name = "SunFA_Acute" }, +{ .code = XKB_KEY_SunFA_Diaeresis , .name = "SunFA_Diaeresis" }, +{ .code = XKB_KEY_SunFA_Cedilla , .name = "SunFA_Cedilla" }, +{ .code = XKB_KEY_SunF36 , .name = "SunF36" }, +{ .code = XKB_KEY_SunF37 , .name = "SunF37" }, +{ .code = XKB_KEY_SunSys_Req , .name = "SunSys_Req" }, +{ .code = XKB_KEY_SunPrint_Screen , .name = "SunPrint_Screen" }, +{ .code = XKB_KEY_SunCompose , .name = "SunCompose" }, +{ .code = XKB_KEY_SunAltGraph , .name = "SunAltGraph" }, +{ .code = XKB_KEY_SunPageUp , .name = "SunPageUp" }, +{ .code = XKB_KEY_SunPageDown , .name = "SunPageDown" }, +{ .code = XKB_KEY_SunUndo , .name = "SunUndo" }, +{ .code = XKB_KEY_SunAgain , .name = "SunAgain" }, +{ .code = XKB_KEY_SunFind , .name = "SunFind" }, +{ .code = XKB_KEY_SunStop , .name = "SunStop" }, +{ .code = XKB_KEY_SunProps , .name = "SunProps" }, +{ .code = XKB_KEY_SunFront , .name = "SunFront" }, +{ .code = XKB_KEY_SunCopy , .name = "SunCopy" }, +{ .code = XKB_KEY_SunOpen , .name = "SunOpen" }, +{ .code = XKB_KEY_SunPaste , .name = "SunPaste" }, +{ .code = XKB_KEY_SunCut , .name = "SunCut" }, +{ .code = XKB_KEY_SunPowerSwitch , .name = "SunPowerSwitch" }, +{ .code = XKB_KEY_SunAudioLowerVolume, .name = "SunAudioLowerVolume" }, +{ .code = XKB_KEY_SunAudioMute , .name = "SunAudioMute" }, +{ .code = XKB_KEY_SunAudioRaiseVolume, .name = "SunAudioRaiseVolume" }, +{ .code = XKB_KEY_SunVideoDegauss , .name = "SunVideoDegauss" }, +{ .code = XKB_KEY_SunVideoLowerBrightness, .name = "SunVideoLowerBrightness" }, +{ .code = XKB_KEY_SunVideoRaiseBrightness, .name = "SunVideoRaiseBrightness" }, +{ .code = XKB_KEY_SunPowerSwitchShift, .name = "SunPowerSwitchShift" }, +{ .code = XKB_KEY_Dring_accent , .name = "Dring_accent" }, +{ .code = XKB_KEY_Dcircumflex_accent, .name = "Dcircumflex_accent" }, +{ .code = XKB_KEY_Dcedilla_accent , .name = "Dcedilla_accent" }, +{ .code = XKB_KEY_Dacute_accent , .name = "Dacute_accent" }, +{ .code = XKB_KEY_Dgrave_accent , .name = "Dgrave_accent" }, +{ .code = XKB_KEY_Dtilde , .name = "Dtilde" }, +{ .code = XKB_KEY_Ddiaeresis , .name = "Ddiaeresis" }, +{ .code = XKB_KEY_DRemove , .name = "DRemove" }, +{ .code = XKB_KEY_hpClearLine , .name = "hpClearLine" }, +{ .code = XKB_KEY_hpInsertLine , .name = "hpInsertLine" }, +{ .code = XKB_KEY_hpDeleteLine , .name = "hpDeleteLine" }, +{ .code = XKB_KEY_hpInsertChar , .name = "hpInsertChar" }, +{ .code = XKB_KEY_hpDeleteChar , .name = "hpDeleteChar" }, +{ .code = XKB_KEY_hpBackTab , .name = "hpBackTab" }, +{ .code = XKB_KEY_hpKP_BackTab , .name = "hpKP_BackTab" }, +{ .code = XKB_KEY_hpModelock1 , .name = "hpModelock1" }, +{ .code = XKB_KEY_hpModelock2 , .name = "hpModelock2" }, +{ .code = XKB_KEY_hpReset , .name = "hpReset" }, +{ .code = XKB_KEY_hpSystem , .name = "hpSystem" }, +{ .code = XKB_KEY_hpUser , .name = "hpUser" }, +{ .code = XKB_KEY_hpmute_acute , .name = "hpmute_acute" }, +{ .code = XKB_KEY_hpmute_grave , .name = "hpmute_grave" }, +{ .code = XKB_KEY_hpmute_asciicircum, .name = "hpmute_asciicircum" }, +{ .code = XKB_KEY_hpmute_diaeresis, .name = "hpmute_diaeresis" }, +{ .code = XKB_KEY_hpmute_asciitilde, .name = "hpmute_asciitilde" }, +{ .code = XKB_KEY_hplira , .name = "hplira" }, +{ .code = XKB_KEY_hpguilder , .name = "hpguilder" }, +{ .code = XKB_KEY_hpYdiaeresis , .name = "hpYdiaeresis" }, +{ .code = XKB_KEY_hpIO , .name = "hpIO" }, +{ .code = XKB_KEY_hplongminus , .name = "hplongminus" }, +{ .code = XKB_KEY_hpblock , .name = "hpblock" }, +{ .code = XKB_KEY_osfCopy , .name = "osfCopy" }, +{ .code = XKB_KEY_osfCut , .name = "osfCut" }, +{ .code = XKB_KEY_osfPaste , .name = "osfPaste" }, +{ .code = XKB_KEY_osfBackTab , .name = "osfBackTab" }, +{ .code = XKB_KEY_osfBackSpace , .name = "osfBackSpace" }, +{ .code = XKB_KEY_osfClear , .name = "osfClear" }, +{ .code = XKB_KEY_osfEscape , .name = "osfEscape" }, +{ .code = XKB_KEY_osfAddMode , .name = "osfAddMode" }, +{ .code = XKB_KEY_osfPrimaryPaste , .name = "osfPrimaryPaste" }, +{ .code = XKB_KEY_osfQuickPaste , .name = "osfQuickPaste" }, +{ .code = XKB_KEY_osfPageLeft , .name = "osfPageLeft" }, +{ .code = XKB_KEY_osfPageUp , .name = "osfPageUp" }, +{ .code = XKB_KEY_osfPageDown , .name = "osfPageDown" }, +{ .code = XKB_KEY_osfPageRight , .name = "osfPageRight" }, +{ .code = XKB_KEY_osfActivate , .name = "osfActivate" }, +{ .code = XKB_KEY_osfMenuBar , .name = "osfMenuBar" }, +{ .code = XKB_KEY_osfLeft , .name = "osfLeft" }, +{ .code = XKB_KEY_osfUp , .name = "osfUp" }, +{ .code = XKB_KEY_osfRight , .name = "osfRight" }, +{ .code = XKB_KEY_osfDown , .name = "osfDown" }, +{ .code = XKB_KEY_osfEndLine , .name = "osfEndLine" }, +{ .code = XKB_KEY_osfBeginLine , .name = "osfBeginLine" }, +{ .code = XKB_KEY_osfEndData , .name = "osfEndData" }, +{ .code = XKB_KEY_osfBeginData , .name = "osfBeginData" }, +{ .code = XKB_KEY_osfPrevMenu , .name = "osfPrevMenu" }, +{ .code = XKB_KEY_osfNextMenu , .name = "osfNextMenu" }, +{ .code = XKB_KEY_osfPrevField , .name = "osfPrevField" }, +{ .code = XKB_KEY_osfNextField , .name = "osfNextField" }, +{ .code = XKB_KEY_osfSelect , .name = "osfSelect" }, +{ .code = XKB_KEY_osfInsert , .name = "osfInsert" }, +{ .code = XKB_KEY_osfUndo , .name = "osfUndo" }, +{ .code = XKB_KEY_osfMenu , .name = "osfMenu" }, +{ .code = XKB_KEY_osfCancel , .name = "osfCancel" }, +{ .code = XKB_KEY_osfHelp , .name = "osfHelp" }, +{ .code = XKB_KEY_osfSelectAll , .name = "osfSelectAll" }, +{ .code = XKB_KEY_osfDeselectAll , .name = "osfDeselectAll" }, +{ .code = XKB_KEY_osfReselect , .name = "osfReselect" }, +{ .code = XKB_KEY_osfExtend , .name = "osfExtend" }, +{ .code = XKB_KEY_osfRestore , .name = "osfRestore" }, +{ .code = XKB_KEY_osfDelete , .name = "osfDelete" }, +{ .code = XKB_KEY_Reset , .name = "Reset" }, +{ .code = XKB_KEY_System , .name = "System" }, +{ .code = XKB_KEY_User , .name = "User" }, +{ .code = XKB_KEY_ClearLine , .name = "ClearLine" }, +{ .code = XKB_KEY_InsertLine , .name = "InsertLine" }, +{ .code = XKB_KEY_DeleteLine , .name = "DeleteLine" }, +{ .code = XKB_KEY_InsertChar , .name = "InsertChar" }, +{ .code = XKB_KEY_DeleteChar , .name = "DeleteChar" }, +{ .code = XKB_KEY_BackTab , .name = "BackTab" }, +{ .code = XKB_KEY_KP_BackTab , .name = "KP_BackTab" }, +{ .code = XKB_KEY_Ext16bit_L , .name = "Ext16bit_L" }, +{ .code = XKB_KEY_Ext16bit_R , .name = "Ext16bit_R" }, +{ .code = XKB_KEY_mute_acute , .name = "mute_acute" }, +{ .code = XKB_KEY_mute_grave , .name = "mute_grave" }, +{ .code = XKB_KEY_mute_asciicircum, .name = "mute_asciicircum" }, +{ .code = XKB_KEY_mute_diaeresis , .name = "mute_diaeresis" }, +{ .code = XKB_KEY_mute_asciitilde , .name = "mute_asciitilde" }, +{ .code = XKB_KEY_lira , .name = "lira" }, +{ .code = XKB_KEY_guilder , .name = "guilder" }, +{ .code = XKB_KEY_IO , .name = "IO" }, +{ .code = XKB_KEY_longminus , .name = "longminus" }, +{ .code = XKB_KEY_block , .name = "block" }, |