Author: baggins Date: Fri Feb 13 18:56:49 2009 GMT Module: SOURCES Tag: HEAD ---- Log message: - force SwitchCoreKeyboard for evdev devices to push device keymap into core device (fixes "Up" key invoking gnome-screenshot problem)
---- Files affected: SOURCES: xorg-xserver-server-force-SwitchCoreKeyboard-for-evdev.patch (NONE -> 1.1) (NEW) ---- Diffs: ================================================================ Index: SOURCES/xorg-xserver-server-force-SwitchCoreKeyboard-for-evdev.patch diff -u /dev/null SOURCES/xorg-xserver-server-force-SwitchCoreKeyboard-for-evdev.patch:1.1 --- /dev/null Fri Feb 13 19:56:50 2009 +++ SOURCES/xorg-xserver-server-force-SwitchCoreKeyboard-for-evdev.patch Fri Feb 13 19:56:43 2009 @@ -0,0 +1,69 @@ +From 638cab7e1dc3711f7fb04155bcdabf4b8895cc5e Mon Sep 17 00:00:00 2001 +From: Peter Hutterer <[email protected]> +Date: Mon, 4 Aug 2008 17:08:36 +0930 +Subject: [PATCH] xfree86: force SwitchCoreKeyboard for evdev devices (updated). + +If an evdev keyboard device is added through the HAL mechanism, force a +SwitchCoreKeyboard to load the evdev map into the VCK. This way, by the time a +client starts the evdev keymap is already there, leading to less pain lateron. + +Works if: +- all keyboards are hotplugged through HAL, and/or +- the xorg.conf keyboard uses the kbd driver. + +Has no effect (i.e. busted keymaps) if: +- an evdev keyboard device has been specified in the xorg.conf. +- we don't have a device at startup and plug a device in after starting the + desktop environment. +- if the device we use isn't the first one reported by HAL. + +If HAL isn't set up, this patch is a noop. +--- + hw/xfree86/common/xf86Xinput.c | 31 +++++++++++++++++++++++++++++++ + 1 files changed, 31 insertions(+), 0 deletions(-) + +diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c +index 710e787..dacc3dc 100644 +--- a/hw/xfree86/common/xf86Xinput.c ++++ b/hw/xfree86/common/xf86Xinput.c +@@ -423,6 +423,37 @@ NewInputDeviceRequest (InputOption *options, DeviceIntPtr *pdev) + (!is_auto || xf86Info.autoEnableDevices)) + EnableDevice(dev); + ++ /* XXX: The VCK always starts with built-in defaults for keymap. These ++ * defaults are different to the evdev ones. When the first key is hit on ++ * an extension device, the keymap is copied into the VCK's and any ++ * changes made at runtime to the VCK map are lost. ++ * ++ * Assumption: if we have at least one evdev keyboard device, we can ++ * ignore kbd devices. Force a SwitchCoreKeyboard so the VCK has the same ++ * keymap as we do. ++ * ++ * Next time we hit a key, we don't change the map over anymore (see ++ * SwitchCoreKeyboard), and live happily ever after. ++ * Until we have 2 physical keyboards. Or the first real keyboard isn't ++ * actually the one we use. Oh well. ++ * ++ */ ++ if (dev->key) ++ { ++ InputInfoPtr info; ++ ++ /* Search if there is one other keyboard that uses evdev. */ ++ for (info = xf86InputDevs; info; info = info->next) ++ { ++ if (info != pInfo && info->dev && info->dev->key && ++ (strcmp(info->drv->driverName, "evdev") == 0)) ++ break; ++ } ++ ++ if (!info) ++ SwitchCoreKeyboard(dev); ++ } ++ + *pdev = dev; + return Success; + +-- +1.5.5.1 + ================================================================ _______________________________________________ pld-cvs-commit mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit
