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