summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@redhat.com>2008-12-03 14:24:25 +1000
committerPeter Hutterer <peter.hutterer@redhat.com>2008-12-03 16:10:40 +1000
commit9c5dd7337fa93fb1650cc017e523b939dcbf482a (patch)
tree82687e11b23e3354fee5560c430d6237b35417f1
parent463e02e7de5da3e582a3a049110a476713c7210e (diff)
Let the DDX decide on the XkbRulesDefaults.
Rather than assuming rules in the CoreKeyboardProc, init the default rules in InitCoreDevices, then re-use them later. In the xfree86 DDX, set the rules to "base" or "evdev", depending on whether we'll load kbd or evdev. If we create a new MD, use pc105,us as default and re-use the rules file used previously. Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
-rw-r--r--Xi/chdevhier.c6
-rw-r--r--dix/devices.c1
-rw-r--r--hw/xfree86/common/xf86Config.c6
3 files changed, 11 insertions, 2 deletions
diff --git a/Xi/chdevhier.c b/Xi/chdevhier.c
index db16349af..631857d58 100644
--- a/Xi/chdevhier.c
+++ b/Xi/chdevhier.c
@@ -117,7 +117,11 @@ ProcXChangeDeviceHierarchy(ClientPtr client)
if (!c->sendCore)
ptr->coreEvents = keybd->coreEvents = FALSE;
-
+#ifdef XKB
+ /* supplying NULL for rules simply means we re-use
+ whatever ruleset we used for the previous devices. */
+ XkbSetRulesDflts(NULL, "pc105", "us", NULL, NULL);
+#endif
ActivateDevice(ptr);
ActivateDevice(keybd);
diff --git a/dix/devices.c b/dix/devices.c
index 6b8cecb5a..9feca90b4 100644
--- a/dix/devices.c
+++ b/dix/devices.c
@@ -526,7 +526,6 @@ CoreKeyboardProc(DeviceIntPtr pDev, int what)
#ifdef XKB
if (!noXkbExtension) {
bzero(&names, sizeof(names));
- XkbSetRulesDflts("base", "pc105", "us", NULL, NULL);
XkbInitKeyboardDeviceStruct(pDev, &names, &keySyms, modMap,
CoreKeyboardBell, CoreKeyboardCtl);
}
diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index 1210a8fcc..9bf18b555 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -1008,6 +1008,12 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
xf86Info.allowEmptyInput = (xf86Info.autoAddDevices && xf86Info.autoEnableDevices);
xf86GetOptValBool(FlagOptions, FLAG_ALLOW_EMPTY_INPUT, &xf86Info.allowEmptyInput);
+ /* AEI on? Then we're not using kbd, so use the evdev rules set. */
+#ifdef XKB
+ XkbSetRulesDflts(((xf86Info.allowEmptyInput) ? "evdev" : "base"),
+ "pc105", "us", NULL, NULL);
+#endif
+
xf86Info.useDefaultFontPath = TRUE;
xf86Info.useDefaultFontPathFrom = X_DEFAULT;
if (xf86GetOptValBool(FlagOptions, FLAG_USE_DEFAULT_FONT_PATH, &value)) {