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:
authorCorinna Vinschen <corinna@vinschen.de>2001-03-06 15:05:45 +0300
committerCorinna Vinschen <corinna@vinschen.de>2001-03-06 15:05:45 +0300
commit7cdc9feea1d8fcd016a842155c30308e4a0cae3d (patch)
treed5c731512d57f68043d03c0c9ff6095af508613e
parentcfc05d9675436a157ea959a5fb06da60722234c7 (diff)
* autoload.c (cygwin_premain0): Add missing parameter.
* binmode.c (cygwin_premain0): Ditto. * textmode.c (cygwin_premain0): Ditto. Patch contributed by Jason Tiller <jtiller@sjm.com> : * auto_load.cc: Add "GetKeyboardLayout" entry in the list of Win32 User32.DLL exports to provide. * fhandler.h (class fhandler_console): Add meta_mask private member to remember which keystroke modifiers should generate META. * fhandler_console.cc (fhandler_console::read): Modify code that tests a keystroke for a META-escaped key to use the 'meta_mask' variable. (fhandler_console::fhandler_console): Add definition for variable "meta_mask" used to determine if a keystroke should be preceded by META in the client console stream. Set meta_mask based on whether or not user's keyboard language is English - non-English keyboards pass AltGr (right <ALT>) unmolested, whereas English keyboards now interpret left- and right-<ALT> as META.
-rw-r--r--winsup/cygwin/ChangeLog24
-rw-r--r--winsup/cygwin/autoload.cc1
-rw-r--r--winsup/cygwin/automode.c2
-rw-r--r--winsup/cygwin/binmode.c4
-rw-r--r--winsup/cygwin/fhandler.h3
-rw-r--r--winsup/cygwin/fhandler_console.cc16
-rw-r--r--winsup/cygwin/textmode.c4
7 files changed, 50 insertions, 4 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 72647b30f..47901fcea 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,27 @@
+Tue Mar 6 13:02:00 2001 Jason Tiller <jtiller@sjm.com>
+
+ * autoload.c (cygwin_premain0): Add missing parameter.
+ * binmode.c (cygwin_premain0): Ditto.
+ * textmode.c (cygwin_premain0): Ditto.
+
+Tue Mar 6 12:04:00 2001 Jason Tiller <jtiller@sjm.com>
+
+ * auto_load.cc: Add "GetKeyboardLayout" entry in the list of
+ Win32 User32.DLL exports to provide.
+ * fhandler.h (class fhandler_console): Add meta_mask private
+ member to remember which keystroke modifiers should generate
+ META.
+ * fhandler_console.cc (fhandler_console::read): Modify code that
+ tests a keystroke for a META-escaped key to use the 'meta_mask'
+ variable.
+ (fhandler_console::fhandler_console): Add definition for
+ variable "meta_mask" used to determine if a keystroke should be
+ preceded by META in the client console stream. Set meta_mask
+ based on whether or not user's keyboard language is English -
+ non-English keyboards pass AltGr (right <ALT>) unmolested,
+ whereas English keyboards now interpret left- and right-<ALT>
+ as META.
+
Mon Mar 5 20:15:00 2001 Corinna Vinschen <corinna@vinschen.de>
* include/a.out.h: Add copyright hint.
diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc
index bd035e397..a22d72d38 100644
--- a/winsup/cygwin/autoload.cc
+++ b/winsup/cygwin/autoload.cc
@@ -306,6 +306,7 @@ LoadDLLfunc (DefWindowProcA, 16, user32)
LoadDLLfunc (DispatchMessageA, 4, user32)
LoadDLLfunc (FindWindowA, 8, user32)
LoadDLLfunc (GetClipboardData, 4, user32)
+LoadDLLfunc (GetKeyboardLayout, 4, user32)
LoadDLLfunc (GetMessageA, 16, user32)
LoadDLLfunc (GetProcessWindowStation, 0, user32)
LoadDLLfunc (GetThreadDesktop, 4, user32)
diff --git a/winsup/cygwin/automode.c b/winsup/cygwin/automode.c
index e02b0b9de..f7cddfeec 100644
--- a/winsup/cygwin/automode.c
+++ b/winsup/cygwin/automode.c
@@ -14,7 +14,7 @@ details. */
extern int _fmode;
void
-cygwin_premain0 (int argc, char **argv)
+cygwin_premain0 (int argc, char **argv, struct per_process *myself)
{
static struct __cygwin_perfile pf[] =
{
diff --git a/winsup/cygwin/binmode.c b/winsup/cygwin/binmode.c
index 2eb02df23..50efff46f 100644
--- a/winsup/cygwin/binmode.c
+++ b/winsup/cygwin/binmode.c
@@ -8,11 +8,13 @@ This software is a copyrighted work licensed under the terms of the
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
details. */
+#include <windows.h>
#include <sys/fcntl.h>
+#include <sys/cygwin.h>
extern int _fmode;
void
-cygwin_premain0 (int argc, char **argv)
+cygwin_premain0 (int argc, char **argv, struct per_process *myself)
{
_fmode &= ~_O_TEXT;
_fmode |= _O_BINARY;
diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h
index 3196f2114..c4f931d63 100644
--- a/winsup/cygwin/fhandler.h
+++ b/winsup/cygwin/fhandler.h
@@ -608,6 +608,9 @@ private:
WORD default_color, underline_color, dim_color;
+ /* Used to determine if an input keystroke should be modified with META. */
+ int meta_mask;
+
/* Output state */
int state_;
int args_[MAXARGS];
diff --git a/winsup/cygwin/fhandler_console.cc b/winsup/cygwin/fhandler_console.cc
index 6e8c76c1c..ca73ab651 100644
--- a/winsup/cygwin/fhandler_console.cc
+++ b/winsup/cygwin/fhandler_console.cc
@@ -250,7 +250,8 @@ fhandler_console::read (void *pv, size_t buflen)
converting a CTRL-U. */
if ((unsigned char)ich > 0x7f && current_codepage == ansi_cp)
OemToCharBuff (tmp + 1, tmp + 1, 1);
- if (!(input_rec.Event.KeyEvent.dwControlKeyState & LEFT_ALT_PRESSED))
+ /* Determine if the keystroke is modified by META. */
+ if (!(input_rec.Event.KeyEvent.dwControlKeyState & meta_mask))
toadd = tmp + 1;
else
{
@@ -790,6 +791,19 @@ fhandler_console::fhandler_console (const char *name) :
dwLastButtonState = 0;
nModifiers = 0;
use_mouse = raw_win32_keyboard_mode = FALSE;
+ /* Set the mask that determines if an input keystroke is modified by
+ META. We set this based on the keyboard layout language loaded
+ for the current thread. The left <ALT> key always generates
+ META, but the right <ALT> key only generates META if we are using
+ an English keyboard because many "international" keyboards
+ replace common shell symbols ('[', '{', etc.) with accented
+ language-specific characters (umlaut, accent grave, etc.). On
+ these keyboards right <ALT> (called AltGr) is used to produce the
+ shell symbols and should not be interpreted as META. */
+ meta_mask = LEFT_ALT_PRESSED;
+ if (PRIMARYLANGID (LOWORD (GetKeyboardLayout (0))) == LANG_ENGLISH)
+ meta_mask |= RIGHT_ALT_PRESSED;
+
set_need_fork_fixup ();
}
diff --git a/winsup/cygwin/textmode.c b/winsup/cygwin/textmode.c
index 92648ca04..6d52d50f8 100644
--- a/winsup/cygwin/textmode.c
+++ b/winsup/cygwin/textmode.c
@@ -8,11 +8,13 @@ This software is a copyrighted work licensed under the terms of the
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
details. */
+#include <windows.h>
#include <sys/fcntl.h>
+#include <sys/cygwin.h>
extern int _fmode;
void
-cygwin_premain0 (int argc, char **argv)
+cygwin_premain0 (int argc, char **argv, struct per_process *myself)
{
_fmode &= ~_O_BINARY;
_fmode |= _O_TEXT;