]> git.proxmox.com Git - mirror_qemu.git/blobdiff - curses_keys.h
rtc: make rtc_xxx accept/return ISADevice instead of RTCState.
[mirror_qemu.git] / curses_keys.h
index 4c6f3db0dcbc5064638499fd55091dfb8cb28afd..1decd1119d9ee436eb8239fd4059fd3385401a60 100644 (file)
  * THE SOFTWARE.
  */
 
+#include <curses.h>
 #include "keymaps.h"
 
 
 #define KEY_RELEASE         0x80
 #define KEY_MASK            0x7f
-#define SHIFT_CODE          0x2a
-#define SHIFT               0x0080
 #define GREY_CODE           0xe0
-#define GREY                0x0100
+#define GREY                SCANCODE_GREY
+#define SHIFT_CODE          0x2a
+#define SHIFT               SCANCODE_SHIFT
 #define CNTRL_CODE          0x1d
-#define CNTRL               0x0200
+#define CNTRL               SCANCODE_CTRL
 #define ALT_CODE            0x38
-#define ALT                 0x0400
+#define ALT                 SCANCODE_ALT
+#define ALTGR               SCANCODE_ALTGR
+
+#define KEYSYM_MASK         0x0ffffff
+#define KEYSYM_SHIFT        (SCANCODE_SHIFT << 16)
+#define KEYSYM_CNTRL        (SCANCODE_CTRL  << 16)
+#define KEYSYM_ALT          (SCANCODE_ALT   << 16)
+#define KEYSYM_ALTGR        (SCANCODE_ALTGR << 16)
 
 /* curses won't detect a Control + Alt + 1, so use Alt + 1 */
 #define QEMU_KEY_CONSOLE0   (2 | ALT)   /* (curses2keycode['1'] | ALT) */
 
 #define CURSES_KEYS         KEY_MAX     /* KEY_MAX defined in <curses.h> */
 
