typedef struct { const char* name; int keysym; } name2keysym_t; static name2keysym_t name2keysym[]={ /* ascii */ { "space", 0x020}, { "exclam", 0x021}, { "quotedbl", 0x022}, { "numbersign", 0x023}, { "dollar", 0x024}, { "percent", 0x025}, { "ampersand", 0x026}, { "apostrophe", 0x027}, { "parenleft", 0x028}, { "parenright", 0x029}, { "asterisk", 0x02a}, { "plus", 0x02b}, { "comma", 0x02c}, { "minus", 0x02d}, { "period", 0x02e}, { "slash", 0x02f}, { "0", 0x030}, { "1", 0x031}, { "2", 0x032}, { "3", 0x033}, { "4", 0x034}, { "5", 0x035}, { "6", 0x036}, { "7", 0x037}, { "8", 0x038}, { "9", 0x039}, { "colon", 0x03a}, { "semicolon", 0x03b}, { "less", 0x03c}, { "equal", 0x03d}, { "greater", 0x03e}, { "question", 0x03f}, { "at", 0x040}, { "A", 0x041}, { "B", 0x042}, { "C", 0x043}, { "D", 0x044}, { "E", 0x045}, { "F", 0x046}, { "G", 0x047}, { "H", 0x048}, { "I", 0x049}, { "J", 0x04a}, { "K", 0x04b}, { "L", 0x04c}, { "M", 0x04d}, { "N", 0x04e}, { "O", 0x04f}, { "P", 0x050}, { "Q", 0x051}, { "R", 0x052}, { "S", 0x053}, { "T", 0x054}, { "U", 0x055}, { "V", 0x056}, { "W", 0x057}, { "X", 0x058}, { "Y", 0x059}, { "Z", 0x05a}, { "bracketleft", 0x05b}, { "backslash", 0x05c}, { "bracketright", 0x05d}, { "asciicircum", 0x05e}, { "underscore", 0x05f}, { "grave", 0x060}, { "a", 0x061}, { "b", 0x062}, { "c", 0x063}, { "d", 0x064}, { "e", 0x065}, { "f", 0x066}, { "g", 0x067}, { "h", 0x068}, { "i", 0x069}, { "j", 0x06a}, { "k", 0x06b}, { "l", 0x06c}, { "m", 0x06d}, { "n", 0x06e}, { "o", 0x06f}, { "p", 0x070}, { "q", 0x071}, { "r", 0x072}, { "s", 0x073}, { "t", 0x074}, { "u", 0x075}, { "v", 0x076}, { "w", 0x077}, { "x", 0x078}, { "y", 0x079}, { "z", 0x07a}, { "braceleft", 0x07b}, { "bar", 0x07c}, { "braceright", 0x07d}, { "asciitilde", 0x07e}, /* latin 1 extensions */ { "nobreakspace", 0x0a0}, { "exclamdown", 0x0a1}, { "cent", 0x0a2}, { "sterling", 0x0a3}, { "currency", 0x0a4}, { "yen", 0x0a5}, { "brokenbar", 0x0a6}, { "section", 0x0a7}, { "diaeresis", 0x0a8}, { "copyright", 0x0a9}, { "ordfeminine", 0x0aa}, { "guillemotleft", 0x0ab}, { "notsign", 0x0ac}, { "hyphen", 0x0ad}, { "registered", 0x0ae}, { "macron", 0x0af}, { "degree", 0x0b0}, { "plusminus", 0x0b1}, { "twosuperior", 0x0b2}, { "threesuperior", 0x0b3}, { "acute", 0x0b4}, { "mu", 0x0b5}, { "paragraph", 0x0b6}, { "periodcentered", 0x0b7}, { "cedilla", 0x0b8}, { "onesuperior", 0x0b9}, { "masculine", 0x0ba}, { "guillemotright", 0x0bb}, { "onequarter", 0x0bc}, { "onehalf", 0x0bd}, { "threequarters", 0x0be}, { "questiondown", 0x0bf}, { "Agrave", 0x0c0}, { "Aacute", 0x0c1}, { "Acircumflex", 0x0c2}, { "Atilde", 0x0c3}, { "Adiaeresis", 0x0c4}, { "Aring", 0x0c5}, { "AE", 0x0c6}, { "Ccedilla", 0x0c7}, { "Egrave", 0x0c8}, { "Eacute", 0x0c9}, { "Ecircumflex", 0x0ca}, { "Ediaeresis", 0x0cb}, { "Igrave", 0x0cc}, { "Iacute", 0x0cd}, { "Icircumflex", 0x0ce}, { "Idiaeresis", 0x0cf}, { "ETH", 0x0d0}, { "Eth", 0x0d0}, { "Ntilde", 0x0d1}, { "Ograve", 0x0d2}, { "Oacute", 0x0d3}, { "Ocircumflex", 0x0d4}, { "Otilde", 0x0d5}, { "Odiaeresis", 0x0d6}, { "multiply", 0x0d7}, { "Ooblique", 0x0d8}, { "Oslash", 0x0d8}, { "Ugrave", 0x0d9}, { "Uacute", 0x0da}, { "Ucircumflex", 0x0db}, { "Udiaeresis", 0x0dc}, { "Yacute", 0x0dd}, { "THORN", 0x0de}, { "Thorn", 0x0de}, { "ssharp", 0x0df}, { "agrave", 0x0e0}, { "aacute", 0x0e1}, { "acircumflex", 0x0e2}, { "atilde", 0x0e3}, { "adiaeresis", 0x0e4}, { "aring", 0x0e5}, { "ae", 0x0e6}, { "ccedilla", 0x0e7}, { "egrave", 0x0e8}, { "eacute", 0x0e9}, { "ecircumflex", 0x0ea}, { "ediaeresis", 0x0eb}, { "igrave", 0x0ec}, { "iacute", 0x0ed}, { "icircumflex", 0x0ee}, { "idiaeresis", 0x0ef}, { "eth", 0x0f0}, { "ntilde", 0x0f1}, { "ograve", 0x0f2}, { "oacute", 0x0f3}, { "ocircumflex", 0x0f4}, { "otilde", 0x0f5}, { "odiaeresis", 0x0f6}, { "division", 0x0f7}, { "oslash", 0x0f8}, { "ooblique", 0x0f8}, { "ugrave", 0x0f9}, { "uacute", 0x0fa}, { "ucircumflex", 0x0fb}, { "udiaeresis", 0x0fc}, { "yacute", 0x0fd}, { "thorn", 0x0fe}, { "ydiaeresis", 0x0ff}, {"EuroSign", 0x20ac}, /* XK_EuroSign */ /* modifiers */ {"Control_L", 0xffe3}, /* XK_Control_L */ {"Control_R", 0xffe4}, /* XK_Control_R */ {"Alt_L", 0xffe9}, /* XK_Alt_L */ {"Alt_R", 0xffea}, /* XK_Alt_R */ {"Caps_Lock", 0xffe5}, /* XK_Caps_Lock */ {"Meta_L", 0xffe7}, /* XK_Meta_L */ {"Meta_R", 0xffe8}, /* XK_Meta_R */ {"Shift_L", 0xffe1}, /* XK_Shift_L */ {"Shift_R", 0xffe2}, /* XK_Shift_R */ {"Super_L", 0xffeb}, /* XK_Super_L */ {"Super_R", 0xffec}, /* XK_Super_R */ /* special keys */ {"BackSpace", 0xff08}, /* XK_BackSpace */ {"Tab", 0xff09}, /* XK_Tab */ {"Return", 0xff0d}, /* XK_Return */ {"Right", 0xff53}, /* XK_Right */ {"Left", 0xff51}, /* XK_Left */ {"Up", 0xff52}, /* XK_Up */ {"Down", 0xff54}, /* XK_Down */ {"Page_Down", 0xff56}, /* XK_Page_Down */ {"Page_Up", 0xff55}, /* XK_Page_Up */ {"Insert", 0xff63}, /* XK_Insert */ {"Delete", 0xffff}, /* XK_Delete */ {"Home", 0xff50}, /* XK_Home */ {"End", 0xff57}, /* XK_End */ {"Scroll_Lock", 0xff14}, /* XK_Scroll_Lock */ {"F1", 0xffbe}, /* XK_F1 */ {"F2", 0xffbf}, /* XK_F2 */ {"F3", 0xffc0}, /* XK_F3 */ {"F4", 0xffc1}, /* XK_F4 */ {"F5", 0xffc2}, /* XK_F5 */ {"F6", 0xffc3}, /* XK_F6 */ {"F7", 0xffc4}, /* XK_F7 */ {"F8", 0xffc5}, /* XK_F8 */ {"F9", 0xffc6}, /* XK_F9 */ {"F10", 0xffc7}, /* XK_F10 */ {"F11", 0xffc8}, /* XK_F11 */ {"F12", 0xffc9}, /* XK_F12 */ {"F13", 0xffca}, /* XK_F13 */ {"F14", 0xffcb}, /* XK_F14 */ {"F15", 0xffcc}, /* XK_F15 */ {"Sys_Req", 0xff15}, /* XK_Sys_Req */ {"KP_0", 0xffb0}, /* XK_KP_0 */ {"KP_1", 0xffb1}, /* XK_KP_1 */ {"KP_2", 0xffb2}, /* XK_KP_2 */ {"KP_3", 0xffb3}, /* XK_KP_3 */ {"KP_4", 0xffb4}, /* XK_KP_4 */ {"KP_5", 0xffb5}, /* XK_KP_5 */ {"KP_6", 0xffb6}, /* XK_KP_6 */ {"KP_7", 0xffb7}, /* XK_KP_7 */ {"KP_8", 0xffb8}, /* XK_KP_8 */ {"KP_9", 0xffb9}, /* XK_KP_9 */ {"KP_Add", 0xffab}, /* XK_KP_Add */ {"KP_Decimal", 0xffae}, /* XK_KP_Decimal */ {"KP_Divide", 0xffaf}, /* XK_KP_Divide */ {"KP_Enter", 0xff8d}, /* XK_KP_Enter */ {"KP_Equal", 0xffbd}, /* XK_KP_Equal */ {"KP_Multiply", 0xffaa}, /* XK_KP_Multiply */ {"KP_Subtract", 0xffad}, /* XK_KP_Subtract */ {"help", 0xff6a}, /* XK_Help */ {"Menu", 0xff67}, /* XK_Menu */ {"Print", 0xff61}, /* XK_Print */ {"Mode_switch", 0xff7e}, /* XK_Mode_switch */ {"Num_Lock", 0xff7f}, /* XK_Num_Lock */ {"Pause", 0xff13}, /* XK_Pause */ {"Escape", 0xff1b}, /* XK_Escape */ /* localized keys */ {"BackApostrophe", 0xff21}, {"Muhenkan", 0xff22}, {"Katakana", 0xff25}, {"Zenkaku_Hankaku", 0xff29}, {"Henkan_Mode_Real", 0xff23}, {"Henkan_Mode_Ultra", 0xff3e}, {"backslash_ja", 0xffa5}, {0,0}, };