forked from wayland-tablet/libinput
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
completion: add libinput(1) zsh completions
- Loading branch information
Ronan Pigott
committed
Aug 13, 2019
1 parent
894d8fe
commit a67b652
Showing
4 changed files
with
219 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,199 @@ | ||
#compdef libinput | ||
|
||
(( $+functions[_libinput_commands] )) || _libinput_commands() | ||
{ | ||
local -a commands | ||
commands=( | ||
"list-devices:List all devices recognized by libinput" | ||
"debug-events:Print all events as seen by libinput" | ||
"debug-gui:Show a GUI to visualize libinput's events" | ||
"measure:Measure various properties of devices" | ||
"record:Record the events from a device" | ||
"replay:Replay the events from a device" | ||
) | ||
|
||
_describe -t commands 'command' commands | ||
} | ||
|
||
__all_seats() | ||
{ | ||
# Obviously only works with logind | ||
local -a seats | ||
seats=${(f)"$(loginctl --no-legend --no-pager list-seats 2>/dev/null)"} | ||
if [[ -z $seats ]]; then | ||
# Can always offer seat0, even if we can't enumerate the seats | ||
compadd "$@" - seat0 | ||
else | ||
compadd "$@" - $seats | ||
fi | ||
} | ||
|
||
(( $+functions[_libinput_list-devices] )) || _libinput_list-devices() | ||
{ | ||
_arguments \ | ||
'--help[Show help and exit]' \ | ||
'--version[show version information and exit]' | ||
} | ||
|
||
(( $+functions[_libinput_debug-events] )) || _libinput_debug-events() | ||
{ | ||
_arguments \ | ||
'--help[Show debug-events help and exit]' \ | ||
'--quiet[Only print libinput messages and nothing from this tool]' \ | ||
'--verbose[Use verbose output]' \ | ||
'--show-keycodes[Make all keycodes visible]' \ | ||
'--grab[Exclusively grab all opened devices]' \ | ||
'--device=[Use the given device with the path backend]:device:_files -W /dev/input/ -P /dev/input/' \ | ||
'--udev=[Listen for notifications on the given seat]:seat:__all_seats' \ | ||
'--apply-to=[Apply configuration options where the device name matches the pattern]:pattern' \ | ||
'--disable-sendevents=[Disable send-events option for the devices matching the pattern]:pattern' \ | ||
'--set-click-method=[Set the desired click method]:click-method:(none clickfinger buttonareas)' \ | ||
'--set-scroll-method=[Set the desired scroll method]:scroll-method:(none twofinger edge button)' \ | ||
'--set-scroll-button=[Set the button to the given button code]' \ | ||
'--set-profile=[Set pointer acceleration profile]:accel-profile:(adaptive flat)' \ | ||
'--set-speed=[Set pointer acceleration speed (within range \[-1, 1\])]' \ | ||
'--set-tap-map=[Set button mapping for tapping]:tap-map:(( \ | ||
lrm\:2-fingers\ right-click\ /\ 3-fingers\ middle-click \ | ||
lmr\:2-fingers\ middle-click\ /\ 3-fingers\ right-click \ | ||
))' \ | ||
+ '(tap-to-click)' \ | ||
'--enable-tap[Enable tap-to-click]' \ | ||
'--disable-tap[Disable tap-to-click]' \ | ||
+ '(drag)' \ | ||
'--enable-drag[Enable tap-and-drag]' \ | ||
'--disable-drag[Disable tap-and-drag]' \ | ||
+ '(drag-lock)' \ | ||
'--enable-drag-lock[Enable drag-lock]' \ | ||
'--disable-drag-lock[Disable drag-lock]' \ | ||
+ '(natural-scrolling)' \ | ||
'--enable-natural-scrolling[Enable natural scrolling]' \ | ||
'--disable-natural-scrolling[Disable natural scrolling]' \ | ||
+ '(left-handed)' \ | ||
'--enable-left-handed[Enable left handed button configuration]' \ | ||
'--disable-left-handed[Disable left handed button configuration]' \ | ||
+ '(middlebutton)' \ | ||
'--enable-middlebutton[Enable middle button emulation]' \ | ||
'--disable-middlebutton[Disable middle button emulation]' \ | ||
+ '(dwt)' \ | ||
'--enable-dwt[Enable disable-while-typing]' \ | ||
'--disable-dwt[Disable enable-while-typing]' | ||
} | ||
|
||
(( $+functions[_libinput_debug-gui] )) || _libinput_debug-gui() | ||
{ | ||
_arguments \ | ||
'--help[Show debug-gui help and exit]' \ | ||
'--verbose[Use verbose output]' \ | ||
'--grab[Exclusively grab all opened devices]' \ | ||
'--device=[Use the given device with the path backend]:device:_files -W /dev/input/ -P /dev/input/' \ | ||
'--udev=[Listen for notifications on the given seat]:seat:_libinput_all_seats' | ||
} | ||
|
||
(( $+functions[_libinput_measure] )) || _libinput_measure() | ||
{ | ||
local curcontext=$curcontext state line ret=1 | ||
local features | ||
features=( | ||
"fuzz:Measure touch fuzz to avoid pointer jitter" | ||
"touch-size:Measure touch size and orientation" | ||
"touchpad-tap:Measure tap-to-click time" | ||
"touchpad-pressure:Measure touch pressure" | ||
) | ||
|
||
_arguments -C \ | ||
'--help[Print help and exit]' \ | ||
':feature:->feature' \ | ||
'*:: :->option-or-argument' | ||
|
||
case $state in | ||
(feature) | ||
_describe -t features 'feature' features | ||
;; | ||
(option-or-argument) | ||
curcontext=${curcontext%:*:*}:libinput-measure-$words[1]: | ||
if ! _call_function ret _libinput_measure_$words[1]; then | ||
_message "unknown feature: $words[1]" | ||
fi | ||
;; | ||
esac | ||
return ret | ||
} | ||
|
||
(( $+functions[_libinput_measure_fuzz] )) || _libinput_measure_fuzz() | ||
{ | ||
_arguments \ | ||
'--help[Show help message and exit]' \ | ||
':device:_files -W /dev/input/ -P /dev/input/' | ||
} | ||
|
||
(( $+functions[_libinput_measure_touch-size] )) || _libinput_measure_touch-size() | ||
{ | ||
_arguments \ | ||
'--help[Show help message and exit]' \ | ||
'--touch-threshold=[Assume a touch pressure threshold of "down:up"]' \ | ||
'--palm-threshold=[Assume a palm threshold of N]' \ | ||
':device:_files -W /dev/input/ -P /dev/input/' | ||
} | ||
|
||
(( $+functions[_libinput_measure_touchpad-pressure] )) || _libinput_measure_touchpad-pressure() | ||
{ | ||
_arguments \ | ||
'--help[Show help message and exit]' \ | ||
'--touch-threshold=[Assume a touch pressure threshold of "down:up"]' \ | ||
'--palm-threshold=[Assume a palm threshold of N]' \ | ||
':device:_files -W /dev/input/ -P /dev/input/' | ||
} | ||
|
||
(( $+functions[_libinput_measure_touchpad-tap] )) || _libinput_measure_touchpad-tap() | ||
{ | ||
_arguments \ | ||
'--help[Show help message and exit]' \ | ||
'--format=dat[Specify the data format to be printed. The default is "summary"]' | ||
':device:_files -W /dev/input/ -P /dev/input/' | ||
} | ||
|
||
(( $+functions[_libinput_record] )) || _libinput_record() | ||
{ | ||
_arguments \ | ||
'--help[Show help message and exit]' \ | ||
'--all[Record all /dev/input/event* devices available on the system]' \ | ||
'--autorestart=[Terminate the current recording after s seconds of device inactivity]' \ | ||
{-o+,--output=}'[Speficy the output file to use]:file:_files -g "*.yml"' \ | ||
'--multiple[Record multiple devices at once]' \ | ||
'--show-keycodes[Show keycodes as-is in the recording]' \ | ||
'--with-libinput[Record libinput events alongside device events]' \ | ||
'*::device:_files -W /dev/input/ -P /dev/input/' | ||
} | ||
|
||
(( $+functions[_libinput_replay] )) || _libinput_replay() | ||
{ | ||
_arguments \ | ||
'--help[Show help message and exit]' \ | ||
':recording:_files' | ||
} | ||
|
||
_libinput() | ||
{ | ||
local curcontext=$curcontext state line ret=1 | ||
|
||
_arguments -C \ | ||
{-h,--help}'[Show help message and exit]' \ | ||
'--version[Show version information and exit]' \ | ||
':command:->command' \ | ||
'*:: :->option-or-argument' && return | ||
|
||
case $state in | ||
(command) | ||
_libinput_commands && ret=0 | ||
;; | ||
(option-or-argument) | ||
curcontext=${curcontext%:*:*}:libinput-$words[1]: | ||
if ! _call_function ret _libinput_$words[1]; then | ||
_message "unknown libinput command: $words[1]" | ||
fi | ||
;; | ||
esac | ||
return ret | ||
} | ||
|
||
_libinput |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
zshcompletiondir = get_option('zshcompletiondir') | ||
if zshcompletiondir == '' | ||
zshcompletiondir = join_paths(get_option('datadir'), 'zsh', 'site-functions') | ||
endif | ||
|
||
if zshcompletiondir != 'no' | ||
install_data( | ||
'_libinput', | ||
install_dir: zshcompletiondir, | ||
install_mode: 'rw-r--r--', | ||
) | ||
endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters