Bug 1287406

Summary: When using multiple layout, XKB eats keyboard shortcuts that start with the layout switching shortcut
Product: Red Hat Enterprise Linux 7 Reporter: Dmitry Bolkhovityanov <d.yu.bolkhovityanov>
Component: xorg-x11-serverAssignee: Adam Jackson <ajax>
Status: CLOSED WONTFIX QA Contact: Desktop QE <desktop-qa-list>
Severity: high Docs Contact:
Priority: unspecified    
Version: 7.1CC: peter.hutterer
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-02-22 05:19:23 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Dmitry Bolkhovityanov 2015-12-02 02:43:30 UTC
Description of problem:
Users with multiple keyboard layouts often setup a keyboard shortcut to switch between layouts. This is done on the X.org server level and often uses a combination of shift-keys, such as ALT+SHIFT or CTRL+SHIFT. When such a combination is used, any other keyboard shortcuts that are defined by the application and use a superset of shift-keys are no longer accessible because XKB acts on the layout switching combination on key-down and won't let the user complete the application shortcut.

For example - a common layout switching combination is ALT-SHIFT (used for MS-Windows compatibility) while ALT-SHIFT-TAB is the default "switch to previous window" shortcut in most window manager. With that setup a user can never use the "switch to previous window" action because as soon as the user holds down ALT and SHIFT together, XKB switches layout and effectively simulates the release of the shift-keys. When TAB is then clicked it does nothing.

The problem is even more serious if the user chooses CTRL-SHIFT as the layout switching shortcut (which is common on Europe) as a many applications use CTRL-SHIFT keyboard shortcuts, for example: Eclipse.

Version-Release number of selected component (if applicable):


How reproducible:
Always

Steps to Reproduce:
1. Setup multiple keyboard layouts (for example - English and French)
2. Setup ALT-SHIFT as the keyboard layout switching sequence
3. Try to use ALT-SHIFT-TAB to switch to the previous window

Actual results:
The keyboard layout changes

Expected results:
The previous window should become active.

Additional info:
This bug has been discussed on the Freedesktop.org Bugzilla as bug #865 : http://bugs.freedesktop.org/show_bug.cgi?id=865 and a patch was offered by Ilya Murav'jov. The patch was tested by many users and was found useful and with no adverse effects. X11 developers have apparently decided not to apply this patch because the problematic behaviour is exactly according to the XKB 1 specs and they hope to solve it with XKB 2 (for which there currently is no viable roadmap for inclusion into an X.org release).

Fixing this will offer a massive improvement in desktop behaviour for multi-lingual users. Also please see Launchpad bug 36812 ( https://bugs.launchpad.net/xorg-server/+bug/36812 ) for a longer discussion on the subject.

P.S. See bug #660254 -- the same problem still exists (5 years after bugs opening and, in fact, from the very beginning).
Bug #660254 was "CLOSED WONTFIX" because of Fedora 21 EOL, but, in fact, should be re-targeted to RHEL7.

Comment 1 Peter Hutterer 2016-02-22 05:19:23 UTC
The requested behavior is explicitly against the XKB protocol specification and may have side-effects that are not visible until well down the track. This may be a change for a major RHEL release, but not for a minor update.