kwin/autotests
Martin Gräßlin 4235871667 Remove not-wanted modifiers prior to evaluating global shortcuts
Summary:
When triggering global shortcuts we are more interested in the hold
keys than the currently active modifiers. E.g. capslock should not
be seen as "shift is hold". Similar we need to remove consumed
modifiers. Shift+5 is % and not Shift+% - the shift modifier is
consumed and needs to be removed from shortcut evaluation.

To support this we need to have the actual state directly from
xkbcommon. Thus a new method is added which exposes the modifiers
relevant for global shortcut matching. In addition on every key press
all consumed modifiers are calculated and kept so that they can be
used for shortcut matching.

In addition a workaround is added for Backtab. Similar workaround
exists in kglobalaccel for X11. The problem is that our shortcuts are
stored incorrectly: Shift+Tab instead of Backtab. Thus a mapping back
is required. To make everything worse KWin registers the wrong key
sequence "Alt+Shift+Backtab" which doesn't make any sense and is
broken on X11 at least.

The workaround supports both special cases. The one for Backtab should
be turned into Shift+Tab and also KWin's special case of adding shift
to backtab.

CCBUG: 368581

Reviewers: #kwin, #plasma_on_wayland, bshah

Subscribers: plasma-devel, kwin

Tags: #plasma_on_wayland, #kwin

Differential Revision: https://phabricator.kde.org/D2768
2016-09-14 10:25:13 +02:00
..
integration Remove not-wanted modifiers prior to evaluating global shortcuts 2016-09-14 10:25:13 +02:00
libinput
libkwineffects
libxrenderutils [autotests] Add missing add_test() 2016-09-08 15:24:21 +02:00
tabbox Support highlighting windows through EffectsHandlerImpl 2016-09-13 08:36:12 +02:00
abstract_client.h
client.h
CMakeLists.txt
fakeeffectplugin.cpp
fakeeffectplugin.json
fakeeffectplugin_version.cpp
fakeeffectplugin_version.json
mock_abstract_client.cpp
mock_abstract_client.h
mock_client.cpp
mock_client.h
mock_effectshandler.cpp
mock_effectshandler.h
mock_screens.cpp
mock_screens.h
mock_workspace.cpp
mock_workspace.h
test_builtin_effectloader.cpp [autotests] Add Q_CONSTRUCTOR_FUNCTION to X11 specific tests to force xcb 2016-09-08 15:22:48 +02:00
test_client_machine.cpp [autotests] Add Q_CONSTRUCTOR_FUNCTION to X11 specific tests to force xcb 2016-09-08 15:22:48 +02:00
test_plugin_effectloader.cpp
test_screen_edges.cpp [autotests] Add Q_CONSTRUCTOR_FUNCTION to X11 specific tests to force xcb 2016-09-08 15:22:48 +02:00
test_screen_paint_data.cpp
test_screens.cpp
test_scripted_effectloader.cpp
test_virtual_desktops.cpp
test_window_paint_data.cpp
test_xcb_size_hints.cpp [autotests] Add Q_CONSTRUCTOR_FUNCTION to X11 specific tests to force xcb 2016-09-08 15:22:48 +02:00
test_xcb_window.cpp [autotests] Add Q_CONSTRUCTOR_FUNCTION to X11 specific tests to force xcb 2016-09-08 15:22:48 +02:00
test_xcb_wrapper.cpp [autotests] Add Q_CONSTRUCTOR_FUNCTION to X11 specific tests to force xcb 2016-09-08 15:22:48 +02:00
test_xrandr_screens.cpp
testutils.h [autotests] Add Q_CONSTRUCTOR_FUNCTION to X11 specific tests to force xcb 2016-09-08 15:22:48 +02:00
workspace.h