+static const int curses2keysym[CURSES_KEYS] = {
+    [0 ... (CURSES_KEYS - 1)] = -1,
+
+    [0x7f] = KEY_BACKSPACE,
+    ['\r'] = KEY_ENTER,
+    ['\n'] = KEY_ENTER,
+    [KEY_BTAB] = '\t' | KEYSYM_SHIFT,
+};
+
 static const int curses2keycode[CURSES_KEYS] = {
     [0 ... (CURSES_KEYS - 1)] = -1,
 
@@ -58,7 +75,7 @@ static const int curses2keycode[CURSES_KEYS] = {
     ['-'] = 12,
     ['='] = 13,
     [0x07f] = 14, /* Backspace */
-    [0x107] = 14, /* Backspace */
+    [KEY_BACKSPACE] = 14, /* Backspace */
 
     ['\t'] = 15, /* Tab */
     ['q'] = 16,
@@ -75,7 +92,7 @@ static const int curses2keycode[CURSES_KEYS] = {
     [']'] = 27,
     ['\n'] = 28, /* Return */
     ['\r'] = 28, /* Return */
-    [0x157] = 28, /* Return */
+    [KEY_ENTER] = 28, /* Return */
 
     ['a'] = 30,
     ['s'] = 31,
@@ -104,29 +121,29 @@ static const int curses2keycode[CURSES_KEYS] = {
 
     [' '] = 57,
 
-    [0x109] = 59, /* Function Key 1 */
-    [0x10a] = 60, /* Function Key 2 */
-    [0x10b] = 61, /* Function Key 3 */
-    [0x10c] = 62, /* Function Key 4 */
-    [0x10d] = 63, /* Function Key 5 */
-    [0x10e] = 64, /* Function Key 6 */
-    [0x10f] = 65, /* Function Key 7 */
-    [0x110] = 66, /* Function Key 8 */
-    [0x111] = 67, /* Function Key 9 */
-    [0x112] = 68, /* Function Key 10 */
-    [0x113] = 87, /* Function Key 11 */
-    [0x114] = 88, /* Function Key 12 */
-
-    [0x106] = 71 | GREY, /* Home */
-    [0x103] = 72 | GREY, /* Up Arrow */
-    [0x153] = 73 | GREY, /* Page Up */
-    [0x104] = 75 | GREY, /* Left Arrow */
-    [0x105] = 77 | GREY, /* Right Arrow */
-    [0x168] = 79 | GREY, /* End */
-    [0x102] = 80 | GREY, /* Down Arrow */
-    [0x152] = 81 | GREY, /* Page Down */
-    [0x14b] = 82 | GREY, /* Insert */
-    [0x14a] = 83 | GREY, /* Delete */
+    [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 */
 
     ['!'] = 2 | SHIFT,
     ['@'] = 3 | SHIFT,
@@ -141,7 +158,7 @@ static const int curses2keycode[CURSES_KEYS] = {
     ['_'] = 12 | SHIFT,
     ['+'] = 13 | SHIFT,
 
-    [0x161] = 15 | SHIFT, /* Shift + Tab */
+    [KEY_BTAB] = 15 | SHIFT, /* Shift + Tab */
     ['Q'] = 16 | SHIFT,
     ['W'] = 17 | SHIFT,
     ['E'] = 18 | SHIFT,
@@ -180,47 +197,51 @@ static const int curses2keycode[CURSES_KEYS] = {
     ['>'] = 52 | SHIFT,
     ['?'] = 53 | SHIFT,
 
-    [0x115] = 59 | SHIFT, /* Shift + Function Key 1 */
-    [0x116] = 60 | SHIFT, /* Shift + Function Key 2 */
-    [0x117] = 61 | SHIFT, /* Shift + Function Key 3 */
-    [0x118] = 62 | SHIFT, /* Shift + Function Key 4 */
-    [0x119] = 63 | SHIFT, /* Shift + Function Key 5 */
-    [0x11a] = 64 | SHIFT, /* Shift + Function Key 6 */
-    [0x11b] = 65 | SHIFT, /* Shift + Function Key 7 */
-    [0x11c] = 66 | SHIFT, /* Shift + Function Key 8 */
-
-    [0x011] = 16 | CNTRL, /* Control + q */
-    [0x017] = 17 | CNTRL, /* Control + w */
-    [0x005] = 18 | CNTRL, /* Control + e */
-    [0x012] = 19 | CNTRL, /* Control + r */
-    [0x014] = 20 | CNTRL, /* Control + t */
-    [0x019] = 21 | CNTRL, /* Control + y */
-    [0x015] = 22 | CNTRL, /* Control + u */
+    [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 */
+    ['R' - '@'] = 19 | CNTRL, /* Control + r */
+    ['T' - '@'] = 20 | CNTRL, /* Control + t */
+    ['Y' - '@'] = 21 | CNTRL, /* Control + y */
+    ['U' - '@'] = 22 | CNTRL, /* Control + u */
     /* Control + i collides with Tab */
-    [0x00f] = 24 | CNTRL, /* Control + o */
-    [0x010] = 25 | CNTRL, /* Control + p */
-
-    [0x001] = 30 | CNTRL, /* Control + a */
-    [0x013] = 31 | CNTRL, /* Control + s */
-    [0x004] = 32 | CNTRL, /* Control + d */
-    [0x006] = 33 | CNTRL, /* Control + f */
-    [0x007] = 34 | CNTRL, /* Control + g */
-    [0x008] = 35 | CNTRL, /* Control + h */
+    ['O' - '@'] = 24 | CNTRL, /* Control + o */
+    ['P' - '@'] = 25 | CNTRL, /* Control + p */
+
+    ['A' - '@'] = 30 | CNTRL, /* Control + a */
+    ['S' - '@'] = 31 | CNTRL, /* Control + s */
+    ['D' - '@'] = 32 | CNTRL, /* Control + d */
+    ['F' - '@'] = 33 | CNTRL, /* Control + f */
+    ['G' - '@'] = 34 | CNTRL, /* Control + g */
+    ['H' - '@'] = 35 | CNTRL, /* Control + h */
     /* Control + j collides with Return */
-    [0x00b] = 37 | CNTRL, /* Control + k */
-    [0x00c] = 38 | CNTRL, /* Control + l */
-
-    [0x01a] = 44 | CNTRL, /* Control + z */
-    [0x018] = 45 | CNTRL, /* Control + x */
-    [0x003] = 46 | CNTRL, /* Control + c */
-    [0x016] = 47 | CNTRL, /* Control + v */
-    [0x002] = 48 | CNTRL, /* Control + b */
-    [0x00e] = 49 | CNTRL, /* Control + n */
+    ['K' - '@'] = 37 | CNTRL, /* Control + k */
+    ['L' - '@'] = 38 | CNTRL, /* Control + l */
+
+    ['Z' - '@'] = 44 | CNTRL, /* Control + z */
+    ['X' - '@'] = 45 | CNTRL, /* Control + x */
+    ['C' - '@'] = 46 | CNTRL, /* Control + c */
+    ['V' - '@'] = 47 | CNTRL, /* Control + v */
+    ['B' - '@'] = 48 | CNTRL, /* Control + b */
+    ['N' - '@'] = 49 | CNTRL, /* Control + n */
     /* Control + m collides with the keycode for Enter */
 
 };
 
-static const int curses2keysym[CURSES_KEYS] = {
+static const int curses2qemu[CURSES_KEYS] = {
     [0 ... (CURSES_KEYS - 1)] = -1,
 
     ['\n'] = '\n',
@@ -228,18 +249,18 @@ static const int curses2keysym[CURSES_KEYS] = {
 
     [0x07f] = QEMU_KEY_BACKSPACE,
 
-    [0x102] = QEMU_KEY_DOWN,
-    [0x103] = QEMU_KEY_UP,
-    [0x104] = QEMU_KEY_LEFT,
-    [0x105] = QEMU_KEY_RIGHT,
-    [0x106] = QEMU_KEY_HOME,
-    [0x107] = QEMU_KEY_BACKSPACE,
+    [KEY_DOWN] = QEMU_KEY_DOWN,
+    [KEY_UP] = QEMU_KEY_UP,
+    [KEY_LEFT] = QEMU_KEY_LEFT,
+    [KEY_RIGHT] = QEMU_KEY_RIGHT,
+    [KEY_HOME] = QEMU_KEY_HOME,
+    [KEY_BACKSPACE] = QEMU_KEY_BACKSPACE,
 
-    [0x14a] = QEMU_KEY_DELETE,
-    [0x152] = QEMU_KEY_PAGEDOWN,
-    [0x153] = QEMU_KEY_PAGEUP,
-    [0x157] = '\n',
-    [0x168] = QEMU_KEY_END,
+    [KEY_DC] = QEMU_KEY_DELETE,
+    [KEY_NPAGE] = QEMU_KEY_PAGEDOWN,
+    [KEY_PPAGE] = QEMU_KEY_PAGEUP,
+    [KEY_ENTER] = '\n',
+    [KEY_END] = QEMU_KEY_END,
 
 };
 
@@ -444,40 +465,44 @@ static const name2keysym_t name2keysym[] = {
     { "ydiaeresis", 0x0ff },
 
     /* Special keys */
-    { "BackSpace", 0x07f },
+    { "BackSpace", KEY_BACKSPACE },
     { "Tab", '\t' },
-    { "Return", '\r' },
-    { "Right", 0x105 },
-    { "Left", 0x104 },
-    { "Up", 0x103 },
-    { "Down", 0x102 },
-    { "Page_Down", 0x152 },
-    { "Page_Up", 0x153 },
-    { "Insert", 0x14b },
-    { "Delete", 0x14a },
-    { "Home", 0x106 },
-    { "End", 0x168 },
-    { "F1", 0x109 },
-    { "F2", 0x10a },
-    { "F3", 0x10b },
-    { "F4", 0x10c },
-    { "F5", 0x10d },
-    { "F6", 0x10e },
-    { "F7", 0x10f },
-    { "F8", 0x110 },
-    { "F9", 0x111 },
-    { "F10", 0x112 },
-    { "F11", 0x113 },
-    { "F12", 0x114 },
-    { "F13", 0x115 },
-    { "F14", 0x116 },
-    { "F15", 0x117 },
-    { "F16", 0x118 },
-    { "F17", 0x119 },
-    { "F18", 0x11a },
-    { "F19", 0x11b },
-    { "F20", 0x11c },
+    { "Return", KEY_ENTER },
+    { "Right", KEY_RIGHT },
+    { "Left", KEY_LEFT },
+    { "Up", KEY_UP },
+    { "Down", KEY_DOWN },
+    { "Page_Down", KEY_NPAGE },
+    { "Page_Up", KEY_PPAGE },
+    { "Insert", KEY_IC },
+    { "Delete", KEY_DC },
+    { "Home", KEY_HOME },
+    { "End", KEY_END },
+    { "F1", KEY_F(1) },
+    { "F2", KEY_F(2) },
+    { "F3", KEY_F(3) },
+    { "F4", KEY_F(4) },
+    { "F5", KEY_F(5) },
+    { "F6", KEY_F(6) },
+    { "F7", KEY_F(7) },
+    { "F8", KEY_F(8) },
+    { "F9", KEY_F(9) },
+    { "F10", KEY_F(10) },
+    { "F11", KEY_F(11) },
+    { "F12", KEY_F(12) },
+    { "F13", KEY_F(13) },
+    { "F14", KEY_F(14) },
+    { "F15", KEY_F(15) },
+    { "F16", KEY_F(16) },
+    { "F17", KEY_F(17) },
+    { "F18", KEY_F(18) },
+    { "F19", KEY_F(19) },
+    { "F20", KEY_F(20) },
+    { "F21", KEY_F(21) },
+    { "F22", KEY_F(22) },
+    { "F23", KEY_F(23) },
+    { "F24", KEY_F(24) },
     { "Escape", 27 },
 
-    { 0, 0 },
+    { NULL, 0 },
 };