|
@@ -49,22 +49,28 @@
|
|
|
/* curses won't detect a Control + Alt + 1, so use Alt + 1 */
|
|
|
#define QEMU_KEY_CONSOLE0 (2 | ALT) /* (curses2keycode['1'] | ALT) */
|
|
|
|
|
|
+#define CURSES_CHARS 0x100 /* Support latin1 only */
|
|
|
#define CURSES_KEYS KEY_MAX /* KEY_MAX defined in <curses.h> */
|
|
|
|
|
|
-static const int curses2keysym[CURSES_KEYS] = {
|
|
|
- [0 ... (CURSES_KEYS - 1)] = -1,
|
|
|
+static const int _curses2keysym[CURSES_CHARS] = {
|
|
|
+ [0 ... (CURSES_CHARS - 1)] = -1,
|
|
|
|
|
|
[0x7f] = KEY_BACKSPACE,
|
|
|
['\r'] = KEY_ENTER,
|
|
|
['\n'] = KEY_ENTER,
|
|
|
[27] = 27,
|
|
|
+};
|
|
|
+
|
|
|
+static const int _curseskey2keysym[CURSES_KEYS] = {
|
|
|
+ [0 ... (CURSES_KEYS - 1)] = -1,
|
|
|
+
|
|
|
[KEY_BTAB] = '\t' | KEYSYM_SHIFT,
|
|
|
[KEY_SPREVIOUS] = KEY_PPAGE | KEYSYM_SHIFT,
|
|
|
[KEY_SNEXT] = KEY_NPAGE | KEYSYM_SHIFT,
|
|
|
};
|
|
|
|
|
|
-static const int curses2keycode[CURSES_KEYS] = {
|
|
|
- [0 ... (CURSES_KEYS - 1)] = -1,
|
|
|
+static const int _curses2keycode[CURSES_CHARS] = {
|
|
|
+ [0 ... (CURSES_CHARS - 1)] = -1,
|
|
|
|
|
|
[0x01b] = 1, /* Escape */
|
|
|
['1'] = 2,
|
|
@@ -80,7 +86,6 @@ static const int curses2keycode[CURSES_KEYS] = {
|
|
|
['-'] = 12,
|
|
|
['='] = 13,
|
|
|
[0x07f] = 14, /* Backspace */
|
|
|
- [KEY_BACKSPACE] = 14, /* Backspace */
|
|
|
|
|
|
['\t'] = 15, /* Tab */
|
|
|
['q'] = 16,
|
|
@@ -97,7 +102,6 @@ static const int curses2keycode[CURSES_KEYS] = {
|
|
|
[']'] = 27,
|
|
|
['\n'] = 28, /* Return */
|
|
|
['\r'] = 28, /* Return */
|
|
|
- [KEY_ENTER] = 28, /* Return */
|
|
|
|
|
|
['a'] = 30,
|
|
|
['s'] = 31,
|
|
@@ -126,33 +130,6 @@ static const int curses2keycode[CURSES_KEYS] = {
|
|
|
|
|
|
[' '] = 57,
|
|
|
|
|
|
- [KEY_F(1)] = 59, /* Function Key 1 */
|
|
|
- [KEY_F(2)] = 60, /* Function Key 2 */
|
|
|
- [KEY_F(3)] = 61, /* Function Key 3 */
|
|
|
- [KEY_F(4)] = 62, /* Function Key 4 */
|
|
|
- [KEY_F(5)] = 63, /* Function Key 5 */
|
|
|
- [KEY_F(6)] = 64, /* Function Key 6 */
|
|
|
- [KEY_F(7)] = 65, /* Function Key 7 */
|
|
|
- [KEY_F(8)] = 66, /* Function Key 8 */
|
|
|
- [KEY_F(9)] = 67, /* Function Key 9 */
|
|
|
- [KEY_F(10)] = 68, /* Function Key 10 */
|
|
|
- [KEY_F(11)] = 87, /* Function Key 11 */
|
|
|
- [KEY_F(12)] = 88, /* Function Key 12 */
|
|
|
-
|
|
|
- [KEY_HOME] = 71 | GREY, /* Home */
|
|
|
- [KEY_UP] = 72 | GREY, /* Up Arrow */
|
|
|
- [KEY_PPAGE] = 73 | GREY, /* Page Up */
|
|
|
- [KEY_LEFT] = 75 | GREY, /* Left Arrow */
|
|
|
- [KEY_RIGHT] = 77 | GREY, /* Right Arrow */
|
|
|
- [KEY_END] = 79 | GREY, /* End */
|
|
|
- [KEY_DOWN] = 80 | GREY, /* Down Arrow */
|
|
|
- [KEY_NPAGE] = 81 | GREY, /* Page Down */
|
|
|
- [KEY_IC] = 82 | GREY, /* Insert */
|
|
|
- [KEY_DC] = 83 | GREY, /* Delete */
|
|
|
-
|
|
|
- [KEY_SPREVIOUS] = 73 | GREY | SHIFT, /* Shift + Page Up */
|
|
|
- [KEY_SNEXT] = 81 | GREY | SHIFT, /* Shift + Page Down */
|
|
|
-
|
|
|
['!'] = 2 | SHIFT,
|
|
|
['@'] = 3 | SHIFT,
|
|
|
['#'] = 4 | SHIFT,
|
|
@@ -166,7 +143,6 @@ static const int curses2keycode[CURSES_KEYS] = {
|
|
|
['_'] = 12 | SHIFT,
|
|
|
['+'] = 13 | SHIFT,
|
|
|
|
|
|
- [KEY_BTAB] = 15 | SHIFT, /* Shift + Tab */
|
|
|
['Q'] = 16 | SHIFT,
|
|
|
['W'] = 17 | SHIFT,
|
|
|
['E'] = 18 | SHIFT,
|
|
@@ -205,19 +181,6 @@ static const int curses2keycode[CURSES_KEYS] = {
|
|
|
['>'] = 52 | SHIFT,
|
|
|
['?'] = 53 | SHIFT,
|
|
|
|
|
|
- [KEY_F(13)] = 59 | SHIFT, /* Shift + Function Key 1 */
|
|
|
- [KEY_F(14)] = 60 | SHIFT, /* Shift + Function Key 2 */
|
|
|
- [KEY_F(15)] = 61 | SHIFT, /* Shift + Function Key 3 */
|
|
|
- [KEY_F(16)] = 62 | SHIFT, /* Shift + Function Key 4 */
|
|
|
- [KEY_F(17)] = 63 | SHIFT, /* Shift + Function Key 5 */
|
|
|
- [KEY_F(18)] = 64 | SHIFT, /* Shift + Function Key 6 */
|
|
|
- [KEY_F(19)] = 65 | SHIFT, /* Shift + Function Key 7 */
|
|
|
- [KEY_F(20)] = 66 | SHIFT, /* Shift + Function Key 8 */
|
|
|
- [KEY_F(21)] = 67 | SHIFT, /* Shift + Function Key 9 */
|
|
|
- [KEY_F(22)] = 68 | SHIFT, /* Shift + Function Key 10 */
|
|
|
- [KEY_F(23)] = 69 | SHIFT, /* Shift + Function Key 11 */
|
|
|
- [KEY_F(24)] = 70 | SHIFT, /* Shift + Function Key 12 */
|
|
|
-
|
|
|
['Q' - '@'] = 16 | CNTRL, /* Control + q */
|
|
|
['W' - '@'] = 17 | CNTRL, /* Control + w */
|
|
|
['E' - '@'] = 18 | CNTRL, /* Control + e */
|
|
@@ -249,13 +212,67 @@ static const int curses2keycode[CURSES_KEYS] = {
|
|
|
|
|
|
};
|
|
|
|
|
|
-static const int curses2qemu[CURSES_KEYS] = {
|
|
|
+static const int _curseskey2keycode[CURSES_KEYS] = {
|
|
|
[0 ... (CURSES_KEYS - 1)] = -1,
|
|
|
|
|
|
+ [KEY_BACKSPACE] = 14, /* Backspace */
|
|
|
+
|
|
|
+ [KEY_ENTER] = 28, /* Return */
|
|
|
+
|
|
|
+ [KEY_F(1)] = 59, /* Function Key 1 */
|
|
|
+ [KEY_F(2)] = 60, /* Function Key 2 */
|
|
|
+ [KEY_F(3)] = 61, /* Function Key 3 */
|
|
|
+ [KEY_F(4)] = 62, /* Function Key 4 */
|
|
|
+ [KEY_F(5)] = 63, /* Function Key 5 */
|
|
|
+ [KEY_F(6)] = 64, /* Function Key 6 */
|
|
|
+ [KEY_F(7)] = 65, /* Function Key 7 */
|
|
|
+ [KEY_F(8)] = 66, /* Function Key 8 */
|
|
|
+ [KEY_F(9)] = 67, /* Function Key 9 */
|
|
|
+ [KEY_F(10)] = 68, /* Function Key 10 */
|
|
|
+ [KEY_F(11)] = 87, /* Function Key 11 */
|
|
|
+ [KEY_F(12)] = 88, /* Function Key 12 */
|
|
|
+
|
|
|
+ [KEY_HOME] = 71 | GREY, /* Home */
|
|
|
+ [KEY_UP] = 72 | GREY, /* Up Arrow */
|
|
|
+ [KEY_PPAGE] = 73 | GREY, /* Page Up */
|
|
|
+ [KEY_LEFT] = 75 | GREY, /* Left Arrow */
|
|
|
+ [KEY_RIGHT] = 77 | GREY, /* Right Arrow */
|
|
|
+ [KEY_END] = 79 | GREY, /* End */
|
|
|
+ [KEY_DOWN] = 80 | GREY, /* Down Arrow */
|
|
|
+ [KEY_NPAGE] = 81 | GREY, /* Page Down */
|
|
|
+ [KEY_IC] = 82 | GREY, /* Insert */
|
|
|
+ [KEY_DC] = 83 | GREY, /* Delete */
|
|
|
+
|
|
|
+ [KEY_SPREVIOUS] = 73 | GREY | SHIFT, /* Shift + Page Up */
|
|
|
+ [KEY_SNEXT] = 81 | GREY | SHIFT, /* Shift + Page Down */
|
|
|
+
|
|
|
+ [KEY_BTAB] = 15 | SHIFT, /* Shift + Tab */
|
|
|
+
|
|
|
+ [KEY_F(13)] = 59 | SHIFT, /* Shift + Function Key 1 */
|
|
|
+ [KEY_F(14)] = 60 | SHIFT, /* Shift + Function Key 2 */
|
|
|
+ [KEY_F(15)] = 61 | SHIFT, /* Shift + Function Key 3 */
|
|
|
+ [KEY_F(16)] = 62 | SHIFT, /* Shift + Function Key 4 */
|
|
|
+ [KEY_F(17)] = 63 | SHIFT, /* Shift + Function Key 5 */
|
|
|
+ [KEY_F(18)] = 64 | SHIFT, /* Shift + Function Key 6 */
|
|
|
+ [KEY_F(19)] = 65 | SHIFT, /* Shift + Function Key 7 */
|
|
|
+ [KEY_F(20)] = 66 | SHIFT, /* Shift + Function Key 8 */
|
|
|
+ [KEY_F(21)] = 67 | SHIFT, /* Shift + Function Key 9 */
|
|
|
+ [KEY_F(22)] = 68 | SHIFT, /* Shift + Function Key 10 */
|
|
|
+ [KEY_F(23)] = 69 | SHIFT, /* Shift + Function Key 11 */
|
|
|
+ [KEY_F(24)] = 70 | SHIFT, /* Shift + Function Key 12 */
|
|
|
+};
|
|
|
+
|
|
|
+static const int _curses2qemu[CURSES_CHARS] = {
|
|
|
+ [0 ... (CURSES_CHARS - 1)] = -1,
|
|
|
+
|
|
|
['\n'] = '\n',
|
|
|
['\r'] = '\n',
|
|
|
|
|
|
[0x07f] = QEMU_KEY_BACKSPACE,
|
|
|
+};
|
|
|
+
|
|
|
+static const int _curseskey2qemu[CURSES_KEYS] = {
|
|
|
+ [0 ... (CURSES_KEYS - 1)] = -1,
|
|
|
|
|
|
[KEY_DOWN] = QEMU_KEY_DOWN,
|
|
|
[KEY_UP] = QEMU_KEY_UP,
|