| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282 |
- #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"
- "debug-tablet:Show tablet axis and button values"
- "measure:Measure various properties of devices"
- "analyze:Analyze device data"
- "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]' \
- '--compress-motion-events[Compress repeated motion events on a TTY]' \
- '--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-area=[Set the desired area as "x1/y1 x2/y2" (within \[0.0, 1.0\]) ]' \
- '--set-calibration=[Set the first 6 elements of the 3x3 calibration matrix ("1.0 0.0 0.0 0.0 1.0 0.0")]' \
- '--set-click-method=[Set the desired click method]:click-method:(none clickfinger buttonareas)' \
- '--set-clickfinger-map=[Set button mapping for clickfinger]:tap-map:(( \
- lrm\:2-fingers\ right-click\ /\ 3-fingers\ middle-click \
- lmr\:2-fingers\ middle-click\ /\ 3-fingers\ right-click \
- ))' \
- '--set-eraser-button-button=[Set button mapping for the eraser button]:eraser-button:(BTN_STYLUS BTN_STYLUS2 BTN_STYLUS3)' \
- '--set-eraser-button-mode=[Set the eraser button mode]:eraser-mode:(default button)' \
- '--set-pressure-range=[Set the tablet tool pressure range (within range \[0.0, 1.0\])]' \
- '--set-profile=[Set pointer acceleration profile]:accel-profile:(adaptive flat custom)' \
- '--set-rotation-angle=[Set the rotation angle in degrees]' \
- '--set-scroll-button=[Set the button to the given button code]' \
- '--set-scroll-method=[Set the desired scroll method]:scroll-method:(none twofinger edge button)' \
- '--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 \
- ))' \
- + '(custom pointer acceleration)' \
- '--set-custom-points=[Set n points defining a custom acceleration function]' \
- '--set-custom-step=[Set the distance along the x axis between the custom points]' \
- '--set-custom-type=[Set the type of the acceleration function]:custom-type:(fallback motion scroll)' \
- + '(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]' \
- + '(dwt)' \
- '--enable-dwt[Enable disable-while-typing]' \
- '--disable-dwt[Disable disable-while-typing]' \
- + '(dwtp)' \
- '--enable-dwtp[Enable disable-while-trackpointing]' \
- '--disable-dwtp[Disable disable-while-trackpointing]' \
- + '(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]' \
- + '(natural-scrolling)' \
- '--enable-natural-scrolling[Enable natural scrolling]' \
- '--disable-natural-scrolling[Disable natural scrolling]' \
- + '(plugins)' \
- '--enable-plugins[Enable plugins]' \
- '--disable-plugins[Disable plugins]' \
- + '(tap-to-click)' \
- '--enable-tap[Enable tap-to-click]' \
- '--disable-tap[Disable tap-to-click]'
- }
- (( $+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_debug-tablet] )) || _libinput_debug-tablet()
- {
- _arguments \
- '--help[Show debug-tablet help and exit]' \
- '--device=[Use the given device with the path backend]:device:_files -W /dev/input/ -P /dev/input/' \
- '--udev=[Use the first tablet device 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_analyze_per-slot-delta] )) || _libinput_analyze_per-slot-delta()
- {
- _arguments \
- '--help[Show help message and exit]' \
- ':recording:_files'
- }
- (( $+functions[_libinput_analyze_touch-down-state] )) || _libinput_analyze_touch-down-state()
- {
- _arguments \
- '--help[Show help message and exit]' \
- ':recording:_files'
- }
- (( $+functions[_libinput_analyze_recording] )) || _libinput_analyze_recording()
- {
- _arguments \
- '--help[Show help message and exit]' \
- ':recording:_files'
- }
- (( $+functions[_libinput_analyze] )) || _libinput_analyze()
- {
- local curcontext=$curcontext state line ret=1
- local features
- features=(
- "per-slot-delta:analyze relative movement per touch per slot"
- "recording:analyze a recording by printing a pretty table"
- "touch-down-state:analyze a recording for logical touch down states"
- )
- _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-analyze-$words[1]:
- if ! _call_function ret _libinput_analyze_$words[1]; then
- _message "unknown feature: $words[1]"
- fi
- ;;
- esac
- return ret
- }
- (( $+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=}'[Specify 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]' \
- '--with-hidraw[Record hidraw 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
|