Don't strip XKB grp

Bug #1315867 reported by Alkis Georgopoulos
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
gnome-settings-daemon (Ubuntu)
New
Undecided
Unassigned
unity-settings-daemon (Ubuntu)
New
Undecided
Unassigned

Bug Description

unity-settings-daemon => gsd-keyboard-manager.c has an Ubuntu specific patch that strips the grp: part in XKB options:
        if (n_sources < 2 || g_strcmp0 (g_getenv ("XDG_CURRENT_DESKTOP"), "Unity") == 0)
                strip_xkb_option (options, "grp:");

The original upstream source code is:
        if (n_sources < 2)
                strip_xkb_option (options, "grp:");

That causes a problem: we're no longer able to type e.g. Greek in TuxPaint, because TuxPaint grabs the keyboard, and u-s-d then doesn't see the layout switching shortcut.

But: if we do revert only that line of the source code to what's in upstream, then we get another problem: that the XKB-defined layout switching shortcut (e.g. Alt+Shift) doesn't update the keyboard indicator in the panel, only the GNOME-defined shortcut (e.g. Win+Space) does.
To solve this, I think u-s-d needs to handle ISO_Next_Group. I don't know if that part exists upstream, but I do know that it works fine in Fedora 20.

After solving this bug, a tiny issue will remain: that Alt+Shift inside keyboard-grabbing applications won't update the keyboard indicator. Upstream GNOME doesn't want patches for that and may try to solve it in SDL, but the other 2 issues described above ^ are Ubuntu-specific.

Tags: patch
Revision history for this message
Alkis Georgopoulos (alkisg) wrote :
tags: added: patch
Revision history for this message
William Hua (attente) wrote :

Thanks Alkis, I don't know how Fedora is doing it, but under Ubuntu GNOME, this doesn't work for us. Having the grp option is causing problems because when ISO_Next_Group is pressed, g-s-d first handles it by setting the layout and locking the first group, then xkb handles it by switching to the second group, which is simply not correct.

We need some changes in Compiz which I'm blocked on because XKeyEvents work by keycode and ISO_Next_Group is a keysym. So this is not too easy either...

Revision history for this message
Alkis Georgopoulos (alkisg) wrote :

Input from upstream:

(12:17:39 μμ) rtcm: alkisg: yeah, mutter resolves the ISO_Next_Group keysym to keycodes and installs passive grabs for all those keycodes
(12:21:00 μμ) rtcm: alkisg: so yeah, compiz would need something like https://git.gnome.org/browse/mutter/tree/src/core/keybindings.c#n367

So I'm guessing that metacity (which is what gnome-flashback uses) would also need that? Should I put it in the Affects list?

Thanks a lot,
Alkis

description: updated
affects: unity-settings-daemon → unity-settings-daemon (Ubuntu)
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.