aboutsummaryrefslogtreecommitdiff
path: root/sway/input
AgeCommit message (Collapse)Author
2023-11-16input/input-manager: drop input_manager_configure_all_inputsSimon Ser
This is now unused.
2023-11-16Only reconfigure input mappings on output changeSimon Ser
Fully reconfiguring all input devices on output change takes a loooong time. Let's just reconfigure what we need: only mappings depend on outputs.
2023-11-16input/seat: rename seat_apply_input_configSimon Ser
seat_apply_input_mapping is a lot more descriptive.
2023-11-16input/seat: don't configure mappings for switchesSimon Ser
Switch devices cannot be mapped to an output/region, stop trying to do so.
2023-10-05Drop support for KDE's idle protocolSimon Ser
We support the standard idle-notify protocol since Sway 1.8.
2023-08-21chore: chase wlroots xdg-surface role reworkKirill Primak
2023-07-24Add support for cursor-shape-v1Simon Ser
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4106
2023-07-19Deprecate seat idle_wakeSimon Ser
Sway has two knobs to control idling: - seat idle_inhibit: when the seat is active (ie. not idle), this extends the active state. When the seat is idle, this is ignored. - seat idle_wake: when the seat is idle, this wakes up the seat. When the seat is active, this is ignored. The motivation for the deprecation is two-fold: - The concept of "seat idle state" is ill-defined. Each idle-notify-v1 client will pass a different idle timeout. With the old logic, a seat was declared idle if and only if all idle-notify-v1 timeouts have expired. However, if only a portion of the timeouts have expired, then some clients would wake up, and the rest would stay active. This is inconsistent with the definition of idle_inhibit/idle_wake: idle_inhibit was used for clients which are waking up. - It never worked properly with the new idle-notify-v1 protocol and no-one noticed. Only the legacy KDE idle protocol is taken into account, but that protocol is not used anymore.
2023-06-26input: Move wlr_pointer_gestures_v1 to sway_input_managerMark Bolhuis
On multi-seat configurations a zwp_pointer_gestures_v1 global was created for every seat. Instead, create the global once in the input manager, to be shared across all seats.
2023-06-25Use "default" XCursor instead of "left_ptr"Simon Ser
"left_ptr" is the legacy XCursor name. "default" is the cursor spec name.
2023-06-19Use wlr_cursor_unset_image()Simon Ser
A bit cleaner. References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4209
2023-06-19Use wlr_cursor_set_xcursor()Simon Ser
wlr_xcursor_manager_set_cursor_image() is deprecated. References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4170
2023-06-16input/libinput: add scroll_button_lock methodCezary Drożak
Closes https://github.com/swaywm/sway/issues/6987 Co-authored-by: JJGadgets <git@jjgadgets.tech> Co-authored-by: DeltaWhy <mike5713@gmail.com>
2023-06-11Fix `bindsym --to-code` not respecting input configs33KK
Fixes #7535
2023-06-06Add support for wlr-layer-shell ON_DEMAND keyboard interactivityErik Reider
This allows for layer shell surfaces to receive focus while the surface is explicitly focused, i.e allowing text fields to receive keyboard input just like a regular surface.
2023-06-02chore: chase wlroots map logic unificationKirill Primak
2023-05-11seatop_down: Call seatop_begin_default after sending touch eventshrdl
This is consistent with pointer tablet and button events. Fixes #7577.
2023-05-04handle_touch_cancel: fix begin defaulthrdl
I forgot to call seatop_begin_default in e8f7551e46052a8df04b630bf06565ca77f830fb.
2023-05-04Add support for touch cancel eventshrdl
2023-05-02render: pass rendering state together in a structAlexander Orzechowski
This lets us easily add rendering state that we need in the future
2023-04-14Use format_str() throughoutSimon Ser
2023-02-22Constify pixman_region32_t for rendering functionsSimon Ser
2023-02-20Implement seatop_touchStacy Harper
Atm we got issue with the touch position sent to the clients. While holding contact, leaving the initial container will continue to send motion event to the client but with the new local position from the new container. This seatop goal is to send the position of the touch event, relatively to the initial container layout position.
2023-02-18Fix map_to_output * turning off deviceDaniel Hill
Signed-off-by: Daniel Hill <daniel@gluo.nz>
2023-02-02Convert to *_try_from_wlr_surface()Simon Ser
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3991
2023-02-01Convert to wlr_xwayland_surface_try_from_wlr_surface()Simon Ser
Accomodate for the breaking changes in [1]. [1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/fbf5982e3838ee28b5345e98832f6956c402b225
2023-01-18Fix pointer events for ext-session-lock surfacesSimon Ser
We were never sending any pointer event to ext-session-lock surfaces.
2023-01-18Fix indentation in surface_is_xdg_popup()Simon Ser
2023-01-16input/tablet: handle focusing NULL surfaceKirill Primak
Additionally, rename the function responsible for switching focus to match its behavior better.
2023-01-11input: enable user xkb configs with cap_sys_niceRonan Pigott
2023-01-07Improve tablet tool button handling.John Chadwick
This change allows the tablet tool button to be used for floating mod resize. In addition, it attempts to ensure that tablet tool events are consistent such that tablet v2 events and pointer events will never be interleaved, and such that the tool buttons count will never fall out of sync and cause tool button emulation to break. Some of this logic is similar to what is done for tablet tool tip, but not quite identical, because of the complication that we have to deal with multiple inputs that can overlap eachother. Fixes #7036.
2023-01-04warp_to_constraint_cursor_hint: Handle NULL viewAlexander Orzechowski
This might be the wrong fix, but the crash is happening because the ->data field on an xwayland surface is NULL. A NULL data field is normal for unmanaged surfaces, however it seems clients can do weird things: They can create a cursor lock on a regular xwayland surface then make it unmanaged by calling override_redirect. In this case, the xwayland server should destroy the cursor lock, which is does, but does so in the wrong order making it try to dereference a NULL pointer after sway has acknowledged its new unmanaged status. ``` (gdb) bt full 0 0x000055fd91934861 in warp_to_constraint_cursor_hint (cursor=0x55fd93486c00) at ../sway/input/cursor.c:1243 sy = 605 lx = 6.9527431433545762e-310 sx = 1272 view = 0x0 con = 0x7ffd1cdfe400 ly = -6.949595189996421e+59 constraint = 0x55fd93e7faa0 1 0x000055fd91934976 in handle_constraint_destroy (listener=0x55fd93f0fd58, data=0x55fd93e7faa0) at ../sway/input/cursor.c:1266 sway_constraint = 0x55fd93f0fd30 constraint = 0x55fd93e7faa0 cursor = 0x55fd93486c00 2 0x00007fda8275bf6e in wl_signal_emit_mutable () at /usr/lib/libwayland-server.so.0 3 0x00007fda82e57016 in pointer_constraint_destroy (constraint=0x55fd93e7faa0) at ../subprojects/wlroots/types/wlr_pointer_constraints_v1.c:49 4 0x00007fda82e570dc in pointer_constraint_destroy_resource (resource=0x55fd933cf8f0) at ../subprojects/wlroots/types/wlr_pointer_constraints_v1.c:66 constraint = 0x55fd93e7faa0 5 0x00007fda8275d8ba in () at /usr/lib/libwayland-server.so.0 6 0x00007fda8275f6a9 in wl_resource_destroy () at /usr/lib/libwayland-server.so.0 7 0x00007fda82e56fb3 in resource_destroy (client=0x55fd93ea52e0, resource=0x55fd933cf8f0) at ../subprojects/wlroots/types/wlr_pointer_constraints_v1.c:39 8 0x00007fda81d8f4f6 in () at /usr/lib/libffi.so.8 9 0x00007fda81d8bf5e in () at /usr/lib/libffi.so.8 10 0x00007fda81d8eb73 in ffi_call () at /usr/lib/libffi.so.8 11 0x00007fda8275aada in () at /usr/lib/libwayland-server.so.0 12 0x00007fda8275f01c in () at /usr/lib/libwayland-server.so.0 13 0x00007fda8275d9e2 in wl_event_loop_dispatch () at /usr/lib/libwayland-server.so.0 14 0x00007fda8275e197 in wl_display_run () at /usr/lib/libwayland-server.so.0 15 0x000055fd919264d3 in server_run (server=0x55fd919a3a80 <server>) at ../sway/server.c:320 16 0x000055fd91925457 in main (argc=1, argv=0x7ffd1cdfed98) at ../sway/main.c:411 verbose = false debug = false validate = false allow_unsupported_gpu = false config_path = 0x0 c = -1 ```
2023-01-03Replace math functions that promote float to doubleCarl Smedstad
2022-12-19seat: Set keyboard if seat keyboard is NULLKenny Levinsen
sway sends wl_keyboard.enter on seat focus change and when a keyboard active on a seat is configured. If all keyboards are removed and a keyboard is added back without changing the focused client, no new notify event would be sent despite having keyboard focus. This could lead to key events without notify, which is a protocol violation. As a quick fix, when configuring a keyboard on a seat where no keyboard is currently active, activate the keyboard so that a focused surface will receive a notify event. Regressed by: e1b268af98edeb09e570e8855ef64f0719cbafe2 Closes: https://github.com/swaywm/sway/issues/7330
2022-12-09Add libinput RotationAngleLucas Zampieri
This patch adds the libinput option RotationAngle to sway. Signoff-by: Lucas Zampieri <lzampier@redhat.com>
2022-12-04seat: Avoid sending redundant keymaps on reloadKenny Levinsen
When we reload the config, we reset every input device and re-apply configuration from the config file. This means that the keyboard keymap is updated at least once during config reload, more if the config file contains keyboard configuration. When they keyboard keymap changes and is updated through wlr_seat, the keymap ends up sent to every keyboard bound in every client, seemingly multiple times. On an x230 of mine with a keyboard layout set in the config file, I see 42 keymap events sent to foot on config reload. Reduce events from keyboard configurations by skipping all but the currently active keyboard for the seat, and by clearing the active keyboard during input manager device reset. After this change, I only see a single just-in-time keymap event. Fixes: https://github.com/swaywm/sway/issues/6654
2022-11-28Make libinput backend optionalSimon Ser
2022-11-28Make session optionalSimon Ser
2022-11-15Update for wlroots!3814Simon Ser
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3814
2022-11-15input/seat: locally compute drag icon offsetSimon Ser
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3861
2022-10-30Support libinput's 1.21 new dwtp optionpudiva chip líquida
Support the new dwtp (disable while trackpointing) option introduced in libinput 1.21, allowing users to control whether the trackpoint (like those in Thinkpads, but not only) should be disabled while using the keyboard/touchpad. See: https://gitlab.freedesktop.org/libinput/libinput/-/issues/731
2022-10-28Fix focus tracking when session lock is activeDaniel De Graaf
Remove the incorrect attempt to block focus changes when an input grab is present and replace it with the same logic used for layer_shell-based screen lockers: restore the focus after changing it. This fixes a use-after-free of seat->workspace if outputs are destroyed while a screen lock is enabled.
2022-10-28Rework session lock keyboard focus handlingDaniel De Graaf
When removing outputs, it is possible to end up in a situation where none of the session lock client's surfaces have keyboard focus, resulting in it not receiving keyboard events. Track the focused surface and update it as needed on surface destroy.
2022-10-23Fix keymap being NULL and segfaulting on dev addYaroslav de la Peña Smirnov
Moved `libinput_config` to the callers of `sway_input_configure_libinput_device` so that we send the event after the added event.
2022-10-21input: tweak focus behavior to allow focusing parent containersTudor Brindus
Sway focuses the inactive child when focusing split containers. However, there is currently no way to focus the parent container itself by mouse. A user must use the keyboard to do so. This commit maintains the current behavior, but makes it such that a second click on the split container titlebar (i.e., after its children are visible) focuses the split container itself.
2022-10-14Add support for ext-idle-notify-v1Simon Ser
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3753
2022-10-10input: focus container when scrolling on titlebarTudor Brindus
Fixes #6503.
2022-10-10input: focus floating container when clicked on borderTudor Brindus
Fixes #7209.
2022-10-09Use keyboard_state.focused_surface directlyFerdinand Schober
2022-10-09use seat directlyFerdinand Schober