xserver: Branch 'master'

Jon TURNEY jturney at kemper.freedesktop.org
Mon Feb 2 10:02:49 PST 2009


 hw/xwin/winconfig.c  |   19 -----------
 hw/xwin/winconfig.h  |   11 ------
 hw/xwin/winkeybd.c   |   84 ++++++++++++++++-----------------------------------
 hw/xwin/winwndproc.c |    3 -
 4 files changed, 30 insertions(+), 87 deletions(-)

New commits:
commit 4475ae036c3d5a06a6ce88a359ce2a9a8ae9b4f1
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Mon Jan 26 13:15:07 2009 +0000

    Cygwin/X: Fix compilation for mandatory XKB
    
    Fix a stray '}'
    Update to use RMLVO interface
    Remove g_winInfo.xkb.disable, can never be set since noXkbExtension has been removed
    Change to retrieve modifier key state using XkbStateFieldFromRec() from Colin Harrison
    Update to use XKB defaults from xkb-config.h
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>

diff --git a/hw/xwin/winconfig.c b/hw/xwin/winconfig.c
index 5f5b482..13b8b3a 100644
--- a/hw/xwin/winconfig.c
+++ b/hw/xwin/winconfig.c
@@ -81,7 +81,6 @@ winInfoRec g_winInfo = {
    }
   ,
   {				/* xkb */
-   FALSE,			/* disable */
    NULL,			/* rules */
    NULL,			/* model */
    NULL,			/* layout */
@@ -222,25 +221,10 @@ winConfigKeyboard (DeviceIntPtr pDevice)
   char				*s = NULL;
 
   /* Setup defaults */
-  g_winInfo.xkb.disable = FALSE;
-# ifdef PC98 /* japanese */	/* not implemented */
-  g_winInfo.xkb.rules = "xfree98";
-  g_winInfo.xkb.model = "pc98";
-  g_winInfo.xkb.layout = "nex/jp";
-  g_winInfo.xkb.variant = NULL;
-  g_winInfo.xkb.options = NULL;
-# else
-  g_winInfo.xkb.rules = "xorg";
-  g_winInfo.xkb.model = "pc101";
-  g_winInfo.xkb.layout = "us";
-  g_winInfo.xkb.variant = NULL;
-  g_winInfo.xkb.options = NULL;
-# endif	/* PC98 */
+  XkbGetRulesDflts(&g_winInfo.xkb);
 
   /*
    * Query the windows autorepeat settings and change the xserver defaults.   
-   * If XKB is disabled then windows handles the autorepeat and the special 
-   * treatment is not needed
    */
   {
     int kbd_delay;
@@ -483,7 +467,6 @@ winConfigKeyboard (DeviceIntPtr pDevice)
 	    winMsg (from, "XKB: options: \"%s\"\n", s);
 	  }
 
-	}
 #ifdef XWIN_XF86CONFIG
     }
 #endif
diff --git a/hw/xwin/winconfig.h b/hw/xwin/winconfig.h
index 71c4582..63d6211 100644
--- a/hw/xwin/winconfig.h
+++ b/hw/xwin/winconfig.h
@@ -305,16 +305,7 @@ typedef struct
     long rate;
   }
   keyboard;
