Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
wsssh
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexlab
wsssh
Commits
14927ec6
Commit
14927ec6
authored
Jan 19, 2026
by
Stefy Lanza (nextime / spora )
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Proxy is working
parent
cb06629b
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
686 additions
and
678 deletions
+686
-678
novnc_asset_map.c
wssshd2/novnc_asset_map.c
+645
-645
novnc_assets.h
wssshd2/novnc_assets.h
+1
-1
rdp_asset_map.c
wssshd2/rdp_asset_map.c
+28
-28
rdp_assets.h
wssshd2/rdp_assets.h
+1
-1
websocket.c
wssshd2/websocket.c
+9
-3
websocket_protocol.c
wssshd2/websocket_protocol.c
+2
-0
No files found.
wssshd2/novnc_asset_map.c
View file @
14927ec6
...
@@ -3479,634 +3479,15 @@ const char *novnc_input_keyboard_js =
...
@@ -3479,634 +3479,15 @@ const char *novnc_input_keyboard_js =
"window.Keyboard = Keyboard;
\n
"
"window.Keyboard = Keyboard;
\n
"
;
;
if
(
strcmp
(
path
,
"/novnc/input/keyboard.js"
)
==
0
)
return
novnc_input_keyboard_js
;
if
(
strcmp
(
path
,
"/novnc/input/keyboard.js"
)
==
0
)
return
novnc_input_keyboard_js
;
const
char
*
novnc_input_keysym_js
=
const
char
*
novnc_input_keysymdef_js
=
"/* eslint-disable key-spacing */
\n
"
"/*
\n
"
"
\n
"
" * Mapping from Unicode codepoints to X11/RFB keysyms
\n
"
"window.KeyTable = {
\n
"
" *
\n
"
" XK_VoidSymbol: 0xffffff, /* Void symbol */
\n
"
" * This file was automatically generated from keysymdef.h
\n
"
"
\n
"
" * DO NOT EDIT!
\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
"
"
\n
"
"
\n
"
" XK_ISO_Level3_Shift: 0xfe03, /* AltGr */
\n
"
"/* Functions at the bottom */
\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
"
"
\n
"
"
\n
"
"const codepoints = {
\n
"
"const codepoints = {
\n
"
" 0x0100: 0x03c0, // XK_Amacron
\n
"
" 0x0100: 0x03c0, // XK_Amacron
\n
"
...
@@ -4770,29 +4151,648 @@ const char *novnc_input_keysymdef_js =
...
@@ -4770,29 +4151,648 @@ const char *novnc_input_keysymdef_js =
" 0x30fc: 0x04b0, // XK_prolongedsound
\n
"
" 0x30fc: 0x04b0, // XK_prolongedsound
\n
"
"};
\n
"
"};
\n
"
"
\n
"
"
\n
"
"window.lookup = function(u) {
\n
"
"window.lookup = function(u) {
\n
"
" // Latin-1 is one-to-one mapping
\n
"
" // Latin-1 is one-to-one mapping
\n
"
" if ((u >= 0x20) && (u <= 0xff)) {
\n
"
" if ((u >= 0x20) && (u <= 0xff)) {
\n
"
" return u;
\n
"
" return u;
\n
"
" }
\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
"
"
\n
"
" // Lookup table (fairly random)
\n
"
" XK_Hangul: 0xff31, /* Hangul start/stop(toggle) */
\n
"
" const keysym = codepoints[u];
\n
"
" XK_Hangul_Hanja: 0xff34, /* Start Hangul->Hanja Conversion */
\n
"
" if (keysym !== undefined) {
\n
"
" XK_Hangul_Jeonja: 0xff38, /* Jeonja mode */
\n
"
" return keysym;
\n
"
" }
\n
"
"
\n
"
"
\n
"
" // General mapping as final fallback
\n
"
" /*
\n
"
" return 0x01000000 | u;
\n
"
" * XFree86 vendor specific keysyms.
\n
"
"};
\n
"
" *
\n
"
"window.codepoints = codepoints;
\n
"
" * The XFree86 keysym range is 0x10080001 - 0x1008FFFF.
\n
"
" */
\n
"
"
\n
"
"
\n
"
"// Create keysyms object for compatibility with util.js
\n
"
" XF86XK_ModeLock: 0x1008FF01,
\n
"
"window.keysyms = {
\n
"
" XF86XK_MonBrightnessUp: 0x1008FF02,
\n
"
" lookup: window.lookup
\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
"
"};
\n
"
;
;
if
(
strcmp
(
path
,
"/novnc/input/keysym
def.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
=
const
char
*
novnc_input_util_js
=
"
\n
"
"
\n
"
"// Get 'KeyboardEvent.code', handling legacy browsers
\n
"
"// Get 'KeyboardEvent.code', handling legacy browsers
\n
"
...
...
wssshd2/novnc_assets.h
View file @
14927ec6
...
@@ -18,8 +18,8 @@
...
@@ -18,8 +18,8 @@
#include "html_pages/novnc_input_fixedkeys_js_page.h"
#include "html_pages/novnc_input_fixedkeys_js_page.h"
#include "html_pages/novnc_input_gesturehandler_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_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_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_util_js_page.h"
#include "html_pages/novnc_input_vkeys_js_page.h"
#include "html_pages/novnc_input_vkeys_js_page.h"
#include "html_pages/novnc_input_xtscancodes_js_page.h"
#include "html_pages/novnc_input_xtscancodes_js_page.h"
...
...
wssshd2/rdp_asset_map.c
View file @
14927ec6
This source diff could not be displayed because it is too large. You can
view the blob
instead.
wssshd2/rdp_assets.h
View file @
14927ec6
...
@@ -3,8 +3,8 @@
...
@@ -3,8 +3,8 @@
#include "html_pages/rdp_clipboard_js_page.h"
#include "html_pages/rdp_clipboard_js_page.h"
#include "html_pages/rdp_mstsc_js_page.h"
#include "html_pages/rdp_mstsc_js_page.h"
#include "html_pages/rdp_out_stream_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_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_reversed_layouts_js_page.h"
#include "html_pages/rdp_scancodes_js_page.h"
#include "html_pages/rdp_scancodes_js_page.h"
#include "html_pages/rdp_rdp_wasm_page.h"
#include "html_pages/rdp_rdp_wasm_page.h"
...
...
wssshd2/websocket.c
View file @
14927ec6
...
@@ -48,6 +48,7 @@ static const char *TUNNEL_REQUEST_MSG = "{\"type\":\"tunnel_request\",\"request_
...
@@ -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_ACK_MSG
=
"{
\"
type
\"
:
\"
tunnel_ack
\"
,
\"
request_id
\"
:
\"
%s
\"
}"
;
static
const
char
*
TUNNEL_ERROR_MSG
=
"{
\"
type
\"
:
\"
tunnel_error
\"
,
\"
request_id
\"
:
\"
%s
\"
,
\"
error
\"
:
\"
%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
)
{
void
format_bytes
(
unsigned
long
long
bytes
,
char
*
buffer
,
size_t
buffer_size
)
{
if
(
bytes
<
1024
)
{
if
(
bytes
<
1024
)
{
snprintf
(
buffer
,
buffer_size
,
"%llu B"
,
bytes
);
snprintf
(
buffer
,
buffer_size
,
"%llu B"
,
bytes
);
...
@@ -887,9 +888,13 @@ int websocket_handle_message(wssshd_state_t *state, ws_connection_t *conn __attr
...
@@ -887,9 +888,13 @@ int websocket_handle_message(wssshd_state_t *state, ws_connection_t *conn __attr
if
(
request_id
)
{
if
(
request_id
)
{
// Find the tunnel and mark it as acknowledged
// Find the tunnel and mark it as acknowledged
// This is a simple acknowledgment - in a full implementation,
tunnel_t
*
tunnel
=
websocket_find_tunnel
(
state
,
request_id
);
// you might want to track tunnel state more thoroughly
if
(
tunnel
)
{
if
(
state
->
debug
)
printf
(
"[DEBUG - %s -> wssshd] Tunnel %s acknowledged by client
\n
"
,
direction
,
request_id
);
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
);
if
(
request_id
)
free
(
request_id
);
...
@@ -1072,6 +1077,7 @@ int websocket_handle_message(wssshd_state_t *state, ws_connection_t *conn __attr
...
@@ -1072,6 +1077,7 @@ int websocket_handle_message(wssshd_state_t *state, ws_connection_t *conn __attr
// Find the tunnel
// Find the tunnel
tunnel_t
*
tunnel
=
websocket_find_tunnel
(
state
,
request_id
);
tunnel_t
*
tunnel
=
websocket_find_tunnel
(
state
,
request_id
);
if
(
tunnel
)
{
if
(
tunnel
)
{
// Normal tunnel forwarding
// Determine which side to forward to based on sender
// Determine which side to forward to based on sender
ws_connection_t
*
target_conn
=
NULL
;
ws_connection_t
*
target_conn
=
NULL
;
const
char
*
target_side
=
NULL
;
const
char
*
target_side
=
NULL
;
...
...
wssshd2/websocket_protocol.c
View file @
14927ec6
...
@@ -107,6 +107,8 @@ char *base64_encode(const unsigned char *data, size_t len) {
...
@@ -107,6 +107,8 @@ char *base64_encode(const unsigned char *data, size_t len) {
return
out
;
return
out
;
}
}
// Compute WebSocket accept key
// Compute WebSocket accept key
char
*
ws_compute_accept_key
(
const
char
*
key
)
{
char
*
ws_compute_accept_key
(
const
char
*
key
)
{
if
(
!
key
)
return
NULL
;
if
(
!
key
)
return
NULL
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment