libinput/src
Peter Hutterer 7140f13d82 evdev: track KEY_SYSRQ frames and pass them even as repeat frames
Alt+Printscreen aka KEY_LEFTALT + KEY_SYSRQ is emulated by the kernel
and always posted with SYN_REPORT 1, see
drivers/tty/sysrq.c:sysrq_reinject_alt_sysrq()

The actual sequence when pressing Alt + Printscreen is to release Alt
first, then press it again:
- evdev:
    - [ 10, 674010,   1,  56,       0] # EV_KEY / KEY_LEFTALT               0
    - [ 10, 674010,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +2861ms
  - evdev:
    - [ 10, 674030,   1,  56,       1] # EV_KEY / KEY_LEFTALT               1
    - [ 10, 674030,   1,  99,       1] # EV_KEY / KEY_SYSRQ                 1
    - [ 10, 674030,   0,   0,       1] # ------------ SYN_REPORT (1) ---------- +0ms
  - evdev:
    - [ 10, 674031,   1,  99,       0] # EV_KEY / KEY_SYSRQ                 0
    - [ 10, 674031,   1,  56,       0] # EV_KEY / KEY_LEFTALT               0
    - [ 10, 674031,   0,   0,       1] # ------------ SYN_REPORT (1) ---------- +0ms

Handle that special case so we get our printscreen key to work as
expected anymore.

Fixes: 9a9466b6a9 ("evdev: discard any frame with EV_SYN SYN_REPORT 1")
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1273>
2025-07-16 09:36:10 +10:00
..
builddir.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
evdev-fallback.c Move mtdev into a plugin 2025-07-02 06:53:05 +00:00
evdev-fallback.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
evdev-frame.h Add evdev_usage_name as helper for debugging 2025-07-15 01:14:37 +00:00
evdev-middle-button.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
evdev-mt-touchpad-buttons.c Switch our internal dispatch interface to take an evdev frame 2025-07-02 06:53:05 +00:00
evdev-mt-touchpad-edge-scroll.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
evdev-mt-touchpad-gestures.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
evdev-mt-touchpad-tap.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
evdev-mt-touchpad-thumb.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
evdev-mt-touchpad.c Switch our internal dispatch interface to take an evdev frame 2025-07-02 06:53:05 +00:00
evdev-mt-touchpad.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
evdev-plugin.c Move mtdev into a plugin 2025-07-02 06:53:05 +00:00
evdev-plugin.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
evdev-tablet-pad-leds.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
evdev-tablet-pad.c Switch our internal dispatch interface to take an evdev frame 2025-07-02 06:53:05 +00:00
evdev-tablet-pad.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
evdev-tablet.c tablet: fix segfault on pressure-less tablets 2025-07-09 21:21:31 +00:00
evdev-tablet.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
evdev-totem.c Switch our internal dispatch interface to take an evdev frame 2025-07-02 06:53:05 +00:00
evdev.c evdev: track KEY_SYSRQ frames and pass them even as repeat frames 2025-07-16 09:36:10 +10:00
evdev.h Make the model quirk check available on the libinput device 2025-07-10 01:33:23 +00:00
filter-custom.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
filter-flat.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
filter-low-dpi.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
filter-mouse.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
filter-private.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
filter-tablet.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
filter-touchpad-flat.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
filter-touchpad-x230.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
filter-touchpad.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
filter-trackpoint-flat.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
filter-trackpoint.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
filter.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
filter.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-git-version.h.in tools: add the git version in the libinput-record output 2018-03-06 14:22:30 +10:00
libinput-log.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-plugin-button-debounce.c plugin: use evdev_frame_append_one() for simpler code 2025-07-08 04:02:50 +00:00
libinput-plugin-button-debounce.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-plugin-mouse-wheel-lowres.c plugins: add a plugin to emulate high-resolution wheel events 2025-07-14 11:14:15 +10:00
libinput-plugin-mouse-wheel-lowres.h plugins: add a plugin to emulate high-resolution wheel events 2025-07-14 11:14:15 +10:00
libinput-plugin-mouse-wheel.c plugin/wheel: reduce ACC_V120_THRESHOLD 2025-07-12 10:28:17 +03:00
libinput-plugin-mouse-wheel.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-plugin-mtdev.c Move mtdev into a plugin 2025-07-02 06:53:05 +00:00
libinput-plugin-mtdev.h Move mtdev into a plugin 2025-07-02 06:53:05 +00:00
libinput-plugin-private.h plugin: remove a leftover function 2025-07-15 10:51:42 +10:00
libinput-plugin-system.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-plugin-tablet-double-tool.c Add evdev_frame_append_one() 2025-07-02 06:53:05 +00:00
libinput-plugin-tablet-double-tool.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-plugin-tablet-eraser-button.c Add evdev_frame_append_one() 2025-07-02 06:53:05 +00:00
libinput-plugin-tablet-eraser-button.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-plugin-tablet-forced-tool.c plugin: use evdev_frame_append_one() for simpler code 2025-07-08 04:02:50 +00:00
libinput-plugin-tablet-forced-tool.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-plugin-tablet-proximity-timer.c Add evdev_frame_append_one() 2025-07-02 06:53:05 +00:00
libinput-plugin-tablet-proximity-timer.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-plugin.c plugin: remove a leftover function 2025-07-15 10:51:42 +10:00
libinput-plugin.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-private-config.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-private-config.h gesutures: allow to configure hold gestures 2021-06-09 01:18:58 +00:00
libinput-private.h Make the model quirk check available on the libinput device 2025-07-10 01:33:23 +00:00
libinput-restore-selinux-context.sh meson: Fix absolute libdir case in install script 2018-02-16 16:57:30 +10:00
libinput-util.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-version.h.in COPYING: Update boilerplate from MIT X11 to MIT Expat license 2015-06-16 14:36:04 +10:00
libinput-versionsort.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput.c Make the model quirk check available on the libinput device 2025-07-10 01:33:23 +00:00
libinput.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput.sym Add an API for configurable eraser button behavior 2025-06-18 19:38:14 +10:00
path-seat.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
quirks.c plugins: restore the wheel plugin specifically for the MX Master 3 2025-07-10 01:33:24 +00:00
quirks.h plugins: restore the wheel plugin specifically for the MX Master 3 2025-07-10 01:33:24 +00:00
timer.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
timer.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
udev-seat.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
udev-seat.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-backtrace.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-bits.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-files.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-files.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-input-event.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-libinput.c util: print legacy axis events for debugging 2025-07-14 11:14:15 +10:00
util-libinput.h Move the event printing out into a utility 2025-03-13 06:13:38 +00:00
util-list.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-list.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-macros.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-matrix.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-mem.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-multivalue.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-newtype.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-prop-parsers.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-prop-parsers.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-range.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-ratelimit.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-ratelimit.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-stringbuf.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-strings.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-strings.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-time.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-udev.h Run clang-format over the code 2025-07-01 16:42:44 +10:00