changeset 14463:24e5bd545f4d

(win32_kbd_mods_to_emacs, win32_kbd_patch_key, key_event): Convert from static to global functions. (win32_kbd_patch_key): Set modifiers when AltGr is pressed. (key_event): Don't modify code on window input.
author Geoff Voelker <voelker@cs.washington.edu>
date Fri, 02 Feb 1996 02:01:53 +0000
parents 599a3ae1e8ea
children fea038c6da68
files src/w32inevt.c
diffstat 1 files changed, 14 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/w32inevt.c	Fri Feb 02 02:00:56 1996 +0000
+++ b/src/w32inevt.c	Fri Feb 02 02:01:53 1996 +0000
@@ -92,7 +92,7 @@
 
 /* Translate console modifiers to emacs modifiers.  
    German keyboard support (Kai Morgan Zeise 2/18/95).  */
-static int 
+int 
 win32_kbd_mods_to_emacs (DWORD mods)
 {
   int retval = 0;
@@ -121,7 +121,7 @@
 }
 
 /* The return code indicates key code size. */
-static int
+int
 win32_kbd_patch_key (KEY_EVENT_RECORD *event)
 {
   unsigned int key_code = event->wVirtualKeyCode;
@@ -138,11 +138,20 @@
     }
   if (event->uChar.AsciiChar != 0) 
     return 1;
+
   memset (keystate, 0, sizeof (keystate));
   if (mods & SHIFT_PRESSED) 
     keystate[VK_SHIFT] = 0x80;
   if (mods & CAPSLOCK_ON) 
     keystate[VK_CAPITAL] = 1;
+  if ((mods & LEFT_CTRL_PRESSED) && (mods & RIGHT_ALT_PRESSED))
+    {
+      keystate[VK_CONTROL] = 0x80;
+      keystate[VK_LCONTROL] = 0x80;
+      keystate[VK_MENU] = 0x80;
+      keystate[VK_RMENU] = 0x80;
+    }
+
   isdead = ToAscii (event->wVirtualKeyCode, event->wVirtualScanCode,
 		    keystate, (LPWORD) ansi_code, 0);
   if (isdead == 0) 
@@ -275,7 +284,7 @@
 
 /* return code -1 means that event_queue_ptr won't be incremented. 
    In other word, this event makes two key codes.   (by himi)       */
-static int 
+int 
 key_event (KEY_EVENT_RECORD *event, struct input_event *emacs_ev)
 {
   int map;
@@ -349,7 +358,9 @@
        * make_lispy_event () now requires non-ascii codes to have
        * the full X keysym values (2nd byte is 0xff).  add it on.
        */
+#ifndef HAVE_NTGUI
       map |= 0xff00;
+#endif
       XSETINT (emacs_ev->code, map);
     }
 /* for Mule 2.2 (Based on Emacs 19.28) */