aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2010-09-14 17:58:57 +1000
committerNguyễn Thái Ngọc Duy <pclouds@gmail.com>2010-09-14 18:02:20 +1000
commit62822fc3b2cadf823d4d74be902c76e1af0b904a (patch)
tree4982ae1fe3fc6c4168a60d38fa7058236e0a0da4
parentd527acced45955fa83f0453e2c215b6cc1cad920 (diff)
downloadbusybox-w32-62822fc3b2cadf823d4d74be902c76e1af0b904a.tar.gz
busybox-w32-62822fc3b2cadf823d4d74be902c76e1af0b904a.tar.bz2
busybox-w32-62822fc3b2cadf823d4d74be902c76e1af0b904a.zip
win32: read_key: support Ctrl-{Left,Right}
-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: