mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-02-04 09:20:29 +01:00
touchpad: extend the key blacklist for disable-while-typing
Alt-tab should not trigger the disable-while-typing timeout, likewise with the F-keys, multimedia keys, the windows and menu key, etc. https://bugs.freedesktop.org/show_bug.cgi?id=90613 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com> Tested-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
This commit is contained in:
parent
fbb37a3c5e
commit
7248ffbd66
1 changed files with 33 additions and 12 deletions
|
|
@ -915,6 +915,37 @@ tp_keyboard_timeout(uint64_t now, void *data)
|
|||
tp->dwt.keyboard_active = false;
|
||||
}
|
||||
|
||||
static inline bool
|
||||
tp_key_ignore_for_dwt(unsigned int keycode)
|
||||
{
|
||||
switch (keycode) {
|
||||
/* Ignore modifiers to be responsive to ctrl-click, alt-tab, etc. */
|
||||
case KEY_LEFTCTRL:
|
||||
case KEY_RIGHTCTRL:
|
||||
case KEY_LEFTALT:
|
||||
case KEY_RIGHTALT:
|
||||
case KEY_LEFTSHIFT:
|
||||
case KEY_RIGHTSHIFT:
|
||||
case KEY_FN:
|
||||
case KEY_CAPSLOCK:
|
||||
case KEY_TAB:
|
||||
case KEY_COMPOSE:
|
||||
case KEY_RIGHTMETA:
|
||||
case KEY_LEFTMETA:
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/* Ignore keys not part of the "typewriter set", i.e. F-keys,
|
||||
* multimedia keys, numpad, etc.
|
||||
*/
|
||||
if (keycode >= KEY_F1)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static void
|
||||
tp_keyboard_event(uint64_t time, struct libinput_event *event, void *data)
|
||||
{
|
||||
|
|
@ -934,18 +965,8 @@ tp_keyboard_event(uint64_t time, struct libinput_event *event, void *data)
|
|||
|
||||
/* modifier keys don't trigger disable-while-typing so things like
|
||||
* ctrl+zoom or ctrl+click are possible */
|
||||
switch (libinput_event_keyboard_get_key(kbdev)) {
|
||||
case KEY_LEFTCTRL:
|
||||
case KEY_RIGHTCTRL:
|
||||
case KEY_LEFTALT:
|
||||
case KEY_RIGHTALT:
|
||||
case KEY_LEFTSHIFT:
|
||||
case KEY_RIGHTSHIFT:
|
||||
case KEY_FN:
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (tp_key_ignore_for_dwt(libinput_event_keyboard_get_key(kbdev)))
|
||||
return;
|
||||
|
||||
if (!tp->dwt.keyboard_active) {
|
||||
tp_edge_scroll_stop_events(tp, time);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue