Proxy is working

parent cb06629b
......@@ -3479,634 +3479,15 @@ const char *novnc_input_keyboard_js =
"window.Keyboard = Keyboard;\n"
;
if (strcmp(path, "/novnc/input/keyboard.js") == 0) return novnc_input_keyboard_js;
const char *novnc_input_keysym_js =
"/* eslint-disable key-spacing */\n"
"\n"
"window.KeyTable = {\n"
" XK_VoidSymbol: 0xffffff, /* Void symbol */\n"
"\n"
" XK_BackSpace: 0xff08, /* Back space, back char */\n"
" XK_Tab: 0xff09,\n"
" XK_Linefeed: 0xff0a, /* Linefeed, LF */\n"
" XK_Clear: 0xff0b,\n"
" XK_Return: 0xff0d, /* Return, enter */\n"
" XK_Pause: 0xff13, /* Pause, hold */\n"
" XK_Scroll_Lock: 0xff14,\n"
" XK_Sys_Req: 0xff15,\n"
" XK_Escape: 0xff1b,\n"
" XK_Delete: 0xffff, /* Delete, rubout */\n"
"\n"
" /* International & multi-key character composition */\n"
"\n"
" XK_Multi_key: 0xff20, /* Multi-key character compose */\n"
" XK_Codeinput: 0xff37,\n"
" XK_SingleCandidate: 0xff3c,\n"
" XK_MultipleCandidate: 0xff3d,\n"
" XK_PreviousCandidate: 0xff3e,\n"
"\n"
" /* Japanese keyboard support */\n"
"\n"
" XK_Kanji: 0xff21, /* Kanji, Kanji convert */\n"
" XK_Muhenkan: 0xff22, /* Cancel Conversion */\n"
" XK_Henkan_Mode: 0xff23, /* Start/Stop Conversion */\n"
" XK_Henkan: 0xff23, /* Alias for Henkan_Mode */\n"
" XK_Romaji: 0xff24, /* to Romaji */\n"
" XK_Hiragana: 0xff25, /* to Hiragana */\n"
" XK_Katakana: 0xff26, /* to Katakana */\n"
" XK_Hiragana_Katakana: 0xff27, /* Hiragana/Katakana toggle */\n"
" XK_Zenkaku: 0xff28, /* to Zenkaku */\n"
" XK_Hankaku: 0xff29, /* to Hankaku */\n"
" XK_Zenkaku_Hankaku: 0xff2a, /* Zenkaku/Hankaku toggle */\n"
" XK_Touroku: 0xff2b, /* Add to Dictionary */\n"
" XK_Massyo: 0xff2c, /* Delete from Dictionary */\n"
" XK_Kana_Lock: 0xff2d, /* Kana Lock */\n"
" XK_Kana_Shift: 0xff2e, /* Kana Shift */\n"
" XK_Eisu_Shift: 0xff2f, /* Alphanumeric Shift */\n"
" XK_Eisu_toggle: 0xff30, /* Alphanumeric toggle */\n"
" XK_Kanji_Bangou: 0xff37, /* Codeinput */\n"
" XK_Zen_Koho: 0xff3d, /* Multiple/All Candidate(s) */\n"
" XK_Mae_Koho: 0xff3e, /* Previous Candidate */\n"
"\n"
" /* Cursor control & motion */\n"
"\n"
" XK_Home: 0xff50,\n"
" XK_Left: 0xff51, /* Move left, left arrow */\n"
" XK_Up: 0xff52, /* Move up, up arrow */\n"
" XK_Right: 0xff53, /* Move right, right arrow */\n"
" XK_Down: 0xff54, /* Move down, down arrow */\n"
" XK_Prior: 0xff55, /* Prior, previous */\n"
" XK_Page_Up: 0xff55,\n"
" XK_Next: 0xff56, /* Next */\n"
" XK_Page_Down: 0xff56,\n"
" XK_End: 0xff57, /* EOL */\n"
" XK_Begin: 0xff58, /* BOL */\n"
"\n"
"\n"
" /* Misc functions */\n"
"\n"
" XK_Select: 0xff60, /* Select, mark */\n"
" XK_Print: 0xff61,\n"
" XK_Execute: 0xff62, /* Execute, run, do */\n"
" XK_Insert: 0xff63, /* Insert, insert here */\n"
" XK_Undo: 0xff65,\n"
" XK_Redo: 0xff66, /* Redo, again */\n"
" XK_Menu: 0xff67,\n"
" XK_Find: 0xff68, /* Find, search */\n"
" XK_Cancel: 0xff69, /* Cancel, stop, abort, exit */\n"
" XK_Help: 0xff6a, /* Help */\n"
" XK_Break: 0xff6b,\n"
" XK_Mode_switch: 0xff7e, /* Character set switch */\n"
" XK_script_switch: 0xff7e, /* Alias for mode_switch */\n"
" XK_Num_Lock: 0xff7f,\n"
"\n"
" /* Keypad functions, keypad numbers cleverly chosen to map to ASCII */\n"
"\n"
" XK_KP_Space: 0xff80, /* Space */\n"
" XK_KP_Tab: 0xff89,\n"
" XK_KP_Enter: 0xff8d, /* Enter */\n"
" XK_KP_F1: 0xff91, /* PF1, KP_A, ... */\n"
" XK_KP_F2: 0xff92,\n"
" XK_KP_F3: 0xff93,\n"
" XK_KP_F4: 0xff94,\n"
" XK_KP_Home: 0xff95,\n"
" XK_KP_Left: 0xff96,\n"
" XK_KP_Up: 0xff97,\n"
" XK_KP_Right: 0xff98,\n"
" XK_KP_Down: 0xff99,\n"
" XK_KP_Prior: 0xff9a,\n"
" XK_KP_Page_Up: 0xff9a,\n"
" XK_KP_Next: 0xff9b,\n"
" XK_KP_Page_Down: 0xff9b,\n"
" XK_KP_End: 0xff9c,\n"
" XK_KP_Begin: 0xff9d,\n"
" XK_KP_Insert: 0xff9e,\n"
" XK_KP_Delete: 0xff9f,\n"
" XK_KP_Equal: 0xffbd, /* Equals */\n"
" XK_KP_Multiply: 0xffaa,\n"
" XK_KP_Add: 0xffab,\n"
" XK_KP_Separator: 0xffac, /* Separator, often comma */\n"
" XK_KP_Subtract: 0xffad,\n"
" XK_KP_Decimal: 0xffae,\n"
" XK_KP_Divide: 0xffaf,\n"
"\n"
" XK_KP_0: 0xffb0,\n"
" XK_KP_1: 0xffb1,\n"
" XK_KP_2: 0xffb2,\n"
" XK_KP_3: 0xffb3,\n"
" XK_KP_4: 0xffb4,\n"
" XK_KP_5: 0xffb5,\n"
" XK_KP_6: 0xffb6,\n"
" XK_KP_7: 0xffb7,\n"
" XK_KP_8: 0xffb8,\n"
" XK_KP_9: 0xffb9,\n"
"\n"
" /*\n"
" * Auxiliary functions; note the duplicate definitions for left and right\n"
" * function keys; Sun keyboards and a few other manufacturers have such\n"
" * function key groups on the left and/or right sides of the keyboard.\n"
" * We've not found a keyboard with more than 35 function keys total.\n"
" */\n"
"\n"
" XK_F1: 0xffbe,\n"
" XK_F2: 0xffbf,\n"
" XK_F3: 0xffc0,\n"
" XK_F4: 0xffc1,\n"
" XK_F5: 0xffc2,\n"
" XK_F6: 0xffc3,\n"
" XK_F7: 0xffc4,\n"
" XK_F8: 0xffc5,\n"
" XK_F9: 0xffc6,\n"
" XK_F10: 0xffc7,\n"
" XK_F11: 0xffc8,\n"
" XK_L1: 0xffc8,\n"
" XK_F12: 0xffc9,\n"
" XK_L2: 0xffc9,\n"
" XK_F13: 0xffca,\n"
" XK_L3: 0xffca,\n"
" XK_F14: 0xffcb,\n"
" XK_L4: 0xffcb,\n"
" XK_F15: 0xffcc,\n"
" XK_L5: 0xffcc,\n"
" XK_F16: 0xffcd,\n"
" XK_L6: 0xffcd,\n"
" XK_F17: 0xffce,\n"
" XK_L7: 0xffce,\n"
" XK_F18: 0xffcf,\n"
" XK_L8: 0xffcf,\n"
" XK_F19: 0xffd0,\n"
" XK_L9: 0xffd0,\n"
" XK_F20: 0xffd1,\n"
" XK_L10: 0xffd1,\n"
" XK_F21: 0xffd2,\n"
" XK_R1: 0xffd2,\n"
" XK_F22: 0xffd3,\n"
" XK_R2: 0xffd3,\n"
" XK_F23: 0xffd4,\n"
" XK_R3: 0xffd4,\n"
" XK_F24: 0xffd5,\n"
" XK_R4: 0xffd5,\n"
" XK_F25: 0xffd6,\n"
" XK_R5: 0xffd6,\n"
" XK_F26: 0xffd7,\n"
" XK_R6: 0xffd7,\n"
" XK_F27: 0xffd8,\n"
" XK_R7: 0xffd8,\n"
" XK_F28: 0xffd9,\n"
" XK_R8: 0xffd9,\n"
" XK_F29: 0xffda,\n"
" XK_R9: 0xffda,\n"
" XK_F30: 0xffdb,\n"
" XK_R10: 0xffdb,\n"
" XK_F31: 0xffdc,\n"
" XK_R11: 0xffdc,\n"
" XK_F32: 0xffdd,\n"
" XK_R12: 0xffdd,\n"
" XK_F33: 0xffde,\n"
" XK_R13: 0xffde,\n"
" XK_F34: 0xffdf,\n"
" XK_R14: 0xffdf,\n"
" XK_F35: 0xffe0,\n"
" XK_R15: 0xffe0,\n"
"\n"
" /* Modifiers */\n"
"\n"
" XK_Shift_L: 0xffe1, /* Left shift */\n"
" XK_Shift_R: 0xffe2, /* Right shift */\n"
" XK_Control_L: 0xffe3, /* Left control */\n"
" XK_Control_R: 0xffe4, /* Right control */\n"
" XK_Caps_Lock: 0xffe5, /* Caps lock */\n"
" XK_Shift_Lock: 0xffe6, /* Shift lock */\n"
"\n"
" XK_Meta_L: 0xffe7, /* Left meta */\n"
" XK_Meta_R: 0xffe8, /* Right meta */\n"
" XK_Alt_L: 0xffe9, /* Left alt */\n"
" XK_Alt_R: 0xffea, /* Right alt */\n"
" XK_Super_L: 0xffeb, /* Left super */\n"
" XK_Super_R: 0xffec, /* Right super */\n"
" XK_Hyper_L: 0xffed, /* Left hyper */\n"
" XK_Hyper_R: 0xffee, /* Right hyper */\n"
"\n"
" /*\n"
" * Keyboard (XKB) Extension function and modifier keys\n"
" * (from Appendix C of \"The X Keyboard Extension: Protocol Specification\")\n"
" * Byte 3 = 0xfe\n"
const char *novnc_input_keysymdef_js =
"/*\n"
" * Mapping from Unicode codepoints to X11/RFB keysyms\n"
" *\n"
" * This file was automatically generated from keysymdef.h\n"
" * DO NOT EDIT!\n"
" */\n"
"\n"
" XK_ISO_Level3_Shift: 0xfe03, /* AltGr */\n"
" XK_ISO_Next_Group: 0xfe08,\n"
" XK_ISO_Prev_Group: 0xfe0a,\n"
" XK_ISO_First_Group: 0xfe0c,\n"
" XK_ISO_Last_Group: 0xfe0e,\n"
"\n"
" /*\n"
" * Latin 1\n"
" * (ISO/IEC 8859-1: Unicode U+0020..U+00FF)\n"
" * Byte 3: 0\n"
" */\n"
"\n"
" XK_space: 0x0020, /* U+0020 SPACE */\n"
" XK_exclam: 0x0021, /* U+0021 EXCLAMATION MARK */\n"
" XK_quotedbl: 0x0022, /* U+0022 QUOTATION MARK */\n"
" XK_numbersign: 0x0023, /* U+0023 NUMBER SIGN */\n"
" XK_dollar: 0x0024, /* U+0024 DOLLAR SIGN */\n"
" XK_percent: 0x0025, /* U+0025 PERCENT SIGN */\n"
" XK_ampersand: 0x0026, /* U+0026 AMPERSAND */\n"
" XK_apostrophe: 0x0027, /* U+0027 APOSTROPHE */\n"
" XK_quoteright: 0x0027, /* deprecated */\n"
" XK_parenleft: 0x0028, /* U+0028 LEFT PARENTHESIS */\n"
" XK_parenright: 0x0029, /* U+0029 RIGHT PARENTHESIS */\n"
" XK_asterisk: 0x002a, /* U+002A ASTERISK */\n"
" XK_plus: 0x002b, /* U+002B PLUS SIGN */\n"
" XK_comma: 0x002c, /* U+002C COMMA */\n"
" XK_minus: 0x002d, /* U+002D HYPHEN-MINUS */\n"
" XK_period: 0x002e, /* U+002E FULL STOP */\n"
" XK_slash: 0x002f, /* U+002F SOLIDUS */\n"
" XK_0: 0x0030, /* U+0030 DIGIT ZERO */\n"
" XK_1: 0x0031, /* U+0031 DIGIT ONE */\n"
" XK_2: 0x0032, /* U+0032 DIGIT TWO */\n"
" XK_3: 0x0033, /* U+0033 DIGIT THREE */\n"
" XK_4: 0x0034, /* U+0034 DIGIT FOUR */\n"
" XK_5: 0x0035, /* U+0035 DIGIT FIVE */\n"
" XK_6: 0x0036, /* U+0036 DIGIT SIX */\n"
" XK_7: 0x0037, /* U+0037 DIGIT SEVEN */\n"
" XK_8: 0x0038, /* U+0038 DIGIT EIGHT */\n"
" XK_9: 0x0039, /* U+0039 DIGIT NINE */\n"
" XK_colon: 0x003a, /* U+003A COLON */\n"
" XK_semicolon: 0x003b, /* U+003B SEMICOLON */\n"
" XK_less: 0x003c, /* U+003C LESS-THAN SIGN */\n"
" XK_equal: 0x003d, /* U+003D EQUALS SIGN */\n"
" XK_greater: 0x003e, /* U+003E GREATER-THAN SIGN */\n"
" XK_question: 0x003f, /* U+003F QUESTION MARK */\n"
" XK_at: 0x0040, /* U+0040 COMMERCIAL AT */\n"
" XK_A: 0x0041, /* U+0041 LATIN CAPITAL LETTER A */\n"
" XK_B: 0x0042, /* U+0042 LATIN CAPITAL LETTER B */\n"
" XK_C: 0x0043, /* U+0043 LATIN CAPITAL LETTER C */\n"
" XK_D: 0x0044, /* U+0044 LATIN CAPITAL LETTER D */\n"
" XK_E: 0x0045, /* U+0045 LATIN CAPITAL LETTER E */\n"
" XK_F: 0x0046, /* U+0046 LATIN CAPITAL LETTER F */\n"
" XK_G: 0x0047, /* U+0047 LATIN CAPITAL LETTER G */\n"
" XK_H: 0x0048, /* U+0048 LATIN CAPITAL LETTER H */\n"
" XK_I: 0x0049, /* U+0049 LATIN CAPITAL LETTER I */\n"
" XK_J: 0x004a, /* U+004A LATIN CAPITAL LETTER J */\n"
" XK_K: 0x004b, /* U+004B LATIN CAPITAL LETTER K */\n"
" XK_L: 0x004c, /* U+004C LATIN CAPITAL LETTER L */\n"
" XK_M: 0x004d, /* U+004D LATIN CAPITAL LETTER M */\n"
" XK_N: 0x004e, /* U+004E LATIN CAPITAL LETTER N */\n"
" XK_O: 0x004f, /* U+004F LATIN CAPITAL LETTER O */\n"
" XK_P: 0x0050, /* U+0050 LATIN CAPITAL LETTER P */\n"
" XK_Q: 0x0051, /* U+0051 LATIN CAPITAL LETTER Q */\n"
" XK_R: 0x0052, /* U+0052 LATIN CAPITAL LETTER R */\n"
" XK_S: 0x0053, /* U+0053 LATIN CAPITAL LETTER S */\n"
" XK_T: 0x0054, /* U+0054 LATIN CAPITAL LETTER T */\n"
" XK_U: 0x0055, /* U+0055 LATIN CAPITAL LETTER U */\n"
" XK_V: 0x0056, /* U+0056 LATIN CAPITAL LETTER V */\n"
" XK_W: 0x0057, /* U+0057 LATIN CAPITAL LETTER W */\n"
" XK_X: 0x0058, /* U+0058 LATIN CAPITAL LETTER X */\n"
" XK_Y: 0x0059, /* U+0059 LATIN CAPITAL LETTER Y */\n"
" XK_Z: 0x005a, /* U+005A LATIN CAPITAL LETTER Z */\n"
" XK_bracketleft: 0x005b, /* U+005B LEFT SQUARE BRACKET */\n"
" XK_backslash: 0x005c, /* U+005C REVERSE SOLIDUS */\n"
" XK_bracketright: 0x005d, /* U+005D RIGHT SQUARE BRACKET */\n"
" XK_asciicircum: 0x005e, /* U+005E CIRCUMFLEX ACCENT */\n"
" XK_underscore: 0x005f, /* U+005F LOW LINE */\n"
" XK_grave: 0x0060, /* U+0060 GRAVE ACCENT */\n"
" XK_quoteleft: 0x0060, /* deprecated */\n"
" XK_a: 0x0061, /* U+0061 LATIN SMALL LETTER A */\n"
" XK_b: 0x0062, /* U+0062 LATIN SMALL LETTER B */\n"
" XK_c: 0x0063, /* U+0063 LATIN SMALL LETTER C */\n"
" XK_d: 0x0064, /* U+0064 LATIN SMALL LETTER D */\n"
" XK_e: 0x0065, /* U+0065 LATIN SMALL LETTER E */\n"
" XK_f: 0x0066, /* U+0066 LATIN SMALL LETTER F */\n"
" XK_g: 0x0067, /* U+0067 LATIN SMALL LETTER G */\n"
" XK_h: 0x0068, /* U+0068 LATIN SMALL LETTER H */\n"
" XK_i: 0x0069, /* U+0069 LATIN SMALL LETTER I */\n"
" XK_j: 0x006a, /* U+006A LATIN SMALL LETTER J */\n"
" XK_k: 0x006b, /* U+006B LATIN SMALL LETTER K */\n"
" XK_l: 0x006c, /* U+006C LATIN SMALL LETTER L */\n"
" XK_m: 0x006d, /* U+006D LATIN SMALL LETTER M */\n"
" XK_n: 0x006e, /* U+006E LATIN SMALL LETTER N */\n"
" XK_o: 0x006f, /* U+006F LATIN SMALL LETTER O */\n"
" XK_p: 0x0070, /* U+0070 LATIN SMALL LETTER P */\n"
" XK_q: 0x0071, /* U+0071 LATIN SMALL LETTER Q */\n"
" XK_r: 0x0072, /* U+0072 LATIN SMALL LETTER R */\n"
" XK_s: 0x0073, /* U+0073 LATIN SMALL LETTER S */\n"
" XK_t: 0x0074, /* U+0074 LATIN SMALL LETTER T */\n"
" XK_u: 0x0075, /* U+0075 LATIN SMALL LETTER U */\n"
" XK_v: 0x0076, /* U+0076 LATIN SMALL LETTER V */\n"
" XK_w: 0x0077, /* U+0077 LATIN SMALL LETTER W */\n"
" XK_x: 0x0078, /* U+0078 LATIN SMALL LETTER X */\n"
" XK_y: 0x0079, /* U+0079 LATIN SMALL LETTER Y */\n"
" XK_z: 0x007a, /* U+007A LATIN SMALL LETTER Z */\n"
" XK_braceleft: 0x007b, /* U+007B LEFT CURLY BRACKET */\n"
" XK_bar: 0x007c, /* U+007C VERTICAL LINE */\n"
" XK_braceright: 0x007d, /* U+007D RIGHT CURLY BRACKET */\n"
" XK_asciitilde: 0x007e, /* U+007E TILDE */\n"
"\n"
" XK_nobreakspace: 0x00a0, /* U+00A0 NO-BREAK SPACE */\n"
" XK_exclamdown: 0x00a1, /* U+00A1 INVERTED EXCLAMATION MARK */\n"
" XK_cent: 0x00a2, /* U+00A2 CENT SIGN */\n"
" XK_sterling: 0x00a3, /* U+00A3 POUND SIGN */\n"
" XK_currency: 0x00a4, /* U+00A4 CURRENCY SIGN */\n"
" XK_yen: 0x00a5, /* U+00A5 YEN SIGN */\n"
" XK_brokenbar: 0x00a6, /* U+00A6 BROKEN BAR */\n"
" XK_section: 0x00a7, /* U+00A7 SECTION SIGN */\n"
" XK_diaeresis: 0x00a8, /* U+00A8 DIAERESIS */\n"
" XK_copyright: 0x00a9, /* U+00A9 COPYRIGHT SIGN */\n"
" XK_ordfeminine: 0x00aa, /* U+00AA FEMININE ORDINAL INDICATOR */\n"
" XK_guillemotleft: 0x00ab, /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */\n"
" XK_notsign: 0x00ac, /* U+00AC NOT SIGN */\n"
" XK_hyphen: 0x00ad, /* U+00AD SOFT HYPHEN */\n"
" XK_registered: 0x00ae, /* U+00AE REGISTERED SIGN */\n"
" XK_macron: 0x00af, /* U+00AF MACRON */\n"
" XK_degree: 0x00b0, /* U+00B0 DEGREE SIGN */\n"
" XK_plusminus: 0x00b1, /* U+00B1 PLUS-MINUS SIGN */\n"
" XK_twosuperior: 0x00b2, /* U+00B2 SUPERSCRIPT TWO */\n"
" XK_threesuperior: 0x00b3, /* U+00B3 SUPERSCRIPT THREE */\n"
" XK_acute: 0x00b4, /* U+00B4 ACUTE ACCENT */\n"
" XK_mu: 0x00b5, /* U+00B5 MICRO SIGN */\n"
" XK_paragraph: 0x00b6, /* U+00B6 PILCROW SIGN */\n"
" XK_periodcentered: 0x00b7, /* U+00B7 MIDDLE DOT */\n"
" XK_cedilla: 0x00b8, /* U+00B8 CEDILLA */\n"
" XK_onesuperior: 0x00b9, /* U+00B9 SUPERSCRIPT ONE */\n"
" XK_masculine: 0x00ba, /* U+00BA MASCULINE ORDINAL INDICATOR */\n"
" XK_guillemotright: 0x00bb, /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */\n"
" XK_onequarter: 0x00bc, /* U+00BC VULGAR FRACTION ONE QUARTER */\n"
" XK_onehalf: 0x00bd, /* U+00BD VULGAR FRACTION ONE HALF */\n"
" XK_threequarters: 0x00be, /* U+00BE VULGAR FRACTION THREE QUARTERS */\n"
" XK_questiondown: 0x00bf, /* U+00BF INVERTED QUESTION MARK */\n"
" XK_Agrave: 0x00c0, /* U+00C0 LATIN CAPITAL LETTER A WITH GRAVE */\n"
" XK_Aacute: 0x00c1, /* U+00C1 LATIN CAPITAL LETTER A WITH ACUTE */\n"
" XK_Acircumflex: 0x00c2, /* U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX */\n"
" XK_Atilde: 0x00c3, /* U+00C3 LATIN CAPITAL LETTER A WITH TILDE */\n"
" XK_Adiaeresis: 0x00c4, /* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */\n"
" XK_Aring: 0x00c5, /* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */\n"
" XK_AE: 0x00c6, /* U+00C6 LATIN CAPITAL LETTER AE */\n"
" XK_Ccedilla: 0x00c7, /* U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA */\n"
" XK_Egrave: 0x00c8, /* U+00C8 LATIN CAPITAL LETTER E WITH GRAVE */\n"
" XK_Eacute: 0x00c9, /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */\n"
" XK_Ecircumflex: 0x00ca, /* U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX */\n"
" XK_Ediaeresis: 0x00cb, /* U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS */\n"
" XK_Igrave: 0x00cc, /* U+00CC LATIN CAPITAL LETTER I WITH GRAVE */\n"
" XK_Iacute: 0x00cd, /* U+00CD LATIN CAPITAL LETTER I WITH ACUTE */\n"
" XK_Icircumflex: 0x00ce, /* U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX */\n"
" XK_Idiaeresis: 0x00cf, /* U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS */\n"
" XK_ETH: 0x00d0, /* U+00D0 LATIN CAPITAL LETTER ETH */\n"
" XK_Eth: 0x00d0, /* deprecated */\n"
" XK_Ntilde: 0x00d1, /* U+00D1 LATIN CAPITAL LETTER N WITH TILDE */\n"
" XK_Ograve: 0x00d2, /* U+00D2 LATIN CAPITAL LETTER O WITH GRAVE */\n"
" XK_Oacute: 0x00d3, /* U+00D3 LATIN CAPITAL LETTER O WITH ACUTE */\n"
" XK_Ocircumflex: 0x00d4, /* U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX */\n"
" XK_Otilde: 0x00d5, /* U+00D5 LATIN CAPITAL LETTER O WITH TILDE */\n"
" XK_Odiaeresis: 0x00d6, /* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */\n"
" XK_multiply: 0x00d7, /* U+00D7 MULTIPLICATION SIGN */\n"
" XK_Oslash: 0x00d8, /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */\n"
" XK_Ooblique: 0x00d8, /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */\n"
" XK_Ugrave: 0x00d9, /* U+00D9 LATIN CAPITAL LETTER U WITH GRAVE */\n"
" XK_Uacute: 0x00da, /* U+00DA LATIN CAPITAL LETTER U WITH ACUTE */\n"
" XK_Ucircumflex: 0x00db, /* U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX */\n"
" XK_Udiaeresis: 0x00dc, /* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */\n"
" XK_Yacute: 0x00dd, /* U+00DD LATIN CAPITAL LETTER Y WITH ACUTE */\n"
" XK_THORN: 0x00de, /* U+00DE LATIN CAPITAL LETTER THORN */\n"
" XK_Thorn: 0x00de, /* deprecated */\n"
" XK_ssharp: 0x00df, /* U+00DF LATIN SMALL LETTER SHARP S */\n"
" XK_agrave: 0x00e0, /* U+00E0 LATIN SMALL LETTER A WITH GRAVE */\n"
" XK_aacute: 0x00e1, /* U+00E1 LATIN SMALL LETTER A WITH ACUTE */\n"
" XK_acircumflex: 0x00e2, /* U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX */\n"
" XK_atilde: 0x00e3, /* U+00E3 LATIN SMALL LETTER A WITH TILDE */\n"
" XK_adiaeresis: 0x00e4, /* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */\n"
" XK_aring: 0x00e5, /* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */\n"
" XK_ae: 0x00e6, /* U+00E6 LATIN SMALL LETTER AE */\n"
" XK_ccedilla: 0x00e7, /* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */\n"
" XK_egrave: 0x00e8, /* U+00E8 LATIN SMALL LETTER E WITH GRAVE */\n"
" XK_eacute: 0x00e9, /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */\n"
" XK_ecircumflex: 0x00ea, /* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */\n"
" XK_ediaeresis: 0x00eb, /* U+00EB LATIN SMALL LETTER E WITH DIAERESIS */\n"
" XK_igrave: 0x00ec, /* U+00EC LATIN SMALL LETTER I WITH GRAVE */\n"
" XK_iacute: 0x00ed, /* U+00ED LATIN SMALL LETTER I WITH ACUTE */\n"
" XK_icircumflex: 0x00ee, /* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */\n"
" XK_idiaeresis: 0x00ef, /* U+00EF LATIN SMALL LETTER I WITH DIAERESIS */\n"
" XK_eth: 0x00f0, /* U+00F0 LATIN SMALL LETTER ETH */\n"
" XK_ntilde: 0x00f1, /* U+00F1 LATIN SMALL LETTER N WITH TILDE */\n"
" XK_ograve: 0x00f2, /* U+00F2 LATIN SMALL LETTER O WITH GRAVE */\n"
" XK_oacute: 0x00f3, /* U+00F3 LATIN SMALL LETTER O WITH ACUTE */\n"
" XK_ocircumflex: 0x00f4, /* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */\n"
" XK_otilde: 0x00f5, /* U+00F5 LATIN SMALL LETTER O WITH TILDE */\n"
" XK_odiaeresis: 0x00f6, /* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */\n"
" XK_division: 0x00f7, /* U+00F7 DIVISION SIGN */\n"
" XK_oslash: 0x00f8, /* U+00F8 LATIN SMALL LETTER O WITH STROKE */\n"
" XK_ooblique: 0x00f8, /* U+00F8 LATIN SMALL LETTER O WITH STROKE */\n"
" XK_ugrave: 0x00f9, /* U+00F9 LATIN SMALL LETTER U WITH GRAVE */\n"
" XK_uacute: 0x00fa, /* U+00FA LATIN SMALL LETTER U WITH ACUTE */\n"
" XK_ucircumflex: 0x00fb, /* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */\n"
" XK_udiaeresis: 0x00fc, /* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */\n"
" XK_yacute: 0x00fd, /* U+00FD LATIN SMALL LETTER Y WITH ACUTE */\n"
" XK_thorn: 0x00fe, /* U+00FE LATIN SMALL LETTER THORN */\n"
" XK_ydiaeresis: 0x00ff, /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */\n"
"\n"
" /*\n"
" * Korean\n"
" * Byte 3 = 0x0e\n"
" */\n"
"\n"
" XK_Hangul: 0xff31, /* Hangul start/stop(toggle) */\n"
" XK_Hangul_Hanja: 0xff34, /* Start Hangul->Hanja Conversion */\n"
" XK_Hangul_Jeonja: 0xff38, /* Jeonja mode */\n"
"\n"
" /*\n"
" * XFree86 vendor specific keysyms.\n"
" *\n"
" * The XFree86 keysym range is 0x10080001 - 0x1008FFFF.\n"
" */\n"
"\n"
" XF86XK_ModeLock: 0x1008FF01,\n"
" XF86XK_MonBrightnessUp: 0x1008FF02,\n"
" XF86XK_MonBrightnessDown: 0x1008FF03,\n"
" XF86XK_KbdLightOnOff: 0x1008FF04,\n"
" XF86XK_KbdBrightnessUp: 0x1008FF05,\n"
" XF86XK_KbdBrightnessDown: 0x1008FF06,\n"
" XF86XK_Standby: 0x1008FF10,\n"
" XF86XK_AudioLowerVolume: 0x1008FF11,\n"
" XF86XK_AudioMute: 0x1008FF12,\n"
" XF86XK_AudioRaiseVolume: 0x1008FF13,\n"
" XF86XK_AudioPlay: 0x1008FF14,\n"
" XF86XK_AudioStop: 0x1008FF15,\n"
" XF86XK_AudioPrev: 0x1008FF16,\n"
" XF86XK_AudioNext: 0x1008FF17,\n"
" XF86XK_HomePage: 0x1008FF18,\n"
" XF86XK_Mail: 0x1008FF19,\n"
" XF86XK_Start: 0x1008FF1A,\n"
" XF86XK_Search: 0x1008FF1B,\n"
" XF86XK_AudioRecord: 0x1008FF1C,\n"
" XF86XK_Calculator: 0x1008FF1D,\n"
" XF86XK_Memo: 0x1008FF1E,\n"
" XF86XK_ToDoList: 0x1008FF1F,\n"
" XF86XK_Calendar: 0x1008FF20,\n"
" XF86XK_PowerDown: 0x1008FF21,\n"
" XF86XK_ContrastAdjust: 0x1008FF22,\n"
" XF86XK_RockerUp: 0x1008FF23,\n"
" XF86XK_RockerDown: 0x1008FF24,\n"
" XF86XK_RockerEnter: 0x1008FF25,\n"
" XF86XK_Back: 0x1008FF26,\n"
" XF86XK_Forward: 0x1008FF27,\n"
" XF86XK_Stop: 0x1008FF28,\n"
" XF86XK_Refresh: 0x1008FF29,\n"
" XF86XK_PowerOff: 0x1008FF2A,\n"
" XF86XK_WakeUp: 0x1008FF2B,\n"
" XF86XK_Eject: 0x1008FF2C,\n"
" XF86XK_ScreenSaver: 0x1008FF2D,\n"
" XF86XK_WWW: 0x1008FF2E,\n"
" XF86XK_Sleep: 0x1008FF2F,\n"
" XF86XK_Favorites: 0x1008FF30,\n"
" XF86XK_AudioPause: 0x1008FF31,\n"
" XF86XK_AudioMedia: 0x1008FF32,\n"
" XF86XK_MyComputer: 0x1008FF33,\n"
" XF86XK_VendorHome: 0x1008FF34,\n"
" XF86XK_LightBulb: 0x1008FF35,\n"
" XF86XK_Shop: 0x1008FF36,\n"
" XF86XK_History: 0x1008FF37,\n"
" XF86XK_OpenURL: 0x1008FF38,\n"
" XF86XK_AddFavorite: 0x1008FF39,\n"
" XF86XK_HotLinks: 0x1008FF3A,\n"
" XF86XK_BrightnessAdjust: 0x1008FF3B,\n"
" XF86XK_Finance: 0x1008FF3C,\n"
" XF86XK_Community: 0x1008FF3D,\n"
" XF86XK_AudioRewind: 0x1008FF3E,\n"
" XF86XK_BackForward: 0x1008FF3F,\n"
" XF86XK_Launch0: 0x1008FF40,\n"
" XF86XK_Launch1: 0x1008FF41,\n"
" XF86XK_Launch2: 0x1008FF42,\n"
" XF86XK_Launch3: 0x1008FF43,\n"
" XF86XK_Launch4: 0x1008FF44,\n"
" XF86XK_Launch5: 0x1008FF45,\n"
" XF86XK_Launch6: 0x1008FF46,\n"
" XF86XK_Launch7: 0x1008FF47,\n"
" XF86XK_Launch8: 0x1008FF48,\n"
" XF86XK_Launch9: 0x1008FF49,\n"
" XF86XK_LaunchA: 0x1008FF4A,\n"
" XF86XK_LaunchB: 0x1008FF4B,\n"
" XF86XK_LaunchC: 0x1008FF4C,\n"
" XF86XK_LaunchD: 0x1008FF4D,\n"
" XF86XK_LaunchE: 0x1008FF4E,\n"
" XF86XK_LaunchF: 0x1008FF4F,\n"
" XF86XK_ApplicationLeft: 0x1008FF50,\n"
" XF86XK_ApplicationRight: 0x1008FF51,\n"
" XF86XK_Book: 0x1008FF52,\n"
" XF86XK_CD: 0x1008FF53,\n"
" XF86XK_Calculater: 0x1008FF54,\n"
" XF86XK_Clear: 0x1008FF55,\n"
" XF86XK_Close: 0x1008FF56,\n"
" XF86XK_Copy: 0x1008FF57,\n"
" XF86XK_Cut: 0x1008FF58,\n"
" XF86XK_Display: 0x1008FF59,\n"
" XF86XK_DOS: 0x1008FF5A,\n"
" XF86XK_Documents: 0x1008FF5B,\n"
" XF86XK_Excel: 0x1008FF5C,\n"
" XF86XK_Explorer: 0x1008FF5D,\n"
" XF86XK_Game: 0x1008FF5E,\n"
" XF86XK_Go: 0x1008FF5F,\n"
" XF86XK_iTouch: 0x1008FF60,\n"
" XF86XK_LogOff: 0x1008FF61,\n"
" XF86XK_Market: 0x1008FF62,\n"
" XF86XK_Meeting: 0x1008FF63,\n"
" XF86XK_MenuKB: 0x1008FF65,\n"
" XF86XK_MenuPB: 0x1008FF66,\n"
" XF86XK_MySites: 0x1008FF67,\n"
" XF86XK_New: 0x1008FF68,\n"
" XF86XK_News: 0x1008FF69,\n"
" XF86XK_OfficeHome: 0x1008FF6A,\n"
" XF86XK_Open: 0x1008FF6B,\n"
" XF86XK_Option: 0x1008FF6C,\n"
" XF86XK_Paste: 0x1008FF6D,\n"
" XF86XK_Phone: 0x1008FF6E,\n"
" XF86XK_Q: 0x1008FF70,\n"
" XF86XK_Reply: 0x1008FF72,\n"
" XF86XK_Reload: 0x1008FF73,\n"
" XF86XK_RotateWindows: 0x1008FF74,\n"
" XF86XK_RotationPB: 0x1008FF75,\n"
" XF86XK_RotationKB: 0x1008FF76,\n"
" XF86XK_Save: 0x1008FF77,\n"
" XF86XK_ScrollUp: 0x1008FF78,\n"
" XF86XK_ScrollDown: 0x1008FF79,\n"
" XF86XK_ScrollClick: 0x1008FF7A,\n"
" XF86XK_Send: 0x1008FF7B,\n"
" XF86XK_Spell: 0x1008FF7C,\n"
" XF86XK_SplitScreen: 0x1008FF7D,\n"
" XF86XK_Support: 0x1008FF7E,\n"
" XF86XK_TaskPane: 0x1008FF7F,\n"
" XF86XK_Terminal: 0x1008FF80,\n"
" XF86XK_Tools: 0x1008FF81,\n"
" XF86XK_Travel: 0x1008FF82,\n"
" XF86XK_UserPB: 0x1008FF84,\n"
" XF86XK_User1KB: 0x1008FF85,\n"
" XF86XK_User2KB: 0x1008FF86,\n"
" XF86XK_Video: 0x1008FF87,\n"
" XF86XK_WheelButton: 0x1008FF88,\n"
" XF86XK_Word: 0x1008FF89,\n"
" XF86XK_Xfer: 0x1008FF8A,\n"
" XF86XK_ZoomIn: 0x1008FF8B,\n"
" XF86XK_ZoomOut: 0x1008FF8C,\n"
" XF86XK_Away: 0x1008FF8D,\n"
" XF86XK_Messenger: 0x1008FF8E,\n"
" XF86XK_WebCam: 0x1008FF8F,\n"
" XF86XK_MailForward: 0x1008FF90,\n"
" XF86XK_Pictures: 0x1008FF91,\n"
" XF86XK_Music: 0x1008FF92,\n"
" XF86XK_Battery: 0x1008FF93,\n"
" XF86XK_Bluetooth: 0x1008FF94,\n"
" XF86XK_WLAN: 0x1008FF95,\n"
" XF86XK_UWB: 0x1008FF96,\n"
" XF86XK_AudioForward: 0x1008FF97,\n"
" XF86XK_AudioRepeat: 0x1008FF98,\n"
" XF86XK_AudioRandomPlay: 0x1008FF99,\n"
" XF86XK_Subtitle: 0x1008FF9A,\n"
" XF86XK_AudioCycleTrack: 0x1008FF9B,\n"
" XF86XK_CycleAngle: 0x1008FF9C,\n"
" XF86XK_FrameBack: 0x1008FF9D,\n"
" XF86XK_FrameForward: 0x1008FF9E,\n"
" XF86XK_Time: 0x1008FF9F,\n"
" XF86XK_Select: 0x1008FFA0,\n"
" XF86XK_View: 0x1008FFA1,\n"
" XF86XK_TopMenu: 0x1008FFA2,\n"
" XF86XK_Red: 0x1008FFA3,\n"
" XF86XK_Green: 0x1008FFA4,\n"
" XF86XK_Yellow: 0x1008FFA5,\n"
" XF86XK_Blue: 0x1008FFA6,\n"
" XF86XK_Suspend: 0x1008FFA7,\n"
" XF86XK_Hibernate: 0x1008FFA8,\n"
" XF86XK_TouchpadToggle: 0x1008FFA9,\n"
" XF86XK_TouchpadOn: 0x1008FFB0,\n"
" XF86XK_TouchpadOff: 0x1008FFB1,\n"
" XF86XK_AudioMicMute: 0x1008FFB2,\n"
" XF86XK_Switch_VT_1: 0x1008FE01,\n"
" XF86XK_Switch_VT_2: 0x1008FE02,\n"
" XF86XK_Switch_VT_3: 0x1008FE03,\n"
" XF86XK_Switch_VT_4: 0x1008FE04,\n"
" XF86XK_Switch_VT_5: 0x1008FE05,\n"
" XF86XK_Switch_VT_6: 0x1008FE06,\n"
" XF86XK_Switch_VT_7: 0x1008FE07,\n"
" XF86XK_Switch_VT_8: 0x1008FE08,\n"
" XF86XK_Switch_VT_9: 0x1008FE09,\n"
" XF86XK_Switch_VT_10: 0x1008FE0A,\n"
" XF86XK_Switch_VT_11: 0x1008FE0B,\n"
" XF86XK_Switch_VT_12: 0x1008FE0C,\n"
" XF86XK_Ungrab: 0x1008FE20,\n"
" XF86XK_ClearGrab: 0x1008FE21,\n"
" XF86XK_Next_VMode: 0x1008FE22,\n"
" XF86XK_Prev_VMode: 0x1008FE23,\n"
" XF86XK_LogWindowTree: 0x1008FE24,\n"
" XF86XK_LogGrabInfo: 0x1008FE25,\n"
"};\n"
;
if (strcmp(path, "/novnc/input/keysym.js") == 0) return novnc_input_keysym_js;
const char *novnc_input_keysymdef_js =
"/*\n"
" * Mapping from Unicode codepoints to X11/RFB keysyms\n"
" *\n"
" * This file was automatically generated from keysymdef.h\n"
" * DO NOT EDIT!\n"
" */\n"
"\n"
"/* Functions at the bottom */\n"
"/* Functions at the bottom */\n"
"\n"
"const codepoints = {\n"
" 0x0100: 0x03c0, // XK_Amacron\n"
......@@ -4770,29 +4151,648 @@ const char *novnc_input_keysymdef_js =
" 0x30fc: 0x04b0, // XK_prolongedsound\n"
"};\n"
"\n"
"window.lookup = function(u) {\n"
" // Latin-1 is one-to-one mapping\n"
" if ((u >= 0x20) && (u <= 0xff)) {\n"
" return u;\n"
" }\n"
"window.lookup = function(u) {\n"
" // Latin-1 is one-to-one mapping\n"
" if ((u >= 0x20) && (u <= 0xff)) {\n"
" return u;\n"
" }\n"
"\n"
" // Lookup table (fairly random)\n"
" const keysym = codepoints[u];\n"
" if (keysym !== undefined) {\n"
" return keysym;\n"
" }\n"
"\n"
" // General mapping as final fallback\n"
" return 0x01000000 | u;\n"
"};\n"
"window.codepoints = codepoints;\n"
"\n"
"// Create keysyms object for compatibility with util.js\n"
"window.keysyms = {\n"
" lookup: window.lookup\n"
"};\n"
;
if (strcmp(path, "/novnc/input/keysymdef.js") == 0) return novnc_input_keysymdef_js;
const char *novnc_input_keysym_js =
"/* eslint-disable key-spacing */\n"
"\n"
"window.KeyTable = {\n"
" XK_VoidSymbol: 0xffffff, /* Void symbol */\n"
"\n"
" XK_BackSpace: 0xff08, /* Back space, back char */\n"
" XK_Tab: 0xff09,\n"
" XK_Linefeed: 0xff0a, /* Linefeed, LF */\n"
" XK_Clear: 0xff0b,\n"
" XK_Return: 0xff0d, /* Return, enter */\n"
" XK_Pause: 0xff13, /* Pause, hold */\n"
" XK_Scroll_Lock: 0xff14,\n"
" XK_Sys_Req: 0xff15,\n"
" XK_Escape: 0xff1b,\n"
" XK_Delete: 0xffff, /* Delete, rubout */\n"
"\n"
" /* International & multi-key character composition */\n"
"\n"
" XK_Multi_key: 0xff20, /* Multi-key character compose */\n"
" XK_Codeinput: 0xff37,\n"
" XK_SingleCandidate: 0xff3c,\n"
" XK_MultipleCandidate: 0xff3d,\n"
" XK_PreviousCandidate: 0xff3e,\n"
"\n"
" /* Japanese keyboard support */\n"
"\n"
" XK_Kanji: 0xff21, /* Kanji, Kanji convert */\n"
" XK_Muhenkan: 0xff22, /* Cancel Conversion */\n"
" XK_Henkan_Mode: 0xff23, /* Start/Stop Conversion */\n"
" XK_Henkan: 0xff23, /* Alias for Henkan_Mode */\n"
" XK_Romaji: 0xff24, /* to Romaji */\n"
" XK_Hiragana: 0xff25, /* to Hiragana */\n"
" XK_Katakana: 0xff26, /* to Katakana */\n"
" XK_Hiragana_Katakana: 0xff27, /* Hiragana/Katakana toggle */\n"
" XK_Zenkaku: 0xff28, /* to Zenkaku */\n"
" XK_Hankaku: 0xff29, /* to Hankaku */\n"
" XK_Zenkaku_Hankaku: 0xff2a, /* Zenkaku/Hankaku toggle */\n"
" XK_Touroku: 0xff2b, /* Add to Dictionary */\n"
" XK_Massyo: 0xff2c, /* Delete from Dictionary */\n"
" XK_Kana_Lock: 0xff2d, /* Kana Lock */\n"
" XK_Kana_Shift: 0xff2e, /* Kana Shift */\n"
" XK_Eisu_Shift: 0xff2f, /* Alphanumeric Shift */\n"
" XK_Eisu_toggle: 0xff30, /* Alphanumeric toggle */\n"
" XK_Kanji_Bangou: 0xff37, /* Codeinput */\n"
" XK_Zen_Koho: 0xff3d, /* Multiple/All Candidate(s) */\n"
" XK_Mae_Koho: 0xff3e, /* Previous Candidate */\n"
"\n"
" /* Cursor control & motion */\n"
"\n"
" XK_Home: 0xff50,\n"
" XK_Left: 0xff51, /* Move left, left arrow */\n"
" XK_Up: 0xff52, /* Move up, up arrow */\n"
" XK_Right: 0xff53, /* Move right, right arrow */\n"
" XK_Down: 0xff54, /* Move down, down arrow */\n"
" XK_Prior: 0xff55, /* Prior, previous */\n"
" XK_Page_Up: 0xff55,\n"
" XK_Next: 0xff56, /* Next */\n"
" XK_Page_Down: 0xff56,\n"
" XK_End: 0xff57, /* EOL */\n"
" XK_Begin: 0xff58, /* BOL */\n"
"\n"
"\n"
" /* Misc functions */\n"
"\n"
" XK_Select: 0xff60, /* Select, mark */\n"
" XK_Print: 0xff61,\n"
" XK_Execute: 0xff62, /* Execute, run, do */\n"
" XK_Insert: 0xff63, /* Insert, insert here */\n"
" XK_Undo: 0xff65,\n"
" XK_Redo: 0xff66, /* Redo, again */\n"
" XK_Menu: 0xff67,\n"
" XK_Find: 0xff68, /* Find, search */\n"
" XK_Cancel: 0xff69, /* Cancel, stop, abort, exit */\n"
" XK_Help: 0xff6a, /* Help */\n"
" XK_Break: 0xff6b,\n"
" XK_Mode_switch: 0xff7e, /* Character set switch */\n"
" XK_script_switch: 0xff7e, /* Alias for mode_switch */\n"
" XK_Num_Lock: 0xff7f,\n"
"\n"
" /* Keypad functions, keypad numbers cleverly chosen to map to ASCII */\n"
"\n"
" XK_KP_Space: 0xff80, /* Space */\n"
" XK_KP_Tab: 0xff89,\n"
" XK_KP_Enter: 0xff8d, /* Enter */\n"
" XK_KP_F1: 0xff91, /* PF1, KP_A, ... */\n"
" XK_KP_F2: 0xff92,\n"
" XK_KP_F3: 0xff93,\n"
" XK_KP_F4: 0xff94,\n"
" XK_KP_Home: 0xff95,\n"
" XK_KP_Left: 0xff96,\n"
" XK_KP_Up: 0xff97,\n"
" XK_KP_Right: 0xff98,\n"
" XK_KP_Down: 0xff99,\n"
" XK_KP_Prior: 0xff9a,\n"
" XK_KP_Page_Up: 0xff9a,\n"
" XK_KP_Next: 0xff9b,\n"
" XK_KP_Page_Down: 0xff9b,\n"
" XK_KP_End: 0xff9c,\n"
" XK_KP_Begin: 0xff9d,\n"
" XK_KP_Insert: 0xff9e,\n"
" XK_KP_Delete: 0xff9f,\n"
" XK_KP_Equal: 0xffbd, /* Equals */\n"
" XK_KP_Multiply: 0xffaa,\n"
" XK_KP_Add: 0xffab,\n"
" XK_KP_Separator: 0xffac, /* Separator, often comma */\n"
" XK_KP_Subtract: 0xffad,\n"
" XK_KP_Decimal: 0xffae,\n"
" XK_KP_Divide: 0xffaf,\n"
"\n"
" XK_KP_0: 0xffb0,\n"
" XK_KP_1: 0xffb1,\n"
" XK_KP_2: 0xffb2,\n"
" XK_KP_3: 0xffb3,\n"
" XK_KP_4: 0xffb4,\n"
" XK_KP_5: 0xffb5,\n"
" XK_KP_6: 0xffb6,\n"
" XK_KP_7: 0xffb7,\n"
" XK_KP_8: 0xffb8,\n"
" XK_KP_9: 0xffb9,\n"
"\n"
" /*\n"
" * Auxiliary functions; note the duplicate definitions for left and right\n"
" * function keys; Sun keyboards and a few other manufacturers have such\n"
" * function key groups on the left and/or right sides of the keyboard.\n"
" * We've not found a keyboard with more than 35 function keys total.\n"
" */\n"
"\n"
" XK_F1: 0xffbe,\n"
" XK_F2: 0xffbf,\n"
" XK_F3: 0xffc0,\n"
" XK_F4: 0xffc1,\n"
" XK_F5: 0xffc2,\n"
" XK_F6: 0xffc3,\n"
" XK_F7: 0xffc4,\n"
" XK_F8: 0xffc5,\n"
" XK_F9: 0xffc6,\n"
" XK_F10: 0xffc7,\n"
" XK_F11: 0xffc8,\n"
" XK_L1: 0xffc8,\n"
" XK_F12: 0xffc9,\n"
" XK_L2: 0xffc9,\n"
" XK_F13: 0xffca,\n"
" XK_L3: 0xffca,\n"
" XK_F14: 0xffcb,\n"
" XK_L4: 0xffcb,\n"
" XK_F15: 0xffcc,\n"
" XK_L5: 0xffcc,\n"
" XK_F16: 0xffcd,\n"
" XK_L6: 0xffcd,\n"
" XK_F17: 0xffce,\n"
" XK_L7: 0xffce,\n"
" XK_F18: 0xffcf,\n"
" XK_L8: 0xffcf,\n"
" XK_F19: 0xffd0,\n"
" XK_L9: 0xffd0,\n"
" XK_F20: 0xffd1,\n"
" XK_L10: 0xffd1,\n"
" XK_F21: 0xffd2,\n"
" XK_R1: 0xffd2,\n"
" XK_F22: 0xffd3,\n"
" XK_R2: 0xffd3,\n"
" XK_F23: 0xffd4,\n"
" XK_R3: 0xffd4,\n"
" XK_F24: 0xffd5,\n"
" XK_R4: 0xffd5,\n"
" XK_F25: 0xffd6,\n"
" XK_R5: 0xffd6,\n"
" XK_F26: 0xffd7,\n"
" XK_R6: 0xffd7,\n"
" XK_F27: 0xffd8,\n"
" XK_R7: 0xffd8,\n"
" XK_F28: 0xffd9,\n"
" XK_R8: 0xffd9,\n"
" XK_F29: 0xffda,\n"
" XK_R9: 0xffda,\n"
" XK_F30: 0xffdb,\n"
" XK_R10: 0xffdb,\n"
" XK_F31: 0xffdc,\n"
" XK_R11: 0xffdc,\n"
" XK_F32: 0xffdd,\n"
" XK_R12: 0xffdd,\n"
" XK_F33: 0xffde,\n"
" XK_R13: 0xffde,\n"
" XK_F34: 0xffdf,\n"
" XK_R14: 0xffdf,\n"
" XK_F35: 0xffe0,\n"
" XK_R15: 0xffe0,\n"
"\n"
" /* Modifiers */\n"
"\n"
" XK_Shift_L: 0xffe1, /* Left shift */\n"
" XK_Shift_R: 0xffe2, /* Right shift */\n"
" XK_Control_L: 0xffe3, /* Left control */\n"
" XK_Control_R: 0xffe4, /* Right control */\n"
" XK_Caps_Lock: 0xffe5, /* Caps lock */\n"
" XK_Shift_Lock: 0xffe6, /* Shift lock */\n"
"\n"
" XK_Meta_L: 0xffe7, /* Left meta */\n"
" XK_Meta_R: 0xffe8, /* Right meta */\n"
" XK_Alt_L: 0xffe9, /* Left alt */\n"
" XK_Alt_R: 0xffea, /* Right alt */\n"
" XK_Super_L: 0xffeb, /* Left super */\n"
" XK_Super_R: 0xffec, /* Right super */\n"
" XK_Hyper_L: 0xffed, /* Left hyper */\n"
" XK_Hyper_R: 0xffee, /* Right hyper */\n"
"\n"
" /*\n"
" * Keyboard (XKB) Extension function and modifier keys\n"
" * (from Appendix C of \"The X Keyboard Extension: Protocol Specification\")\n"
" * Byte 3 = 0xfe\n"
" */\n"
"\n"
" XK_ISO_Level3_Shift: 0xfe03, /* AltGr */\n"
" XK_ISO_Next_Group: 0xfe08,\n"
" XK_ISO_Prev_Group: 0xfe0a,\n"
" XK_ISO_First_Group: 0xfe0c,\n"
" XK_ISO_Last_Group: 0xfe0e,\n"
"\n"
" /*\n"
" * Latin 1\n"
" * (ISO/IEC 8859-1: Unicode U+0020..U+00FF)\n"
" * Byte 3: 0\n"
" */\n"
"\n"
" XK_space: 0x0020, /* U+0020 SPACE */\n"
" XK_exclam: 0x0021, /* U+0021 EXCLAMATION MARK */\n"
" XK_quotedbl: 0x0022, /* U+0022 QUOTATION MARK */\n"
" XK_numbersign: 0x0023, /* U+0023 NUMBER SIGN */\n"
" XK_dollar: 0x0024, /* U+0024 DOLLAR SIGN */\n"
" XK_percent: 0x0025, /* U+0025 PERCENT SIGN */\n"
" XK_ampersand: 0x0026, /* U+0026 AMPERSAND */\n"
" XK_apostrophe: 0x0027, /* U+0027 APOSTROPHE */\n"
" XK_quoteright: 0x0027, /* deprecated */\n"
" XK_parenleft: 0x0028, /* U+0028 LEFT PARENTHESIS */\n"
" XK_parenright: 0x0029, /* U+0029 RIGHT PARENTHESIS */\n"
" XK_asterisk: 0x002a, /* U+002A ASTERISK */\n"
" XK_plus: 0x002b, /* U+002B PLUS SIGN */\n"
" XK_comma: 0x002c, /* U+002C COMMA */\n"
" XK_minus: 0x002d, /* U+002D HYPHEN-MINUS */\n"
" XK_period: 0x002e, /* U+002E FULL STOP */\n"
" XK_slash: 0x002f, /* U+002F SOLIDUS */\n"
" XK_0: 0x0030, /* U+0030 DIGIT ZERO */\n"
" XK_1: 0x0031, /* U+0031 DIGIT ONE */\n"
" XK_2: 0x0032, /* U+0032 DIGIT TWO */\n"
" XK_3: 0x0033, /* U+0033 DIGIT THREE */\n"
" XK_4: 0x0034, /* U+0034 DIGIT FOUR */\n"
" XK_5: 0x0035, /* U+0035 DIGIT FIVE */\n"
" XK_6: 0x0036, /* U+0036 DIGIT SIX */\n"
" XK_7: 0x0037, /* U+0037 DIGIT SEVEN */\n"
" XK_8: 0x0038, /* U+0038 DIGIT EIGHT */\n"
" XK_9: 0x0039, /* U+0039 DIGIT NINE */\n"
" XK_colon: 0x003a, /* U+003A COLON */\n"
" XK_semicolon: 0x003b, /* U+003B SEMICOLON */\n"
" XK_less: 0x003c, /* U+003C LESS-THAN SIGN */\n"
" XK_equal: 0x003d, /* U+003D EQUALS SIGN */\n"
" XK_greater: 0x003e, /* U+003E GREATER-THAN SIGN */\n"
" XK_question: 0x003f, /* U+003F QUESTION MARK */\n"
" XK_at: 0x0040, /* U+0040 COMMERCIAL AT */\n"
" XK_A: 0x0041, /* U+0041 LATIN CAPITAL LETTER A */\n"
" XK_B: 0x0042, /* U+0042 LATIN CAPITAL LETTER B */\n"
" XK_C: 0x0043, /* U+0043 LATIN CAPITAL LETTER C */\n"
" XK_D: 0x0044, /* U+0044 LATIN CAPITAL LETTER D */\n"
" XK_E: 0x0045, /* U+0045 LATIN CAPITAL LETTER E */\n"
" XK_F: 0x0046, /* U+0046 LATIN CAPITAL LETTER F */\n"
" XK_G: 0x0047, /* U+0047 LATIN CAPITAL LETTER G */\n"
" XK_H: 0x0048, /* U+0048 LATIN CAPITAL LETTER H */\n"
" XK_I: 0x0049, /* U+0049 LATIN CAPITAL LETTER I */\n"
" XK_J: 0x004a, /* U+004A LATIN CAPITAL LETTER J */\n"
" XK_K: 0x004b, /* U+004B LATIN CAPITAL LETTER K */\n"
" XK_L: 0x004c, /* U+004C LATIN CAPITAL LETTER L */\n"
" XK_M: 0x004d, /* U+004D LATIN CAPITAL LETTER M */\n"
" XK_N: 0x004e, /* U+004E LATIN CAPITAL LETTER N */\n"
" XK_O: 0x004f, /* U+004F LATIN CAPITAL LETTER O */\n"
" XK_P: 0x0050, /* U+0050 LATIN CAPITAL LETTER P */\n"
" XK_Q: 0x0051, /* U+0051 LATIN CAPITAL LETTER Q */\n"
" XK_R: 0x0052, /* U+0052 LATIN CAPITAL LETTER R */\n"
" XK_S: 0x0053, /* U+0053 LATIN CAPITAL LETTER S */\n"
" XK_T: 0x0054, /* U+0054 LATIN CAPITAL LETTER T */\n"
" XK_U: 0x0055, /* U+0055 LATIN CAPITAL LETTER U */\n"
" XK_V: 0x0056, /* U+0056 LATIN CAPITAL LETTER V */\n"
" XK_W: 0x0057, /* U+0057 LATIN CAPITAL LETTER W */\n"
" XK_X: 0x0058, /* U+0058 LATIN CAPITAL LETTER X */\n"
" XK_Y: 0x0059, /* U+0059 LATIN CAPITAL LETTER Y */\n"
" XK_Z: 0x005a, /* U+005A LATIN CAPITAL LETTER Z */\n"
" XK_bracketleft: 0x005b, /* U+005B LEFT SQUARE BRACKET */\n"
" XK_backslash: 0x005c, /* U+005C REVERSE SOLIDUS */\n"
" XK_bracketright: 0x005d, /* U+005D RIGHT SQUARE BRACKET */\n"
" XK_asciicircum: 0x005e, /* U+005E CIRCUMFLEX ACCENT */\n"
" XK_underscore: 0x005f, /* U+005F LOW LINE */\n"
" XK_grave: 0x0060, /* U+0060 GRAVE ACCENT */\n"
" XK_quoteleft: 0x0060, /* deprecated */\n"
" XK_a: 0x0061, /* U+0061 LATIN SMALL LETTER A */\n"
" XK_b: 0x0062, /* U+0062 LATIN SMALL LETTER B */\n"
" XK_c: 0x0063, /* U+0063 LATIN SMALL LETTER C */\n"
" XK_d: 0x0064, /* U+0064 LATIN SMALL LETTER D */\n"
" XK_e: 0x0065, /* U+0065 LATIN SMALL LETTER E */\n"
" XK_f: 0x0066, /* U+0066 LATIN SMALL LETTER F */\n"
" XK_g: 0x0067, /* U+0067 LATIN SMALL LETTER G */\n"
" XK_h: 0x0068, /* U+0068 LATIN SMALL LETTER H */\n"
" XK_i: 0x0069, /* U+0069 LATIN SMALL LETTER I */\n"
" XK_j: 0x006a, /* U+006A LATIN SMALL LETTER J */\n"
" XK_k: 0x006b, /* U+006B LATIN SMALL LETTER K */\n"
" XK_l: 0x006c, /* U+006C LATIN SMALL LETTER L */\n"
" XK_m: 0x006d, /* U+006D LATIN SMALL LETTER M */\n"
" XK_n: 0x006e, /* U+006E LATIN SMALL LETTER N */\n"
" XK_o: 0x006f, /* U+006F LATIN SMALL LETTER O */\n"
" XK_p: 0x0070, /* U+0070 LATIN SMALL LETTER P */\n"
" XK_q: 0x0071, /* U+0071 LATIN SMALL LETTER Q */\n"
" XK_r: 0x0072, /* U+0072 LATIN SMALL LETTER R */\n"
" XK_s: 0x0073, /* U+0073 LATIN SMALL LETTER S */\n"
" XK_t: 0x0074, /* U+0074 LATIN SMALL LETTER T */\n"
" XK_u: 0x0075, /* U+0075 LATIN SMALL LETTER U */\n"
" XK_v: 0x0076, /* U+0076 LATIN SMALL LETTER V */\n"
" XK_w: 0x0077, /* U+0077 LATIN SMALL LETTER W */\n"
" XK_x: 0x0078, /* U+0078 LATIN SMALL LETTER X */\n"
" XK_y: 0x0079, /* U+0079 LATIN SMALL LETTER Y */\n"
" XK_z: 0x007a, /* U+007A LATIN SMALL LETTER Z */\n"
" XK_braceleft: 0x007b, /* U+007B LEFT CURLY BRACKET */\n"
" XK_bar: 0x007c, /* U+007C VERTICAL LINE */\n"
" XK_braceright: 0x007d, /* U+007D RIGHT CURLY BRACKET */\n"
" XK_asciitilde: 0x007e, /* U+007E TILDE */\n"
"\n"
" XK_nobreakspace: 0x00a0, /* U+00A0 NO-BREAK SPACE */\n"
" XK_exclamdown: 0x00a1, /* U+00A1 INVERTED EXCLAMATION MARK */\n"
" XK_cent: 0x00a2, /* U+00A2 CENT SIGN */\n"
" XK_sterling: 0x00a3, /* U+00A3 POUND SIGN */\n"
" XK_currency: 0x00a4, /* U+00A4 CURRENCY SIGN */\n"
" XK_yen: 0x00a5, /* U+00A5 YEN SIGN */\n"
" XK_brokenbar: 0x00a6, /* U+00A6 BROKEN BAR */\n"
" XK_section: 0x00a7, /* U+00A7 SECTION SIGN */\n"
" XK_diaeresis: 0x00a8, /* U+00A8 DIAERESIS */\n"
" XK_copyright: 0x00a9, /* U+00A9 COPYRIGHT SIGN */\n"
" XK_ordfeminine: 0x00aa, /* U+00AA FEMININE ORDINAL INDICATOR */\n"
" XK_guillemotleft: 0x00ab, /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */\n"
" XK_notsign: 0x00ac, /* U+00AC NOT SIGN */\n"
" XK_hyphen: 0x00ad, /* U+00AD SOFT HYPHEN */\n"
" XK_registered: 0x00ae, /* U+00AE REGISTERED SIGN */\n"
" XK_macron: 0x00af, /* U+00AF MACRON */\n"
" XK_degree: 0x00b0, /* U+00B0 DEGREE SIGN */\n"
" XK_plusminus: 0x00b1, /* U+00B1 PLUS-MINUS SIGN */\n"
" XK_twosuperior: 0x00b2, /* U+00B2 SUPERSCRIPT TWO */\n"
" XK_threesuperior: 0x00b3, /* U+00B3 SUPERSCRIPT THREE */\n"
" XK_acute: 0x00b4, /* U+00B4 ACUTE ACCENT */\n"
" XK_mu: 0x00b5, /* U+00B5 MICRO SIGN */\n"
" XK_paragraph: 0x00b6, /* U+00B6 PILCROW SIGN */\n"
" XK_periodcentered: 0x00b7, /* U+00B7 MIDDLE DOT */\n"
" XK_cedilla: 0x00b8, /* U+00B8 CEDILLA */\n"
" XK_onesuperior: 0x00b9, /* U+00B9 SUPERSCRIPT ONE */\n"
" XK_masculine: 0x00ba, /* U+00BA MASCULINE ORDINAL INDICATOR */\n"
" XK_guillemotright: 0x00bb, /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */\n"
" XK_onequarter: 0x00bc, /* U+00BC VULGAR FRACTION ONE QUARTER */\n"
" XK_onehalf: 0x00bd, /* U+00BD VULGAR FRACTION ONE HALF */\n"
" XK_threequarters: 0x00be, /* U+00BE VULGAR FRACTION THREE QUARTERS */\n"
" XK_questiondown: 0x00bf, /* U+00BF INVERTED QUESTION MARK */\n"
" XK_Agrave: 0x00c0, /* U+00C0 LATIN CAPITAL LETTER A WITH GRAVE */\n"
" XK_Aacute: 0x00c1, /* U+00C1 LATIN CAPITAL LETTER A WITH ACUTE */\n"
" XK_Acircumflex: 0x00c2, /* U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX */\n"
" XK_Atilde: 0x00c3, /* U+00C3 LATIN CAPITAL LETTER A WITH TILDE */\n"
" XK_Adiaeresis: 0x00c4, /* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */\n"
" XK_Aring: 0x00c5, /* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */\n"
" XK_AE: 0x00c6, /* U+00C6 LATIN CAPITAL LETTER AE */\n"
" XK_Ccedilla: 0x00c7, /* U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA */\n"
" XK_Egrave: 0x00c8, /* U+00C8 LATIN CAPITAL LETTER E WITH GRAVE */\n"
" XK_Eacute: 0x00c9, /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */\n"
" XK_Ecircumflex: 0x00ca, /* U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX */\n"
" XK_Ediaeresis: 0x00cb, /* U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS */\n"
" XK_Igrave: 0x00cc, /* U+00CC LATIN CAPITAL LETTER I WITH GRAVE */\n"
" XK_Iacute: 0x00cd, /* U+00CD LATIN CAPITAL LETTER I WITH ACUTE */\n"
" XK_Icircumflex: 0x00ce, /* U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX */\n"
" XK_Idiaeresis: 0x00cf, /* U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS */\n"
" XK_ETH: 0x00d0, /* U+00D0 LATIN CAPITAL LETTER ETH */\n"
" XK_Eth: 0x00d0, /* deprecated */\n"
" XK_Ntilde: 0x00d1, /* U+00D1 LATIN CAPITAL LETTER N WITH TILDE */\n"
" XK_Ograve: 0x00d2, /* U+00D2 LATIN CAPITAL LETTER O WITH GRAVE */\n"
" XK_Oacute: 0x00d3, /* U+00D3 LATIN CAPITAL LETTER O WITH ACUTE */\n"
" XK_Ocircumflex: 0x00d4, /* U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX */\n"
" XK_Otilde: 0x00d5, /* U+00D5 LATIN CAPITAL LETTER O WITH TILDE */\n"
" XK_Odiaeresis: 0x00d6, /* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */\n"
" XK_multiply: 0x00d7, /* U+00D7 MULTIPLICATION SIGN */\n"
" XK_Oslash: 0x00d8, /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */\n"
" XK_Ooblique: 0x00d8, /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */\n"
" XK_Ugrave: 0x00d9, /* U+00D9 LATIN CAPITAL LETTER U WITH GRAVE */\n"
" XK_Uacute: 0x00da, /* U+00DA LATIN CAPITAL LETTER U WITH ACUTE */\n"
" XK_Ucircumflex: 0x00db, /* U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX */\n"
" XK_Udiaeresis: 0x00dc, /* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */\n"
" XK_Yacute: 0x00dd, /* U+00DD LATIN CAPITAL LETTER Y WITH ACUTE */\n"
" XK_THORN: 0x00de, /* U+00DE LATIN CAPITAL LETTER THORN */\n"
" XK_Thorn: 0x00de, /* deprecated */\n"
" XK_ssharp: 0x00df, /* U+00DF LATIN SMALL LETTER SHARP S */\n"
" XK_agrave: 0x00e0, /* U+00E0 LATIN SMALL LETTER A WITH GRAVE */\n"
" XK_aacute: 0x00e1, /* U+00E1 LATIN SMALL LETTER A WITH ACUTE */\n"
" XK_acircumflex: 0x00e2, /* U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX */\n"
" XK_atilde: 0x00e3, /* U+00E3 LATIN SMALL LETTER A WITH TILDE */\n"
" XK_adiaeresis: 0x00e4, /* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */\n"
" XK_aring: 0x00e5, /* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */\n"
" XK_ae: 0x00e6, /* U+00E6 LATIN SMALL LETTER AE */\n"
" XK_ccedilla: 0x00e7, /* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */\n"
" XK_egrave: 0x00e8, /* U+00E8 LATIN SMALL LETTER E WITH GRAVE */\n"
" XK_eacute: 0x00e9, /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */\n"
" XK_ecircumflex: 0x00ea, /* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */\n"
" XK_ediaeresis: 0x00eb, /* U+00EB LATIN SMALL LETTER E WITH DIAERESIS */\n"
" XK_igrave: 0x00ec, /* U+00EC LATIN SMALL LETTER I WITH GRAVE */\n"
" XK_iacute: 0x00ed, /* U+00ED LATIN SMALL LETTER I WITH ACUTE */\n"
" XK_icircumflex: 0x00ee, /* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */\n"
" XK_idiaeresis: 0x00ef, /* U+00EF LATIN SMALL LETTER I WITH DIAERESIS */\n"
" XK_eth: 0x00f0, /* U+00F0 LATIN SMALL LETTER ETH */\n"
" XK_ntilde: 0x00f1, /* U+00F1 LATIN SMALL LETTER N WITH TILDE */\n"
" XK_ograve: 0x00f2, /* U+00F2 LATIN SMALL LETTER O WITH GRAVE */\n"
" XK_oacute: 0x00f3, /* U+00F3 LATIN SMALL LETTER O WITH ACUTE */\n"
" XK_ocircumflex: 0x00f4, /* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */\n"
" XK_otilde: 0x00f5, /* U+00F5 LATIN SMALL LETTER O WITH TILDE */\n"
" XK_odiaeresis: 0x00f6, /* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */\n"
" XK_division: 0x00f7, /* U+00F7 DIVISION SIGN */\n"
" XK_oslash: 0x00f8, /* U+00F8 LATIN SMALL LETTER O WITH STROKE */\n"
" XK_ooblique: 0x00f8, /* U+00F8 LATIN SMALL LETTER O WITH STROKE */\n"
" XK_ugrave: 0x00f9, /* U+00F9 LATIN SMALL LETTER U WITH GRAVE */\n"
" XK_uacute: 0x00fa, /* U+00FA LATIN SMALL LETTER U WITH ACUTE */\n"
" XK_ucircumflex: 0x00fb, /* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */\n"
" XK_udiaeresis: 0x00fc, /* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */\n"
" XK_yacute: 0x00fd, /* U+00FD LATIN SMALL LETTER Y WITH ACUTE */\n"
" XK_thorn: 0x00fe, /* U+00FE LATIN SMALL LETTER THORN */\n"
" XK_ydiaeresis: 0x00ff, /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */\n"
"\n"
" /*\n"
" * Korean\n"
" * Byte 3 = 0x0e\n"
" */\n"
"\n"
" // Lookup table (fairly random)\n"
" const keysym = codepoints[u];\n"
" if (keysym !== undefined) {\n"
" return keysym;\n"
" }\n"
" XK_Hangul: 0xff31, /* Hangul start/stop(toggle) */\n"
" XK_Hangul_Hanja: 0xff34, /* Start Hangul->Hanja Conversion */\n"
" XK_Hangul_Jeonja: 0xff38, /* Jeonja mode */\n"
"\n"
" // General mapping as final fallback\n"
" return 0x01000000 | u;\n"
"};\n"
"window.codepoints = codepoints;\n"
" /*\n"
" * XFree86 vendor specific keysyms.\n"
" *\n"
" * The XFree86 keysym range is 0x10080001 - 0x1008FFFF.\n"
" */\n"
"\n"
"// Create keysyms object for compatibility with util.js\n"
"window.keysyms = {\n"
" lookup: window.lookup\n"
" XF86XK_ModeLock: 0x1008FF01,\n"
" XF86XK_MonBrightnessUp: 0x1008FF02,\n"
" XF86XK_MonBrightnessDown: 0x1008FF03,\n"
" XF86XK_KbdLightOnOff: 0x1008FF04,\n"
" XF86XK_KbdBrightnessUp: 0x1008FF05,\n"
" XF86XK_KbdBrightnessDown: 0x1008FF06,\n"
" XF86XK_Standby: 0x1008FF10,\n"
" XF86XK_AudioLowerVolume: 0x1008FF11,\n"
" XF86XK_AudioMute: 0x1008FF12,\n"
" XF86XK_AudioRaiseVolume: 0x1008FF13,\n"
" XF86XK_AudioPlay: 0x1008FF14,\n"
" XF86XK_AudioStop: 0x1008FF15,\n"
" XF86XK_AudioPrev: 0x1008FF16,\n"
" XF86XK_AudioNext: 0x1008FF17,\n"
" XF86XK_HomePage: 0x1008FF18,\n"
" XF86XK_Mail: 0x1008FF19,\n"
" XF86XK_Start: 0x1008FF1A,\n"
" XF86XK_Search: 0x1008FF1B,\n"
" XF86XK_AudioRecord: 0x1008FF1C,\n"
" XF86XK_Calculator: 0x1008FF1D,\n"
" XF86XK_Memo: 0x1008FF1E,\n"
" XF86XK_ToDoList: 0x1008FF1F,\n"
" XF86XK_Calendar: 0x1008FF20,\n"
" XF86XK_PowerDown: 0x1008FF21,\n"
" XF86XK_ContrastAdjust: 0x1008FF22,\n"
" XF86XK_RockerUp: 0x1008FF23,\n"
" XF86XK_RockerDown: 0x1008FF24,\n"
" XF86XK_RockerEnter: 0x1008FF25,\n"
" XF86XK_Back: 0x1008FF26,\n"
" XF86XK_Forward: 0x1008FF27,\n"
" XF86XK_Stop: 0x1008FF28,\n"
" XF86XK_Refresh: 0x1008FF29,\n"
" XF86XK_PowerOff: 0x1008FF2A,\n"
" XF86XK_WakeUp: 0x1008FF2B,\n"
" XF86XK_Eject: 0x1008FF2C,\n"
" XF86XK_ScreenSaver: 0x1008FF2D,\n"
" XF86XK_WWW: 0x1008FF2E,\n"
" XF86XK_Sleep: 0x1008FF2F,\n"
" XF86XK_Favorites: 0x1008FF30,\n"
" XF86XK_AudioPause: 0x1008FF31,\n"
" XF86XK_AudioMedia: 0x1008FF32,\n"
" XF86XK_MyComputer: 0x1008FF33,\n"
" XF86XK_VendorHome: 0x1008FF34,\n"
" XF86XK_LightBulb: 0x1008FF35,\n"
" XF86XK_Shop: 0x1008FF36,\n"
" XF86XK_History: 0x1008FF37,\n"
" XF86XK_OpenURL: 0x1008FF38,\n"
" XF86XK_AddFavorite: 0x1008FF39,\n"
" XF86XK_HotLinks: 0x1008FF3A,\n"
" XF86XK_BrightnessAdjust: 0x1008FF3B,\n"
" XF86XK_Finance: 0x1008FF3C,\n"
" XF86XK_Community: 0x1008FF3D,\n"
" XF86XK_AudioRewind: 0x1008FF3E,\n"
" XF86XK_BackForward: 0x1008FF3F,\n"
" XF86XK_Launch0: 0x1008FF40,\n"
" XF86XK_Launch1: 0x1008FF41,\n"
" XF86XK_Launch2: 0x1008FF42,\n"
" XF86XK_Launch3: 0x1008FF43,\n"
" XF86XK_Launch4: 0x1008FF44,\n"
" XF86XK_Launch5: 0x1008FF45,\n"
" XF86XK_Launch6: 0x1008FF46,\n"
" XF86XK_Launch7: 0x1008FF47,\n"
" XF86XK_Launch8: 0x1008FF48,\n"
" XF86XK_Launch9: 0x1008FF49,\n"
" XF86XK_LaunchA: 0x1008FF4A,\n"
" XF86XK_LaunchB: 0x1008FF4B,\n"
" XF86XK_LaunchC: 0x1008FF4C,\n"
" XF86XK_LaunchD: 0x1008FF4D,\n"
" XF86XK_LaunchE: 0x1008FF4E,\n"
" XF86XK_LaunchF: 0x1008FF4F,\n"
" XF86XK_ApplicationLeft: 0x1008FF50,\n"
" XF86XK_ApplicationRight: 0x1008FF51,\n"
" XF86XK_Book: 0x1008FF52,\n"
" XF86XK_CD: 0x1008FF53,\n"
" XF86XK_Calculater: 0x1008FF54,\n"
" XF86XK_Clear: 0x1008FF55,\n"
" XF86XK_Close: 0x1008FF56,\n"
" XF86XK_Copy: 0x1008FF57,\n"
" XF86XK_Cut: 0x1008FF58,\n"
" XF86XK_Display: 0x1008FF59,\n"
" XF86XK_DOS: 0x1008FF5A,\n"
" XF86XK_Documents: 0x1008FF5B,\n"
" XF86XK_Excel: 0x1008FF5C,\n"
" XF86XK_Explorer: 0x1008FF5D,\n"
" XF86XK_Game: 0x1008FF5E,\n"
" XF86XK_Go: 0x1008FF5F,\n"
" XF86XK_iTouch: 0x1008FF60,\n"
" XF86XK_LogOff: 0x1008FF61,\n"
" XF86XK_Market: 0x1008FF62,\n"
" XF86XK_Meeting: 0x1008FF63,\n"
" XF86XK_MenuKB: 0x1008FF65,\n"
" XF86XK_MenuPB: 0x1008FF66,\n"
" XF86XK_MySites: 0x1008FF67,\n"
" XF86XK_New: 0x1008FF68,\n"
" XF86XK_News: 0x1008FF69,\n"
" XF86XK_OfficeHome: 0x1008FF6A,\n"
" XF86XK_Open: 0x1008FF6B,\n"
" XF86XK_Option: 0x1008FF6C,\n"
" XF86XK_Paste: 0x1008FF6D,\n"
" XF86XK_Phone: 0x1008FF6E,\n"
" XF86XK_Q: 0x1008FF70,\n"
" XF86XK_Reply: 0x1008FF72,\n"
" XF86XK_Reload: 0x1008FF73,\n"
" XF86XK_RotateWindows: 0x1008FF74,\n"
" XF86XK_RotationPB: 0x1008FF75,\n"
" XF86XK_RotationKB: 0x1008FF76,\n"
" XF86XK_Save: 0x1008FF77,\n"
" XF86XK_ScrollUp: 0x1008FF78,\n"
" XF86XK_ScrollDown: 0x1008FF79,\n"
" XF86XK_ScrollClick: 0x1008FF7A,\n"
" XF86XK_Send: 0x1008FF7B,\n"
" XF86XK_Spell: 0x1008FF7C,\n"
" XF86XK_SplitScreen: 0x1008FF7D,\n"
" XF86XK_Support: 0x1008FF7E,\n"
" XF86XK_TaskPane: 0x1008FF7F,\n"
" XF86XK_Terminal: 0x1008FF80,\n"
" XF86XK_Tools: 0x1008FF81,\n"
" XF86XK_Travel: 0x1008FF82,\n"
" XF86XK_UserPB: 0x1008FF84,\n"
" XF86XK_User1KB: 0x1008FF85,\n"
" XF86XK_User2KB: 0x1008FF86,\n"
" XF86XK_Video: 0x1008FF87,\n"
" XF86XK_WheelButton: 0x1008FF88,\n"
" XF86XK_Word: 0x1008FF89,\n"
" XF86XK_Xfer: 0x1008FF8A,\n"
" XF86XK_ZoomIn: 0x1008FF8B,\n"
" XF86XK_ZoomOut: 0x1008FF8C,\n"
" XF86XK_Away: 0x1008FF8D,\n"
" XF86XK_Messenger: 0x1008FF8E,\n"
" XF86XK_WebCam: 0x1008FF8F,\n"
" XF86XK_MailForward: 0x1008FF90,\n"
" XF86XK_Pictures: 0x1008FF91,\n"
" XF86XK_Music: 0x1008FF92,\n"
" XF86XK_Battery: 0x1008FF93,\n"
" XF86XK_Bluetooth: 0x1008FF94,\n"
" XF86XK_WLAN: 0x1008FF95,\n"
" XF86XK_UWB: 0x1008FF96,\n"
" XF86XK_AudioForward: 0x1008FF97,\n"
" XF86XK_AudioRepeat: 0x1008FF98,\n"
" XF86XK_AudioRandomPlay: 0x1008FF99,\n"
" XF86XK_Subtitle: 0x1008FF9A,\n"
" XF86XK_AudioCycleTrack: 0x1008FF9B,\n"
" XF86XK_CycleAngle: 0x1008FF9C,\n"
" XF86XK_FrameBack: 0x1008FF9D,\n"
" XF86XK_FrameForward: 0x1008FF9E,\n"
" XF86XK_Time: 0x1008FF9F,\n"
" XF86XK_Select: 0x1008FFA0,\n"
" XF86XK_View: 0x1008FFA1,\n"
" XF86XK_TopMenu: 0x1008FFA2,\n"
" XF86XK_Red: 0x1008FFA3,\n"
" XF86XK_Green: 0x1008FFA4,\n"
" XF86XK_Yellow: 0x1008FFA5,\n"
" XF86XK_Blue: 0x1008FFA6,\n"
" XF86XK_Suspend: 0x1008FFA7,\n"
" XF86XK_Hibernate: 0x1008FFA8,\n"
" XF86XK_TouchpadToggle: 0x1008FFA9,\n"
" XF86XK_TouchpadOn: 0x1008FFB0,\n"
" XF86XK_TouchpadOff: 0x1008FFB1,\n"
" XF86XK_AudioMicMute: 0x1008FFB2,\n"
" XF86XK_Switch_VT_1: 0x1008FE01,\n"
" XF86XK_Switch_VT_2: 0x1008FE02,\n"
" XF86XK_Switch_VT_3: 0x1008FE03,\n"
" XF86XK_Switch_VT_4: 0x1008FE04,\n"
" XF86XK_Switch_VT_5: 0x1008FE05,\n"
" XF86XK_Switch_VT_6: 0x1008FE06,\n"
" XF86XK_Switch_VT_7: 0x1008FE07,\n"
" XF86XK_Switch_VT_8: 0x1008FE08,\n"
" XF86XK_Switch_VT_9: 0x1008FE09,\n"
" XF86XK_Switch_VT_10: 0x1008FE0A,\n"
" XF86XK_Switch_VT_11: 0x1008FE0B,\n"
" XF86XK_Switch_VT_12: 0x1008FE0C,\n"
" XF86XK_Ungrab: 0x1008FE20,\n"
" XF86XK_ClearGrab: 0x1008FE21,\n"
" XF86XK_Next_VMode: 0x1008FE22,\n"
" XF86XK_Prev_VMode: 0x1008FE23,\n"
" XF86XK_LogWindowTree: 0x1008FE24,\n"
" XF86XK_LogGrabInfo: 0x1008FE25,\n"
"};\n"
;
if (strcmp(path, "/novnc/input/keysymdef.js") == 0) return novnc_input_keysymdef_js;
if (strcmp(path, "/novnc/input/keysym.js") == 0) return novnc_input_keysym_js;
const char *novnc_input_util_js =
"\n"
"// Get 'KeyboardEvent.code', handling legacy browsers\n"
......
......@@ -18,8 +18,8 @@
#include "html_pages/novnc_input_fixedkeys_js_page.h"
#include "html_pages/novnc_input_gesturehandler_js_page.h"
#include "html_pages/novnc_input_keyboard_js_page.h"
#include "html_pages/novnc_input_keysym_js_page.h"
#include "html_pages/novnc_input_keysymdef_js_page.h"
#include "html_pages/novnc_input_keysym_js_page.h"
#include "html_pages/novnc_input_util_js_page.h"
#include "html_pages/novnc_input_vkeys_js_page.h"
#include "html_pages/novnc_input_xtscancodes_js_page.h"
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -3,8 +3,8 @@
#include "html_pages/rdp_clipboard_js_page.h"
#include "html_pages/rdp_mstsc_js_page.h"
#include "html_pages/rdp_out_stream_js_page.h"
#include "html_pages/rdp_rdp_wasm_js_page.h"
#include "html_pages/rdp_rdp_graphics_js_page.h"
#include "html_pages/rdp_rdp_wasm_js_page.h"
#include "html_pages/rdp_reversed_layouts_js_page.h"
#include "html_pages/rdp_scancodes_js_page.h"
#include "html_pages/rdp_rdp_wasm_page.h"
......
......@@ -48,6 +48,7 @@ static const char *TUNNEL_REQUEST_MSG = "{\"type\":\"tunnel_request\",\"request_
static const char *TUNNEL_ACK_MSG = "{\"type\":\"tunnel_ack\",\"request_id\":\"%s\"}";
static const char *TUNNEL_ERROR_MSG = "{\"type\":\"tunnel_error\",\"request_id\":\"%s\",\"error\":\"%s\"}";
void format_bytes(unsigned long long bytes, char *buffer, size_t buffer_size) {
if (bytes < 1024) {
snprintf(buffer, buffer_size, "%llu B", bytes);
......@@ -887,9 +888,13 @@ int websocket_handle_message(wssshd_state_t *state, ws_connection_t *conn __attr
if (request_id) {
// Find the tunnel and mark it as acknowledged
// This is a simple acknowledgment - in a full implementation,
// you might want to track tunnel state more thoroughly
if (state->debug) printf("[DEBUG - %s -> wssshd] Tunnel %s acknowledged by client\n", direction, request_id);
tunnel_t *tunnel = websocket_find_tunnel(state, request_id);
if (tunnel) {
tunnel_update_status(tunnel, TUNNEL_STATUS_ACTIVE, NULL);
if (state->debug) printf("[DEBUG - %s -> wssshd] Tunnel %s acknowledged by client and set to ACTIVE\n", direction, request_id);
} else {
if (state->debug) printf("[DEBUG - %s -> wssshd] Tunnel %s not found for acknowledgment\n", direction, request_id);
}
}
if (request_id) free(request_id);
......@@ -1072,6 +1077,7 @@ int websocket_handle_message(wssshd_state_t *state, ws_connection_t *conn __attr
// Find the tunnel
tunnel_t *tunnel = websocket_find_tunnel(state, request_id);
if (tunnel) {
// Normal tunnel forwarding
// Determine which side to forward to based on sender
ws_connection_t *target_conn = NULL;
const char *target_side = NULL;
......
......@@ -107,6 +107,8 @@ char *base64_encode(const unsigned char *data, size_t len) {
return out;
}
// Compute WebSocket accept key
char *ws_compute_accept_key(const char *key) {
if (!key) return NULL;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment