From ca81cd60ce99479828fefb3343267255fd47771c Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Tue, 8 Apr 2003 21:19:33 +0000 Subject: * fhandler_console.cc (fhandler_console::read) Handle certain key up events, to allow pasting accented characters and typing them using the "alt + numerics" sequences. * include/limits.h (IOV_MAX): Set to a number which is small enough to use in an array. --- winsup/cygwin/fhandler_console.cc | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'winsup/cygwin/fhandler_console.cc') diff --git a/winsup/cygwin/fhandler_console.cc b/winsup/cygwin/fhandler_console.cc index 768327056..26fa64d44 100644 --- a/winsup/cygwin/fhandler_console.cc +++ b/winsup/cygwin/fhandler_console.cc @@ -321,14 +321,26 @@ fhandler_console::read (void *pv, size_t& buflen) break; } - if (!input_rec.Event.KeyEvent.bKeyDown) - continue; - #define ich (input_rec.Event.KeyEvent.uChar.AsciiChar) #define wch (input_rec.Event.KeyEvent.uChar.UnicodeChar) #define ALT_PRESSED (LEFT_ALT_PRESSED | RIGHT_ALT_PRESSED) #define CTRL_PRESSED (LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED) + /* Ignore key up events, except for left alt events with non-zero character + */ + if (!input_rec.Event.KeyEvent.bKeyDown && + /* + Event for left alt, with a non-zero character, comes from + "alt + numerics" key sequence. + e.g. 0233 => é + */ + !(wch != 0 + // ?? experimentally determined on an XP system + && virtual_key_code == VK_MENU + // left alt -- see http://www.microsoft.com/hwdev/tech/input/Scancode.asp + && input_rec.Event.KeyEvent.wVirtualScanCode == 0x38)) + continue; + if (wch == 0 || /* arrow/function keys */ (input_rec.Event.KeyEvent.dwControlKeyState & ENHANCED_KEY)) -- cgit v1.2.3