aboutsummaryrefslogtreecommitdiffstats
path: root/sway/input
Commit message (Collapse)AuthorAge
* input/tablet: simplify parameter plumbing for tablet referencesLibravatar Tudor Brindus2020-05-10
| | | | | | This is a small cleanup commit for removing `sway_tablet` parameters from functions that already accept `sway_tablet_tool`, since the tablet reference can be accessed through `tool->tablet`.
* input/keyboard: use wlr_keyboard_keymaps_match from wlrootsLibravatar Tudor Brindus2020-05-08
| | | | | Added in swaywm/wlroots#2172, so that sway doesn't need to maintain an independent copy of this function.
* Don't unhide cursor on touch eventsLibravatar David962020-05-05
| | | | | Touch events hide the cursor so unhiding it again only causes it to flicker.
* input/cursor: remove erroneous cast for tablet tool buttonLibravatar Tudor Brindus2020-05-02
| | | | | The type expected by wlroots is uint32_t, which `event->button` already is.
* input: rename pointer handlers to be unambiguousLibravatar Tudor Brindus2020-05-02
| | | | | | | This commit renames `motion` and `axis` handlers to `pointer_motion` and `pointer_axis`, respectively, to disambiguate them from their tablet (and future touch) handlers. `button` is left as-is, as it is generic across input devices.
* input: refactor tablet motion into seatop handlerLibravatar Tudor Brindus2020-05-02
| | | | | | | This commit moves tablet motion logic into a seatop handler. As a side-effect of seatop implementations being able to receive tablet motion events, fixes #5232.
* input/cursor: disambiguate cursor functions from pointer functionsLibravatar Tudor Brindus2020-05-02
|
* input/cursor: make cursor rebasing cursor type-agnosticLibravatar Tudor Brindus2020-05-02
| | | | | | | | This commit refactors `cursor_rebase` into `cursor_update_image`, and moves sending pointer events to the two existing call sites. This will enable this code to be reused for tablets. Refs #5232
* Fix invisible cursor on startupLibravatar Simon Ser2020-05-01
|
* Don't assert the cursor theme loadsLibravatar Simon Ser2020-05-01
| | | | | If it doesn't load, it's a runtime error, so we shouldn't use an assertion.
* input/cursor: release simulated tool tip button when over v2 surfaceLibravatar Tudor Brindus2020-05-01
| | | | | | | d88460f addressed sending v2 tool tip up when over a non-v2 surface. This commit addresses the other direction. Fixes #5230.
* input/seatop_default: properly notify pointer leaveLibravatar Nick Diego Yamane2020-05-01
| | | | | | | | | Currently, clients receive wl_data_device::leave events only when the pointer enters another surface, which leads to issues, such as #5220. This happens because wlr_seat_pointer_notify_enter() is called when handling motion events only for non-NULL surfaces. Fixes #5220
* input/tablet: query tablet focused surface for cursor image checkLibravatar Tudor Brindus2020-04-26
| | | | | | | | `handle_tablet_tool_set_cursor` was copied from input/cursor.c's `handle_request_set_cursor`, but the focused surface check was not adjusted appropriately. Fixes #5257.
* input/cursor: correctly transfer focus when using tablet penLibravatar Tudor Brindus2020-04-24
| | | | | | | | | Fixes #4819. This commit ensures that `seat_set_focus` is called to transfer focus when a window is selected via a pen. Previously, it would race with `node_at_coords`, and only properly transfer focus if its returned `surface` was NULL.
* config/output: reconfigure input devices on new outputLibravatar Tudor Brindus2020-04-24
| | | | | | | | | | | | Some input rules, like `map_to_output`, are dependent on a specific screen being present. This currently does not work for hotplugged outputs, or outputs that are processed after the input device is initially probed. This commit fixes both cases, by reconfiguring inputs on each output addition. Fixes #5231.
* Take window borders into account when resizing floating windowsLibravatar Adam Kürthy2020-04-24
| | | | Otherwise the borders can be resized to smaller than the minimum window size.
* input/cursor: fix hide cursor timeouts on tablets and touchscreensLibravatar Tudor Brindus2020-04-22
| | | | | | | | | This commit refactors `cursor_handle_activity` to also take the idle source, so that it can be reused for tablet and touch activity. Previously, the timeouts would be tracked, but the cursor would never be un-hidden for anything but pointers. Fixes #5169.
* input/cursor: fix jerky resizing of non-tablet_v2 surfacesLibravatar Tudor Brindus2020-04-22
| | | | | | This fixes resizing containers being very jerky under pointer emulation. Refs #5232.
* input/cursor: correctly send tablet_v2 up event when over non-v2 surfaceLibravatar Tudor Brindus2020-04-22
| | | | | | | | | | | | If we started holding the tool tip down on a surface that accepts tablet v2, we should notify that surface if it gets released over a surface that doesn't support v2. Since GTK supports tablet v2, this fixes the common case of starting a drag over a GTK surface (e.g. scrollbar) and releasing it outside (e.g. over the gaps between sway containers, or in a terminal). Refs #5230.
* Don't transfer focus to NULL node on touchLibravatar David962020-04-17
| | | | Fixes #5185
* input/seatop_default: release on empty workspaceLibravatar Rouven Czerwinski2020-04-15
| | | | | | | | | | | Instead of handling presses and releases on empty workspaces as setting focus to the workspace, handle releases by notifying the seat of a pointer action. This way DnDs are correctly released if the button is released over an empty workspace. This is achieved by removing the early return and letting the handle_button() call seat_pointer_notify_button() at the very end. Fixes #3932
* Fix a use-after-free error in switch bindingLibravatar Di Ma2020-04-14
|
* Fix a use-after-free error in switch bindingLibravatar Di Ma2020-04-14
|
* Fix a use-after-free error in switch bindingLibravatar Di Ma2020-04-14
|
* input: keyboard: Never group virtual keyboards.Libravatar Andri Yngvason2020-04-14
| | | | This fixes #5134
* input: Mark virtual devices as suchLibravatar Andri Yngvason2020-04-14
| | | | This is for internal configuration purposes
* Adjust focus order to match rendering order of layer shell popups.Libravatar Aleksei Bavshin2020-04-10
|
* im: Fix crash when im destorying and no focused surface existsLibravatar Leo2020-04-04
|
* im: remove listener on pending surface destoryedLibravatar xdavidwu2020-04-04
|
* im: make text-input listeners per text-inputLibravatar xdavidwu2020-04-04
|
* input-method: avoid and log unneeded set_focusLibravatar xdavidwu2020-04-04
|
* input-method: remove surface listener before setLibravatar xdavidwu2020-04-04
| | | | | This make sure pending focused surface listener is not reachable from old surface.
* Port input method and text input from rootstonLibravatar xdavidwu2020-04-04
| | | | | | | This ports swaywm/wlroots#1203, swaywm/wlroots#1303, swaywm/wlroots#1308, swaywm/wlroots#1759 rootston part to sway. Co-Authored-By: Leo Chen <leo881003@gmail.com>
* swapped hiding the cursor and sending a touch event as a more logical sequenceLibravatar Some Chinese Guy2020-04-03
|
* add --no-repeat option for bindingsLibravatar Linus Heckemann2020-03-30
| | | | | | | | | This allows e.g. triggering one command while a key is held, then triggering another to undo the change performed by it afterwards. One use case for this is triggering push-to-talk functionality for VoIP tools without granting them full access to all input events. Fixes #3151
* switched to setting focus with seat_set_focusLibravatar Some Chinese Guy2020-03-29
|
* Added focus following for touch_downLibravatar Some Chinese Guy2020-03-29
|
* Fix redundant call to seat_send_focus()Libravatar Leo2020-03-23
| | | | | | This commit fix calling to seat_send_focus() twice when a view is closed. This codes revert #2580, but the original issue nolonger exists.
* sway/input/cursor.c: fix undefined behaviour when event is NULLLibravatar Jason Nader2020-03-16
|
* sway/input/cursor.c: move NULL check to where it should beLibravatar Jason Nader2020-03-15
|
* input: Avoid creating the PAD device multiple timesLibravatar Olivier Fourdan2020-03-12
| | | | | | | | | | | If a pad device for a tablet exists, reloading the configuration, removing/reading the device or even suspending the system will recreate the same Wayland input device multiple times. Make sure we don't re-create the same Wayland device more than necessary. Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
* commands: Add shortcuts_inhibitor commandLibravatar Michael Weiser2020-03-11
| | | | | | | | | | | | | | | | | | | Add a command to influence keyboard shortcuts inhibitors. In its current form it can be used to activate, deactivate or toggle an existing inhibitor on the surface currently receiving input. This can be used to define an escape shortcut such as: bindsym --inhibited $mod+Escape seat - shortcuts_inhibitor deactivate It also allows the user to configure a per-seat default of whether keyboard inhibitors are honoured by default (the default) or not. Using the activate/toggle command they can then enable the lingering inhibitor at a later time of their choosing. As a side effect this allows to specifically address a named seat for actions as well, whatever use-case that might serve. Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
* input: Add support for keyboard shortcuts inhibitLibravatar Michael Weiser2020-03-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | Adding support for the keyboard shortcuts inhibit protocol allows remote desktop and virtualisation software to receive all keyboard input in order to pass it through to their clients so users can fully interact the their remote/virtual session. The software usually provides its own key combination to release its "grab" to all keyboard input. The inhibitor can be deactivated by the user by removing focus from the surface using another input device such as the pointer. Use support for the procotol in wlroots to add support to sway. Extend the input manager with handlers for inhibitor creation and destruction and appropriate bookkeeping. Attach the inhibitors to the seats they apply to to avoid having to search the list of all currently existing inhibitors on every keystroke and passing the inhibitor manager around. Add a helper function to retrieve the inhibitor applying to the currently focused surface of a seat, if one exists. Extend bindsym with a flag for bindings that should be processed even if an inhibitor is active. Conversely this disables all normal shortcuts if an inhibitor is found for the currently focused surface in keyboard::handle_key_event() since they don't have that flag set. Use above helper function to determine if an inhibitor exists for the surface that would eventually receive input. Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
* input: Map virtual-pointer to the requested outputLibravatar Andri Yngvason2020-02-10
|
* input/cursor: handle setting a NULL image surfaceLibravatar Brian Ashworth2020-01-06
| | | | | | This fixes a crash when attempting to listen to a signal on a NULL cursor image surface. If the surface is NULL, the listener is just reinitialized using wl_list_init.
* input/cursor: handle image surface destroyLibravatar Brian Ashworth2020-01-05
| | | | | | This adds a listener for the destroy event of the cursor image surface. This prevents a use-after-free when the last visible image surface is freed, there has not been a new cursor set, and the cursor is reshown.
* input: Assign virtual input devices to their selected seatsLibravatar Andri Yngvason2020-01-01
|
* Add virtual pointer protocolLibravatar Josef Gajdusek2019-12-31
|
* seat_cmd_keyboard_grouping: change keymap to smartLibravatar Brian Ashworth2019-12-16
| | | | | | | | | | This removes `seat <seat> keyboard_grouping keymap` and replaces it with `seat <seat> keyboard_grouping smart`. The smart keyboard grouping will group based on both the keymap and repeat info. The reasoning for this is that deciding what the repeat info should be for a group is either arbitrary or non-deterministic when multiple keyboards in the group have repeat info configured (unless somehow exposed to the user in a reproducible uniquely identifiable fashion).
* input/seatop_default: fix focusing floating titlesLibravatar Brian Ashworth2019-12-16
| | | | | | | | | | | When clicking on the titlebar of a floating container (or descendant of a floating container), the top-level floating container was being focused and then allowing you to move the top-level floating container. This made it so you couldn't switch to a different tab/stack within the floating container. With this patch, the focus inactive view for the container that the titlebar is associated with is focused, then the traversal to the top-level floating container is performed to use with the move floating operation.