@@ -81,10 +81,11 @@ struct keycode_mapper {
8181// https://learn.microsoft.com/ru-ru/windows/console/console-virtual-terminal-sequences
8282// https://aperiodic.net/phil/archives/Geekery/term-function-keys/
8383// 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~"
84+ // showkey -a
85+ #define F1 "\e[OP"
86+ #define F2 "\e[OQ"
87+ #define F3 "\e[OR"
88+ #define F4 "\e[1S"
8889#define F5 "\e[15~"
8990#define F6 "\e[17~"
9091#define F7 "\e[18~"
@@ -93,11 +94,31 @@ struct keycode_mapper {
9394#define F10 "\e[21~"
9495#define F11 "\e[23~"
9596#define F12 "\e[24~"
97+
9698#define PRINT_SCREEN "\e[i"
9799#define CTRL_UP "\e[1;5A"
98100#define CTRL_DOWN "\e[1;5B"
99101#define CTRL_RIGHT "\e[1;5C"
100102#define CTRL_LEFT "\e[1;5D"
103+ #define CTRL_PGUP "\e[5;5~"
104+ #define CTRL_PGDN "\e[6;5~"
105+ #define CTRL_HOME "\e[1;5H"
106+ #define CTRL_END "\e[1;5F"
107+ #define CTRL_INS "\e[2;5~"
108+ #define CTRL_DEL "\e[3;5~"
109+ #define CTRL_F1 "\e[1;5P"
110+ #define CTRL_F2 "\e[1;5Q"
111+ #define CTRL_F3 "\e[1;5R"
112+ #define CTRL_F4 "\e[1;5S"
113+ #define CTRL_F5 "\e[15;5~"
114+ #define CTRL_F6 "\e[17;5~"
115+ #define CTRL_F7 "\e[18;5~"
116+ #define CTRL_F8 "\e[19;5~"
117+ #define CTRL_F9 "\e[20;5~"
118+ #define CTRL_F10 "\e[21;5~"
119+ #define CTRL_F11 "\e[23;5~"
120+ #define CTRL_F12 "\e[24;5~"
121+
101122
102123STATIC struct keycode_mapper keycode_to_ascii [] = {
103124 { HID_KEY_A , HID_KEY_Z , 'a' , 0 , NULL },
@@ -118,11 +139,13 @@ STATIC struct keycode_mapper keycode_to_ascii[] = {
118139 { HID_KEY_KEYPAD_DIVIDE , HID_KEY_KEYPAD_DECIMAL , 0 , 0 , "/*-+\n1234567890." },
119140
120141 // { 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 },
142+ { 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 },
122143 { HID_KEY_PAUSE , HID_KEY_PAUSE , 0x1a , 0 , },
123144 { 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 },
124- { HID_KEY_PRINT_SCREEN , HID_KEY_PRINT_SCREEN , 0 , FLAG_STRING , PRINT_SCREEN },
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 },
145+ { HID_KEY_PRINT_SCREEN , HID_KEY_PRINT_SCREEN , 0 , FLAG_STRING , PRINT_SCREEN },
146+ { HID_KEY_INSERT , HID_KEY_ARROW_UP , 0 , FLAG_STRING | FLAG_CTRL , SEP CTRL_INS SEP CTRL_HOME SEP CTRL_PGUP SEP CTRL_DEL SEP CTRL_END SEP CTRL_PGDN CTRL_RIGHT SEP CTRL_LEFT SEP CTRL_DOWN SEP CTRL_UP },
147+ { HID_KEY_F1 , HID_KEY_F12 , 0 , FLAG_STRING | FLAG_CTRL , CTRL_F1 SEP CTRL_F2 SEP CTRL_F3 SEP CTRL_F4 SEP CTRL_F5 SEP CTRL_F6 SEP CTRL_F7 SEP CTRL_F8 SEP CTRL_F9 SEP CTRL_F10 SEP CTRL_F11 SEP CTRL_F12 },
148+
126149};
127150
128151STATIC bool report_contains (const hid_keyboard_report_t * report , uint8_t key ) {
0 commit comments