aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--win32/termios.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/win32/termios.c b/win32/termios.c
index 812f6d5d7..0154bd11f 100644
--- a/win32/termios.c
+++ b/win32/termios.c
@@ -30,11 +30,18 @@ int64_t FAST_FUNC read_key(int fd, char *buf, int timeout UNUSED_PARAM)
30 if (record.EventType != KEY_EVENT || !record.Event.KeyEvent.bKeyDown) 30 if (record.EventType != KEY_EVENT || !record.Event.KeyEvent.bKeyDown)
31 continue; 31 continue;
32 if (!record.Event.KeyEvent.uChar.AsciiChar) { 32 if (!record.Event.KeyEvent.uChar.AsciiChar) {
33 DWORD state = record.Event.KeyEvent.dwControlKeyState;
33 switch (record.Event.KeyEvent.wVirtualKeyCode) { 34 switch (record.Event.KeyEvent.wVirtualKeyCode) {
34 case VK_UP: return KEYCODE_UP; 35 case VK_UP: return KEYCODE_UP;
35 case VK_DOWN: return KEYCODE_DOWN; 36 case VK_DOWN: return KEYCODE_DOWN;
36 case VK_RIGHT: return KEYCODE_RIGHT; 37 case VK_RIGHT:
37 case VK_LEFT: return KEYCODE_LEFT; 38 if (state & (RIGHT_CTRL_PRESSED|LEFT_CTRL_PRESSED))
39 return KEYCODE_CTRL_RIGHT;
40 return KEYCODE_RIGHT;
41 case VK_LEFT:
42 if (state & (RIGHT_CTRL_PRESSED|LEFT_CTRL_PRESSED))
43 return KEYCODE_CTRL_LEFT;
44 return KEYCODE_LEFT;
38 case VK_HOME: return KEYCODE_HOME; 45 case VK_HOME: return KEYCODE_HOME;
39 case VK_END: return KEYCODE_END; 46 case VK_END: return KEYCODE_END;
40 case VK_CAPITAL: 47 case VK_CAPITAL: