Releases: InputActions/core
Releases · InputActions/core
v0.9.0
First release after the repository split. For more information about the split and older releases see https://github.com/taj-ny/InputActions/releases.
This release only contains information about changes that affect all implementations. Don't forget to check out the latest releases for the KWin and Hyprland implementations as well.
Changes
- Added a command-line tool for management -
inputactions. The DBus interface is now considered internal and should not be used directly. Installation instructions have been updated to install this tool as well. Repository: InputActions/ctl - Added an emergency key combination (by default backspace+space+enter) that can be held in any order for 2 seconds to suspend InputActions until the next config reload.
Actions
- Action
- Modified properties
on: New value (tick) - for time-based actions in motion triggers.
- New properties
conflicting: Whether this action can activate trigger conflict resolution.
- Modified properties
- InputAction
- Added the
wheelmouse action - The
move_by_deltamouse action now accepts an optional argument that multiplies the delta (e.g.move_by_delta 0.75). This replaces the globalmouse.delta_multiplierandtouchpad.delta_multiplierproperties.
- Added the
Config
- The legacy config
~/.config/kwingestures.ymlis no longer copied to~/.config/inputactions/config.yamlif the latter does not exist. - Added more error messages and improved existing ones.
- Added warnings about deprecated features and unused (likely misspelled) properties.
- Added
/etc/inputactions/config.yamlto the list of configuration file candidates, making it possible to restrict write access for unprivileged programs. The new order is (highest priority to lowest):~/.config/inputactions/config-debug.yaml(debug builds only)/etc/inputactions/config.yaml~/.config/inputactions/config.yaml(created if not present)
- New root properties:
anchors: For defining YAML anchors without unused property warnings.device_rulesemergency_combinationexternal_variable_access: Allow dumping variables by runninginputactions variables list.
Run inputactions config reload or inputactions config issues to see detailed information about issues.
Devices
- DeviceRule: New device property system based on conditions, where each device can have properties applied by many rules
device_rules: - conditions: $name == Logitech G502 X motion_threshold: 30 - conditions: $mouse press_timeout: 300 unblock_buttons_on_timeout: false - conditions: $name contains TrackPoint ignore: true
- Device
- New properties for all devices (configurable through device rules)
ignore: Ignore the device.
- New properties for all devices (configurable through device rules)
- Mouse
- New device properties
motion_threshold: Used for determining the direction of swipe triggers. It should not be necessary to change the threshold in most cases.motion_timeout: Replacesmouse.motion_timeout, now can be configured on a per-device basis.press_timeout: Replacesmouse.press_timeout, now can be configured on a per-device basis.swipe.angle_tolerance: Angle tolerance for theleft,right,up,down,left_rightandup_downswipe directions. The remaining space is used for diagonal directions.unblock_buttons_on_timeout: Replacesmouse.unblock_buttons_on_timeout, now can be configured on a per-device basis.
- Added the
lock_pointerproperty for all mouse motion triggers - locks the pointer's position while the trigger is active. - Added the circle trigger (more information below).
- New device properties
- Touchpad:
- New device properties
click_timeout: Replacestouchpad.click_timeout, now can be configured on a per-device basis.handle_evdev_events: Allows for disabling the evdev input backend in case of issues for a specific device.motion_threshold_1: Used for determining the direction of 1-finger swipe triggers. It should not be necessary to change the threshold in most cases.motion_threshold_2: Used for determining the direction of 2-finger swipe triggers. It should not be necessary to change the threshold in most cases.motion_threshold_3: Used for determining the direction of 3-finger swipe triggers. It should not be necessary to change the threshold in most cases.swipe.angle_tolerance: Angle tolerance for theleft,right,up,down,left_rightandup_downswipe directions. The remaining space is used for diagonal directions.
- Added the circle trigger (more information below).
- New device properties
- Touchscreen: Added support
Triggers
- Trigger
- New properties
block_events: Whether to block input events when this trigger is active.resume_timeout: Delays the trigger end in order to allow resumption before a certain amount of time passes.
- New properties
- CircleTrigger: New trigger where the action is continuous circular motion around any point. Can be used for touchpad circular scrolling. Credits to galundin/circular-scrolling-improved for the algorithm. Available for mice, touchpads and touchscreens.
- SwipeTrigger:
- Now based on angles, making it possible to create diagonal gestures. The angle tolerance for the
left,right,up,down,left_rightandup_downhas been reduced from 45° to 20°. To restore the old behavior and disable diagonal gestures, set theswipe.angle_tolerancedevice property to45:device_rules: - swipe: angle_tolerance: 45
- Modified properties:
direction: New values:left_up,left_down,right_up,right_down,left_up_right_down,left_down_right_up.
- New properties:
angle: Custom angle range (mutually exclusive withdirection).bidirectional: Also allow motion in the range opposite to the one specified inangle(does nothing if a predefined direction is used).
- Now based on angles, making it possible to create diagonal gestures. The angle tolerance for the
Variables
- New variables
time_since_last_triggerwindow_under_fingers_*: Information about the window under fingers (touchscreen only).window_pid,window_under_fingers_pid,window_under_pointer_pid: ID of the process that owns the window.
Example use cases of new features
Mouse: kill window that was under the pointer **at the beginning of the stroke**
- type: stroke
strokes: [ 'NAAAMy9kZAA=' ] # down
mouse_buttons: [ right ]
actions:
# save the variable to a file for later use, this is currently the only method
- on: begin
conflicting: false # this prevents the action from triggering conflict resolution
command: echo "$window_under_pointer_pid" > /tmp/inputactions_var
- on: end
command: kill -9 "$(cat /tmp/inputactions_var)"Touchpad: circular scrolling
Place two fingers, with at least one’s initial position being the top or bottom edge, then start circling around any point.
- type: circle
fingers: 2
direction: any
conditions:
any:
- $finger_1_initial_position_percentage_y <= 0.05
- $finger_2_initial_position_percentage_y <= 0.05
- $finger_1_initial_position_percentage_y >= 0.95
- $finger_2_initial_position_percentage_y >= 0.95
actions:
- on: update
interval: -0.5
input:
- mouse: [ wheel 0 -1 ]
- on: update
interval: 0.5
input:
- mouse: [ wheel 0 1 ]Touchpad: automatically move the pointer when a finger touches the edge of a touchpad
- type: swipe
fingers: 1
direction: any
block_events: false
conditions: $finger_1_initial_position_percentage between 0.2,0.2;0.8,0.8 # prevent accidental activations
actions:
- on: tick
conditions: $finger_1_position_percentage_x <= 0.05
input:
- mouse: [ move_by -1 0 ]
- on: tick
conditions: $finger_1_position_percentage_x >= 0.95
input:
- mouse: [ move_by 1 0 ]
- on: tick
conditions: $finger_1_position_percentage_y <= 0.05
input:
- mouse: [ move_by 0 -1 ]
- on: tick
conditions: $finger_1_position_percentage_y >= 0.95
input:
- mouse: [ move_by 0 1 ]Touchpad: 3-finger window drag (allow lifting fingers)
- type: swipe
fingers: 3
direction: any
resume_timeout: 500 # allow lifting fingers for 500 ms, perform any other action (for example tap) to cancel the trigger immediately
actions:
- on: begin
input:
- keyboard: [ +leftmeta ]
...