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@dronecode.org.uk>
This commit is contained in:
Jon TURNEY 2009-01-26 13:15:07 +00:00
parent e2b4d3d4a1
commit 4475ae036c
4 changed files with 28 additions and 85 deletions

View File

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

View File

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

View File

@ -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,23 +223,6 @@ 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",
@ -255,17 +231,13 @@ winKeybdProc (DeviceIntPtr pDeviceInt, int iState)
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);
}
InitKeyboardDeviceStruct (pDeviceInt,
&g_winInfo.xkb,
winKeybdBell,
winKeybdCtrl);
if (!g_winInfo.xkb.disable)
{
xkbi = pDeviceInt->key->xkbInfo;
if (xkbi != NULL)
if ((xkbi != NULL) && (xkbi->desc != NULL))
{
ctrl = xkbi->desc->ctrls;
ctrl->repeat_delay = g_winInfo.keyboard.delay;
@ -273,22 +245,18 @@ winKeybdProc (DeviceIntPtr pDeviceInt, int iState)
}
else
{
winErrorFVerb (1, "winKeybdProc - Error initializing keyboard AutoRepeat (No XKB)\n");
}
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

View File

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