diff options
-rw-r--r-- | win32/termios.c | 11 |
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: |