From 1a314a1ef06222977e7ccb94331ce31c17534b2a Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 8 May 2008 13:16:48 +0930 Subject: [PATCH] Revert "config: deprecate (and ignore) the use of input.xkb.whatever options." daniels: "Hrm, I'd prefer to have input.xkb.{m,l,v,o} be the primary keys, and have input.x11_options be a backup for that, rather than the former being deprecated, for the reasons I listed earlier ..." see http://bugs.freedesktop.org/show_bug.cgi?id=13037#c51 This reverts commit 26188875de1ccc84ac60bfb251e3ec43de2b9e22. --- config/hal.c | 27 ++++++++++++++++++++++----- config/x11-input.fdi | 16 +++++++--------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/config/hal.c b/config/hal.c index 05a02ccbf..f15064646 100644 --- a/config/hal.c +++ b/config/hal.c @@ -167,7 +167,7 @@ device_added(LibHalContext *hal_ctx, const char *udi) LibHalPropertySet *set = NULL; LibHalPropertySetIterator set_iter; - char *psi_key = NULL, *tmp_val; + char *psi_key = NULL, *tmp_val, *tmp_key; dbus_error_init(&error); @@ -244,10 +244,27 @@ device_added(LibHalContext *hal_ctx, const char *udi) add_option(&options, psi_key + sizeof(LIBHAL_PROP_KEY)-1, tmp_val); xfree(tmp_val); } - } /* don't accept input.xkb.whatever options anymore */ - else if (!strncasecmp(psi_key, LIBHAL_XKB_PROP_KEY, sizeof(LIBHAL_XKB_PROP_KEY)-1)){ - LogMessage(X_ERROR, "config/hal: Option '%s' is " - "deprecated (ignoring).\n", psi_key); + + /* evdev's XKB options... we should probably depreciate this usage */ + } else if (!strncasecmp(psi_key, LIBHAL_XKB_PROP_KEY, sizeof(LIBHAL_XKB_PROP_KEY)-1)){ + + /* only support strings for all values */ + tmp_val = get_prop_string(hal_ctx, udi, psi_key); + + if (tmp_val){ + /* add "xkb_" + NULL */ + tmp_key = xalloc(strlen(psi_key) - ( sizeof(LIBHAL_XKB_PROP_KEY) - 1) + 5); + + if (!tmp_key){ + LogMessage(X_ERROR, "config/hal: couldn't allocate memory for option %s\n", psi_key); + } else { + sprintf(tmp_key, "xkb_%s", psi_key + sizeof(LIBHAL_XKB_PROP_KEY)-1); + add_option(&options, tmp_key, tmp_val); + + xfree(tmp_key); + } + xfree(tmp_val); + } } } diff --git a/config/x11-input.fdi b/config/x11-input.fdi index 85d7a1fe1..f2e2d50ab 100644 --- a/config/x11-input.fdi +++ b/config/x11-input.fdi @@ -26,21 +26,19 @@ Do not specify "input.x11_options.Device" since "input.device" will be used automatically. - - XKB configuration: - "input.x11_options.XkbRules" - "input.x11_options.XkbModel" - "input.x11_options.XkbLayout" - "input.x11_options.XkbVariant" - "input.x11_options.XkbOptions" - - Legacy Keys (deprecated and ignored by the server): + Legacy Keys "input.xkb.rules" "input.xkb.model" "input.xkb.layout" "input.xkb.variant" "input.xkb.options" + These keys are deprecated. Use these instead: + "input.x11_options.XkbRules" + "input.x11_options.XkbModel" + "input.x11_options.XkbLayout" + "input.x11_options.XkbVariant" + "input.x11_options.XkbOptions" See the evdev documentation for more information.