From 62822fc3b2cadf823d4d74be902c76e1af0b904a Mon Sep 17 00:00:00 2001 From: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Date: Tue, 14 Sep 2010 17:58:57 +1000 Subject: win32: read_key: support Ctrl-{Left,Right} --- win32/termios.c | 11 +++++++++-- 1 file 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) if (record.EventType != KEY_EVENT || !record.Event.KeyEvent.bKeyDown) continue; if (!record.Event.KeyEvent.uChar.AsciiChar) { + DWORD state = record.Event.KeyEvent.dwControlKeyState; switch (record.Event.KeyEvent.wVirtualKeyCode) { case VK_UP: return KEYCODE_UP; case VK_DOWN: return KEYCODE_DOWN; - case VK_RIGHT: return KEYCODE_RIGHT; - case VK_LEFT: return KEYCODE_LEFT; + case VK_RIGHT: + if (state & (RIGHT_CTRL_PRESSED|LEFT_CTRL_PRESSED)) + return KEYCODE_CTRL_RIGHT; + return KEYCODE_RIGHT; + case VK_LEFT: + if (state & (RIGHT_CTRL_PRESSED|LEFT_CTRL_PRESSED)) + return KEYCODE_CTRL_LEFT; + return KEYCODE_LEFT; case VK_HOME: return KEYCODE_HOME; case VK_END: return KEYCODE_END; case VK_CAPITAL: -- cgit v1.2.3-55-g6feb