-  struct
-  {
-    Bool disable;
-    char *rules;
-    char *model;
-    char *layout;
-    char *variant;
-    char *options;
-  }
-  xkb;
+  XkbRMLVOSet xkb;
   struct
   {
     Bool emulate3Buttons;
diff --git a/hw/xwin/winkeybd.c b/hw/xwin/winkeybd.c
index 41168f3..5e9c4e3 100644
--- a/hw/xwin/winkeybd.c
+++ b/hw/xwin/winkeybd.c
@@ -44,10 +44,6 @@
 
 static Bool g_winKeyState[NUM_KEYCODES];
 
-/* Stored to get internal mode key states.  Must be read-only.  */
-static unsigned short const *g_winInternalModeKeyStatesPtr = NULL;
-
-
 /*
  * Local prototypes
  */
@@ -204,7 +200,6 @@ winKeybdBell (int iPercent, DeviceIntPtr pDeviceInt,
 static void
 winKeybdCtrl (DeviceIntPtr pDevice, KeybdCtrl *pCtrl)
 {
-  g_winInternalModeKeyStatesPtr = &(pDevice->key->state);
 }
 
 
@@ -216,9 +211,7 @@ winKeybdCtrl (DeviceIntPtr pDevice, KeybdCtrl *pCtrl)
 int
 winKeybdProc (DeviceIntPtr pDeviceInt, int iState)
 {
-  KeySymsRec		keySyms;
   DevicePtr		pDevice = (DevicePtr) pDeviceInt;
-  XkbComponentNamesRec names;
   XkbSrvInfoPtr       xkbi;
   XkbControlsPtr      ctrl;
 
@@ -230,65 +223,40 @@ winKeybdProc (DeviceIntPtr pDeviceInt, int iState)
       /* FIXME: Maybe we should use winGetKbdLeds () here? */
       defaultKeyboardControl.leds = g_winInfo.keyboard.leds;
 
-      if (g_winInfo.xkb.disable) 
-	{
-	  InitKeyboardDeviceStruct (pDevice,
-				    &keySyms,
-				    winKeybdBell,
-				    winKeybdCtrl);
-	} 
-      else 
-	{
-
-          names.keymap = g_winInfo.xkb.keymap;
-          names.keycodes = g_winInfo.xkb.keycodes;
-          names.types = g_winInfo.xkb.types;
-          names.compat = g_winInfo.xkb.compat;
-          names.symbols = g_winInfo.xkb.symbols;
-          names.geometry = g_winInfo.xkb.geometry;
-
-	  winErrorFVerb(2, "Rules = \"%s\" Model = \"%s\" Layout = \"%s\""
-		 " Variant = \"%s\" Options = \"%s\"\n",
-		 g_winInfo.xkb.rules ? g_winInfo.xkb.rules : "none",
-		 g_winInfo.xkb.model ? g_winInfo.xkb.model : "none",
-		 g_winInfo.xkb.layout ? g_winInfo.xkb.layout : "none",
-		 g_winInfo.xkb.variant ? g_winInfo.xkb.variant : "none",
-		 g_winInfo.xkb.options ? g_winInfo.xkb.options : "none");
-          
-	  XkbSetRulesDflts (g_winInfo.xkb.rules, g_winInfo.xkb.model, 
-			    g_winInfo.xkb.layout, g_winInfo.xkb.variant, 
-			    g_winInfo.xkb.options);
-	  XkbInitKeyboardDeviceStruct (pDeviceInt, &names, &keySyms,
-				       winKeybdBell, winKeybdCtrl);
-	}
-
-      if (!g_winInfo.xkb.disable)
-        {  
-          xkbi = pDeviceInt->key->xkbInfo;
-          if (xkbi != NULL)
-            {  
-              ctrl = xkbi->desc->ctrls;
-              ctrl->repeat_delay = g_winInfo.keyboard.delay;
-              ctrl->repeat_interval = 1000/g_winInfo.keyboard.rate;
-            }
-          else
-            {  
-              winErrorFVerb (1, "winKeybdProc - Error initializing keyboard AutoRepeat (No XKB)\n");
-            }
+      winErrorFVerb(2, "Rules = \"%s\" Model = \"%s\" Layout = \"%s\""
+                    " Variant = \"%s\" Options = \"%s\"\n",
+                    g_winInfo.xkb.rules ? g_winInfo.xkb.rules : "none",
+                    g_winInfo.xkb.model ? g_winInfo.xkb.model : "none",
+                    g_winInfo.xkb.layout ? g_winInfo.xkb.layout : "none",
+                    g_winInfo.xkb.variant ? g_winInfo.xkb.variant : "none",
+                    g_winInfo.xkb.options ? g_winInfo.xkb.options : "none");
+
+      InitKeyboardDeviceStruct (pDeviceInt,
+                                &g_winInfo.xkb,
+                                winKeybdBell,
+                                winKeybdCtrl);
+
+      xkbi = pDeviceInt->key->xkbInfo;
+      if ((xkbi != NULL) && (xkbi->desc != NULL))
+        {
+          ctrl = xkbi->desc->ctrls;
+          ctrl->repeat_delay = g_winInfo.keyboard.delay;
+          ctrl->repeat_interval = 1000/g_winInfo.keyboard.rate;
+        }
+      else
+        {
+          winErrorFVerb (1, "winKeybdProc - Error initializing keyboard AutoRepeat\n");
         }
 
-      g_winInternalModeKeyStatesPtr = &(pDeviceInt->key->state);
       break;
       
     case DEVICE_ON: 
       pDevice->on = TRUE;
-      g_winInternalModeKeyStatesPtr = &(pDeviceInt->key->state);
       break;
 
     case DEVICE_CLOSE:
     case DEVICE_OFF: 
       pDevice->on = FALSE;
-      g_winInternalModeKeyStatesPtr = NULL;
       break;
     }
 
@@ -350,7 +318,7 @@ winRestoreModeKeyStates ()
   unsigned short	internalKeyStates;
 
   /* X server is being initialized */
-  if (!g_winInternalModeKeyStatesPtr)
+  if (!inputInfo.keyboard)
     return;
 
   /* Only process events if the rootwindow is mapped. The keyboard events
@@ -363,7 +331,9 @@ winRestoreModeKeyStates ()
     mieqProcessInputEvents ();
   
   /* Read the mode key states of our X server */
-  internalKeyStates = *g_winInternalModeKeyStatesPtr;
+  /* (stored in the virtual core keyboard) */
+  internalKeyStates = XkbStateFieldFromRec(&inputInfo.keyboard->key->xkbInfo->state);
+  winDebug("winRestoreModeKeyStates: state %d\n", internalKeyStates);
 
   /* 
    * NOTE: The C XOR operator, ^, will not work here because it is
diff --git a/hw/xwin/winwndproc.c b/hw/xwin/winwndproc.c
index 36cde35..a942fb3 100644
--- a/hw/xwin/winwndproc.c
+++ b/hw/xwin/winwndproc.c
@@ -1031,9 +1031,8 @@ winWindowProc (HWND hwnd, UINT message,
 
       /* 
        * Discard presses generated from Windows auto-repeat
-       * ago: Only discard them if XKB is not disabled 
        */
-      if (!g_winInfo.xkb.disable && (lParam & (1<<30)))
+      if (lParam & (1<<30))
       {
         switch (wParam)
         {


More information about the xorg-commit mailing list