aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--win32/termios.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/win32/termios.c b/win32/termios.c
index 25f2ea48c..708acfa9f 100644
--- a/win32/termios.c
+++ b/win32/termios.c
@@ -61,9 +61,7 @@ int64_t FAST_FUNC read_key(int fd, char *buf UNUSED_PARAM, int timeout)
61 case VK_END: 61 case VK_END:
62 case VK_DOWN: 62 case VK_DOWN:
63 case VK_NEXT: 63 case VK_NEXT:
64 case VK_LEFT:
65 case VK_CLEAR: 64 case VK_CLEAR:
66 case VK_RIGHT:
67 case VK_HOME: 65 case VK_HOME:
68 case VK_UP: 66 case VK_UP:
69 case VK_PRIOR: 67 case VK_PRIOR:
@@ -82,6 +80,10 @@ int64_t FAST_FUNC read_key(int fd, char *buf UNUSED_PARAM, int timeout)
82 ret = KEYCODE_CTRL_RIGHT; 80 ret = KEYCODE_CTRL_RIGHT;
83 goto done; 81 goto done;
84 } 82 }
83 if (state & (RIGHT_ALT_PRESSED|LEFT_ALT_PRESSED)) {
84 ret = KEYCODE_ALT_RIGHT;
85 goto done;
86 }
85 ret = KEYCODE_RIGHT; 87 ret = KEYCODE_RIGHT;
86 goto done; 88 goto done;
87 case VK_LEFT: 89 case VK_LEFT:
@@ -89,6 +91,10 @@ int64_t FAST_FUNC read_key(int fd, char *buf UNUSED_PARAM, int timeout)
89 ret = KEYCODE_CTRL_LEFT; 91 ret = KEYCODE_CTRL_LEFT;
90 goto done; 92 goto done;
91 } 93 }
94 if (state & (RIGHT_ALT_PRESSED|LEFT_ALT_PRESSED)) {
95 ret = KEYCODE_ALT_LEFT;
96 goto done;
97 }
92 ret = KEYCODE_LEFT; 98 ret = KEYCODE_LEFT;
93 goto done; 99 goto done;
94 case VK_HOME: ret = KEYCODE_HOME; goto done; 100 case VK_HOME: ret = KEYCODE_HOME; goto done;
@@ -111,6 +117,14 @@ int64_t FAST_FUNC read_key(int fd, char *buf UNUSED_PARAM, int timeout)
111 } 117 }
112 ret = record.Event.KeyEvent.uChar.AsciiChar; 118 ret = record.Event.KeyEvent.uChar.AsciiChar;
113#endif 119#endif
120 if (state & (RIGHT_ALT_PRESSED|LEFT_ALT_PRESSED)) {
121 switch (ret) {
122 case '\b': ret = KEYCODE_ALT_BACKSPACE; goto done;
123 case 'b': ret = KEYCODE_ALT_LEFT; goto done;
124 case 'd': ret = KEYCODE_ALT_D; goto done;
125 case 'f': ret = KEYCODE_ALT_RIGHT; goto done;
126 }
127 }
114 break; 128 break;
115 } 129 }
116 done: 130 done: