Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2003-04-09 01:19:33 +0400
committerChristopher Faylor <me@cgf.cx>2003-04-09 01:19:33 +0400
commitca81cd60ce99479828fefb3343267255fd47771c (patch)
treef1842d856221f8664ebe7abffe27083e1d8fa5ec /winsup/cygwin/fhandler_console.cc
parente3501c78cad9d0a94e9004d4cfc40fe3c783549f (diff)
* 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.
Diffstat (limited to 'winsup/cygwin/fhandler_console.cc')
-rw-r--r--winsup/cygwin/fhandler_console.cc18
1 files changed, 15 insertions, 3 deletions
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. <left-alt> 0233 => &eacute;
+ */
+ !(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))