diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/evdev.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/src/evdev.c b/src/evdev.c index 5cbce35..9c1a4d3 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -90,13 +90,6 @@ #define XI86_SERVER_FD 0x20 #endif -static const char *evdevDefaults[] = { - "XkbRules", "evdev", - "XkbModel", "pc104", /* the right model for 'us' */ - "XkbLayout", "us", - NULL -}; - /* Any of those triggers a proximity event */ static int proximity_bits[] = { BTN_TOOL_PEN, @@ -1161,23 +1154,27 @@ static int EvdevAddKeyClass(DeviceIntPtr device) { int rc = Success; - XkbRMLVOSet rmlvo = {0}; + XkbRMLVOSet rmlvo = {0}, + defaults; InputInfoPtr pInfo; pInfo = device->public.devicePrivate; + XkbGetRulesDflts(&defaults); + /* sorry, no rules change allowed for you */ xf86ReplaceStrOption(pInfo->options, "xkb_rules", "evdev"); rmlvo.rules = xf86SetStrOption(pInfo->options, "xkb_rules", NULL); - rmlvo.model = xf86SetStrOption(pInfo->options, "xkb_model", NULL); - rmlvo.layout = xf86SetStrOption(pInfo->options, "xkb_layout", NULL); - rmlvo.variant = xf86SetStrOption(pInfo->options, "xkb_variant", NULL); - rmlvo.options = xf86SetStrOption(pInfo->options, "xkb_options", NULL); + rmlvo.model = xf86SetStrOption(pInfo->options, "xkb_model", defaults.model); + rmlvo.layout = xf86SetStrOption(pInfo->options, "xkb_layout", defaults.layout); + rmlvo.variant = xf86SetStrOption(pInfo->options, "xkb_variant", defaults.variant); + rmlvo.options = xf86SetStrOption(pInfo->options, "xkb_options", defaults.options); if (!InitKeyboardDeviceStruct(device, &rmlvo, NULL, EvdevKbdCtrl)) rc = !Success; XkbFreeRMLVOSet(&rmlvo, FALSE); + XkbFreeRMLVOSet(&defaults, FALSE); return rc; } @@ -2692,7 +2689,7 @@ _X_EXPORT InputDriverRec EVDEV = { EvdevPreInit, EvdevUnInit, NULL, - evdevDefaults, + NULL, #ifdef XI86_DRV_CAP_SERVER_FD XI86_DRV_CAP_SERVER_FD #endif |