* 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:
		| @@ -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. | ||||
|   | ||||
| @@ -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) | ||||
|   | ||||
| @@ -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[] = | ||||
|   { | ||||
|   | ||||
| @@ -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; | ||||
|   | ||||
| @@ -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]; | ||||
|   | ||||
| @@ -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 (); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -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; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user