@@ -80,10 +80,11 @@ struct keycode_mapper {
8080
8181// https://learn.microsoft.com/ru-ru/windows/console/console-virtual-terminal-sequences
8282// https://aperiodic.net/phil/archives/Geekery/term-function-keys/
83- #define F1 "\eOP"
84- #define F2 "\eOQ"
85- #define F3 "\eOR"
86- #define F4 "\eOS"
83+ // https://www.microfocus.com/documentation/rumba/desktop951/RumbaSystemAdminGuide/GUID-5F92BA7F-107A-4101-B4E7-E0FC73F0CD99.html
84+ #define F1 "\e[11~"
85+ #define F2 "\e[12~"
86+ #define F3 "\e[13~"
87+ #define F4 "\e[14~"
8788#define F5 "\e[15~"
8889#define F6 "\e[17~"
8990#define F7 "\e[18~"
@@ -117,37 +118,11 @@ STATIC struct keycode_mapper keycode_to_ascii[] = {
117118 { HID_KEY_KEYPAD_DIVIDE , HID_KEY_KEYPAD_DECIMAL , 0 , 0 , "/*-+\n1234567890." },
118119
119120 // { HID_KEY_ARROW_RIGHT, HID_KEY_ARROW_UP, 0, FLAG_STRING, CURSOR_RIGHT SEP CURSOR_LEFT SEP CURSOR_DOWN SEP CURSOR_UP },
121+ { HID_KEY_INSERT , HID_KEY_ARROW_UP , 0 , FLAG_STRING , CURSOR_INS SEP CURSOR_HOME SEP CURSOR_PGUP SEP CURSOR_DEL SEP CURSOR_END SEP CURSOR_PGDN SEP CURSOR_RIGHT SEP CURSOR_LEFT SEP CURSOR_DOWN SEP CURSOR_UP },
120122 { HID_KEY_PAUSE , HID_KEY_PAUSE , 0x1a , 0 , },
121- { HID_KEY_PAGE_DOWN , HID_KEY_PAGE_DOWN , 0 , FLAG_STRING , CURSOR_PGDN },
122- { HID_KEY_PAGE_UP , HID_KEY_PAGE_UP , 0 , FLAG_STRING , CURSOR_PGUP },
123- { HID_KEY_HOME , HID_KEY_HOME , 0 , FLAG_STRING , CURSOR_HOME },
124- { HID_KEY_END , HID_KEY_END , 0 , FLAG_STRING , CURSOR_END },
125- { HID_KEY_INSERT , HID_KEY_INSERT , 0 , FLAG_STRING , CURSOR_INS },
126- { HID_KEY_DELETE , HID_KEY_DELETE , 0 , FLAG_STRING , CURSOR_DEL },
127-
128- { HID_KEY_F1 , HID_KEY_F1 , 0 , FLAG_STRING , F1 },
129- { HID_KEY_F2 , HID_KEY_F2 , 0 , FLAG_STRING , F2 },
130- { HID_KEY_F3 , HID_KEY_F3 , 0 , FLAG_STRING , F3 },
131- { HID_KEY_F4 , HID_KEY_F4 , 0 , FLAG_STRING , F4 },
132- { HID_KEY_F5 , HID_KEY_F5 , 0 , FLAG_STRING , F5 },
133- { HID_KEY_F6 , HID_KEY_F6 , 0 , FLAG_STRING , F6 },
134- { HID_KEY_F7 , HID_KEY_F7 , 0 , FLAG_STRING , F7 },
135- { HID_KEY_F8 , HID_KEY_F8 , 0 , FLAG_STRING , F8 },
136- { HID_KEY_F9 , HID_KEY_F9 , 0 , FLAG_STRING , F9 },
137- { HID_KEY_F10 , HID_KEY_F10 , 0 , FLAG_STRING , F10 },
138- { HID_KEY_F11 , HID_KEY_F11 , 0 , FLAG_STRING , F11 },
139- { HID_KEY_F12 , HID_KEY_F12 , 0 , FLAG_STRING , F12 },
123+ { HID_KEY_F1 , HID_KEY_F12 , 0 , FLAG_STRING , F1 SEP F2 SEP F3 SEP F4 SEP F5 SEP F6 SEP F7 SEP F8 SEP F9 SEP F10 SEP F11 SEP F12 },
140124 { HID_KEY_PRINT_SCREEN , HID_KEY_PRINT_SCREEN , 0 , FLAG_STRING , PRINT_SCREEN },
141-
142- { HID_KEY_ARROW_UP , HID_KEY_ARROW_UP , 0 , FLAG_STRING + FLAG_CTRL ,CTRL_UP },
143- { HID_KEY_ARROW_DOWN , HID_KEY_ARROW_DOWN , 0 , FLAG_STRING + FLAG_CTRL , CTRL_DOWN },
144- { HID_KEY_ARROW_LEFT , HID_KEY_ARROW_LEFT , 0 , FLAG_STRING + FLAG_CTRL , CTRL_LEFT },
145- { HID_KEY_ARROW_RIGHT , HID_KEY_ARROW_RIGHT , 0 , FLAG_STRING + FLAG_CTRL , CTRL_RIGHT },
146- { HID_KEY_ARROW_UP , HID_KEY_ARROW_UP , 0 , FLAG_STRING ,CURSOR_UP },
147- { HID_KEY_ARROW_DOWN , HID_KEY_ARROW_DOWN , 0 , FLAG_STRING , CURSOR_DOWN },
148- { HID_KEY_ARROW_LEFT , HID_KEY_ARROW_LEFT , 0 , FLAG_STRING , CURSOR_LEFT },
149- { HID_KEY_ARROW_RIGHT , HID_KEY_ARROW_RIGHT , 0 , FLAG_STRING , CURSOR_RIGHT },
150-
125+ { HID_KEY_ARROW_RIGHT , HID_KEY_ARROW_UP , 0 , FLAG_STRING | FLAG_CTRL , CTRL_RIGHT SEP CTRL_LEFT SEP CTRL_DOWN SEP CTRL_UP },
151126};
152127
153128STATIC bool report_contains (const hid_keyboard_report_t * report , uint8_t key ) {
@@ -293,9 +268,9 @@ STATIC void process_event(uint8_t dev_addr, uint8_t instance, const hid_keyboard
293268 if (mapper -> flags & FLAG_CTRL && !ctrl ) {
294269 continue ;
295270 }
296- if (!(mapper -> flags & FLAG_CTRL ) && ctrl ) {
271+ if (!(mapper -> flags & FLAG_CTRL ) && ctrl && ( mapper -> flags & FLAG_STRING ) ) {
297272 continue ;
298- }
273+ }
299274 if (mapper -> flags & FLAG_STRING ) {
300275 const char * msg = skip_nuls (mapper -> data , keycode - mapper -> first );
301276 send_bufz (msg );
0 commit comments