* Tue Aug 05 2008 Peter Hutterer <peter.hutterer@redhat.com> 1.4.99.906-5
- xserver-1.5.0-xkb-fix-ProcXkbSetXYZ-to-work-on-all.patch: force xkb requests to apply to all extension devices. - drop call-SwitchCoreKeyboard.patch - xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch: force SwitchCoreKeyboard for evdev devices to push device keymap into core device.
This commit is contained in:
parent
b1cd19cffe
commit
3262bac3e6
@ -19,7 +19,7 @@
|
||||
Summary: X.Org X11 X server
|
||||
Name: xorg-x11-server
|
||||
Version: 1.4.99.906
|
||||
Release: 4%{?dist}
|
||||
Release: 5%{?dist}
|
||||
URL: http://www.x.org
|
||||
License: MIT
|
||||
Group: User Interface/X
|
||||
@ -63,7 +63,8 @@ Patch5007: xserver-1.5.0-bad-fbdev-thats-mine.patch
|
||||
Patch5011: xserver-1.4.99-endian.patch
|
||||
|
||||
# evdev keyboard map fix
|
||||
# Patch5012: xserver-1.5.0-call-SwitchCoreKeyboard-for-first-device.patch
|
||||
Patch5013: xserver-1.5.0-xkb-fix-ProcXkbSetXYZ-to-work-on-all.patch
|
||||
Patch5014: xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch
|
||||
|
||||
%define moduledir %{_libdir}/xorg/modules
|
||||
%define drimoduledir %{_libdir}/dri
|
||||
@ -488,10 +489,21 @@ rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
|
||||
%changelog
|
||||
* Tue Aug 05 2008 Peter Hutterer <peter.hutterer@redhat.com> 1.4.99.906-5
|
||||
- xserver-1.5.0-xkb-fix-ProcXkbSetXYZ-to-work-on-all.patch: force xkb requests
|
||||
to apply to all extension devices.
|
||||
- drop call-SwitchCoreKeyboard.patch
|
||||
- xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch: force
|
||||
SwitchCoreKeyboard for evdev devices to push device keymap into core device.
|
||||
|
||||
* Mon Aug 04 2008 Adam Jackson <ajax@redhat.com> 1.4.99.906-4
|
||||
- 10-x11-keymap.fdi, fedora-setup-keyboard: Attempt to read keyboard settings
|
||||
from /etc/sysconfig/keyboard and stuff them into hal.
|
||||
|
||||
* Mon Aug 04 2008 Peter Hutterer <peter.hutterer@redhat.com> 1.4.99.906-3
|
||||
- xserver-1.5.0-call-SwitchCoreKeyboard-for-first-device.patch: force a keymap
|
||||
switch to push the device keymap into the core device.
|
||||
|
||||
* Thu Jul 31 2008 Adam Jackson <ajax@redhat.com> 1.4.99.906-2
|
||||
- Drop the evdev keyboarding patch.
|
||||
|
||||
|
@ -1,61 +0,0 @@
|
||||
From b2943b507261d1c68a6266b090ec44495d7796a1 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Date: Mon, 28 Jul 2008 12:17:17 +0930
|
||||
Subject: [PATCH] xfree86: call SwitchCoreKeyboard for first physical device.
|
||||
|
||||
The VCK's keymap is different to the (evdev) keyboard's keymap. Any changes to
|
||||
the VCK are lost when the first key is pressed (see X.Org Bug 16364). By
|
||||
calling SwitchCoreKeyboard for the first hotplugged keyboard, the keymap is
|
||||
toggled already when the first apps start.
|
||||
|
||||
This fixes GNOME, which stores the keycode instead of the keysym.
|
||||
Fixes xmodmap, etc. settings in xinitrc or otherwise set before the first key
|
||||
press.
|
||||
|
||||
This breaks if the first hotplugged keyboard is not the actual keyboard the
|
||||
user wants to use.
|
||||
---
|
||||
hw/xfree86/common/xf86Xinput.c | 27 +++++++++++++++++++++++++++
|
||||
1 files changed, 27 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
|
||||
index 710e787..fe08626 100644
|
||||
--- a/hw/xfree86/common/xf86Xinput.c
|
||||
+++ b/hw/xfree86/common/xf86Xinput.c
|
||||
@@ -423,6 +423,33 @@ 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.
|
||||
+ *
|
||||
+ * If this is the first real keyboard to activate, 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)
|
||||
+ {
|
||||
+ DeviceIntPtr it;
|
||||
+
|
||||
+ for (it = inputInfo.keyboard->next; it; it = it->next)
|
||||
+ {
|
||||
+ if (it->key && it != dev)
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (!it) /* no other keyboard found */
|
||||
+ SwitchCoreKeyboard(dev);
|
||||
+ }
|
||||
+
|
||||
*pdev = dev;
|
||||
return Success;
|
||||
|
||||
--
|
||||
1.5.5.1
|
||||
|
69
xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch
Normal file
69
xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch
Normal file
@ -0,0 +1,69 @@
|
||||
From 638cab7e1dc3711f7fb04155bcdabf4b8895cc5e Mon Sep 17 00:00:00 2001
|
||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
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
|
||||
|
2245
xserver-1.5.0-xkb-fix-ProcXkbSetXYZ-to-work-on-all.patch
Normal file
2245
xserver-1.5.0-xkb-fix-ProcXkbSetXYZ-to-work-on-all.patch
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user