kwin/autotests/integration
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
..
data [autotests/integration] Add test case for rule matching on window role 2016-08-25 13:23:06 +02:00
effects Introduce an EffectsHandler::animationsSupported -> bool 2016-08-15 17:38:33 +02:00
helper Rename autotests/wayland to autotests/integration 2016-06-29 10:29:45 +02:00
scripting Improve introspection into Scripting for KWin core/testing 2016-08-22 14:37:46 +02:00
activities_test.cpp [autotests] Wrap integration tests in dbus-session-run 2016-09-14 07:59:14 +02:00
CMakeLists.txt [autotests/integration] Add a global shortcuts test 2016-09-14 09:13:36 +02:00
debug_console_test.cpp Add support for xdg-shell version 5 interface 2016-07-13 13:20:00 +02:00
decoration_input_test.cpp Add support for xdg-shell version 5 interface 2016-07-13 13:20:00 +02:00
desktop_window_x11_test.cpp Force windows of type desktop to be opaque 2016-08-10 15:10:22 +02:00
dont_crash_aurorae_destroy_deco.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
dont_crash_cancel_animation.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
dont_crash_empty_deco.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
dont_crash_glxgears.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
dont_crash_no_border.cpp Add support for xdg-shell version 5 interface 2016-07-13 13:20:00 +02:00
globalshortcuts_test.cpp Remove not-wanted modifiers prior to evaluating global shortcuts 2016-09-14 10:25:13 +02:00
input_stacking_order.cpp Add support for xdg-shell version 5 interface 2016-07-13 13:20:00 +02:00
internal_window.cpp DebugConsole window does not take keyboard input 2016-09-12 13:24:33 +02:00
kwin_wayland_test.cpp [autotests/integration] Unload effects before destroying Workspace 2016-07-04 14:37:35 +02:00
kwin_wayland_test.h [autotests/integration] Test case for screen locked with mod-only-shortcuts 2016-08-16 08:19:45 +02:00
lockscreen.cpp [autotest/intergration] Wait for pointer enter before simulating button press 2016-08-08 11:12:22 +02:00
maximize_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
modifier_only_shortcut_test.cpp Ensure modifier locks and latches don't trigger the mod only shortcut 2016-08-19 10:56:41 +02:00
move_resize_window_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
no_xdg_runtime_dir_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
plasma_surface_test.cpp Set the restore geometry after placing a ShellClient for the first time 2016-08-31 15:12:53 +02:00
plasmawindow_test.cpp Expose window geometry to PlasmaWindow 2016-07-20 13:49:10 +02:00
platformcursor.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
pointer_input.cpp [wayland] Ensure that pointer enter event carries the correct coordinates 2016-08-04 11:13:52 +02:00
quick_tiling_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
scene_opengl_test.cpp Support restarting the OpenGL compositor on Wayland 2016-07-20 14:08:23 +02:00
scene_qpainter_test.cpp Handle restart of Compositor Scene correctly for Wayland client 2016-07-21 08:11:32 +02:00
screen_changes_test.cpp Announce output changes to Wayland for platforms not handling outputs 2016-07-20 13:53:02 +02:00
screenedge_client_show_test.cpp Emit windowShown and windowHidden from Client::internalKeep and ::internalHide 2016-07-14 11:11:49 +02:00
shade_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
shell_client_test.cpp Fix updating layer when setting a ShellClient to fullscreen 2016-09-14 10:24:46 +02:00
start_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
struts_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
tabbox_test.cpp Remove not-wanted modifiers prior to evaluating global shortcuts 2016-09-14 10:25:13 +02:00
test_helpers.cpp [autotests/integration] Add ScreenLockerWatcher to the Test::lockScreen and ::unlockScreen 2016-08-16 10:23:37 +02:00
touch_input_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
transient_no_input_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
transient_placement.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
window_rules_test.cpp Match window role in Rules in a case insensitive manner 2016-09-13 08:37:26 +02:00
xclipboardsync_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
xwayland_input_test.cpp Warp the xcb pointer whenever pointer leaves an X11 surface 2016-08-24 13:12:06 +02:00