Don't strip XKB grp

Bug #1315867 reported by Alkis Georgopoulos on 2014-05-04
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
gnome-settings-daemon (Ubuntu)
Undecided
Unassigned
unity-settings-daemon (Ubuntu)
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.

Alkis Georgopoulos (alkisg) wrote :
tags: added: patch
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...

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  Edit
Everyone can see this information.

Other bug subscribers