* 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.
This commit is contained in:
Corinna Vinschen 2001-03-06 12:05:45 +00:00
parent cfc05d9675
commit 7cdc9feea1
7 changed files with 50 additions and 4 deletions

View File

@ -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.

View File

@ -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)

View File

@ -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[] =
{

View File

@ -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;

View File

@ -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];

View File

@ -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 ();
}

View File

@ -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;