Summary: | deferred XKB init breaks use of custom types | ||
---|---|---|---|
Product: | xorg | Reporter: | Matthias B. <haferfrost> |
Component: | Server/Input/Core | Assignee: | Xorg Project Team <xorg-team> |
Status: | RESOLVED FIXED | QA Contact: | Xorg Project Team <xorg-team> |
Severity: | normal | ||
Priority: | medium | CC: | haferfrost |
Version: | unspecified | ||
Hardware: | x86 (IA32) | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: |
Description
Matthias B.
2008-02-03 11:12:18 UTC
(In reply to comment #0) which server version are you using? i seem to remember similar reports against 1.4.0, which should be fixed in 1.4.0.90. reassigning anyway, as this isn't an xkbcomp issue. I'm using 1.4.0.90, so it's not fixed there. The problem is worse than I thought. The deferred initialization of XKB does not only break using xkbcomp in .xinitrc, it also breaks my custom keymap when I configure it via xorg.conf. I have a custom keymap that redefines the FOUR_LEVEL_* types to prevent auto-capitalization of letters when the Lock modifier is set. Unfortunately, for whatever reasons, the types redefinition (unlike the symbols redefinition) only affects clients started after the keymap has been set. At least that's true for xterms. Because of the deferred initialization, my custom keymap does not work properly with programs started before the first keypress. Unfortunately I start basically all programs I usually work with automatically via .xinitrc. Is there a workaround? Can I somehow force the initialization of the keymap? (In reply to comment #3) > The problem is worse than I thought. The deferred initialization of XKB does > not only break using xkbcomp in .xinitrc, it also breaks my custom keymap when > I configure it via xorg.conf. I have a custom keymap that redefines the > FOUR_LEVEL_* types to prevent auto-capitalization of letters when the Lock > modifier is set. Unfortunately, for whatever reasons, the types redefinition > (unlike the symbols redefinition) only affects clients started after the keymap > has been set. At least that's true for xterms. Because of the deferred > initialization, my custom keymap does not work properly with programs started > before the first keypress. Unfortunately I start basically all programs I > usually work with automatically via .xinitrc. just a stab in the dark: could it be the following weird race condition? the input-hotplug code relies on dbus/hal. IIRC, the dbus handler is treated like a socket and added to the standard select loop. Naturally, some time elapses before all devices have been sent to the server and initialised. These devices are always added with default settings as in /etc/hal/fdi/policy/x11-input.fdi During this time, clients that are started through xinitrc may start up, connect to the x server, get the current keymap, which is not the one you defined. To test this, a simple sleep 15 in xinitrc should be enough. After that timeout, all devices should be initialised and you can call xkbcomp and start your applications. I run neither HAL nor DBUS, so that's not my problem. I've tried sleeps and they haven't helped. Should be fixed with the commits leading up to c06e27b2f6fd9f7b9f827623a48876a225264132. Please reopen if this is still an issue. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.