#!/bin/bash ################################## ## set mouse speed for libinput ## ################################## case "$1" in g*) # detect connected mouse devices IDS=$(xinput | grep -o 'id=[0-9]*' | grep -o '[0-9]*') echo "generating mouse IDS" [ -e /tmp/mouse ] && rm /tmp/mouse while read -r line; do if xinput list-props "$line" | grep -q 'libinput Accel Speed'; then echo "$line" echo "$line" >>/tmp/mouse fi done <<<"$IDS" iconf mouse "$(cat /tmp/mouse)" ;; s*) # set sensitivity while read -r line; do xinput set-prop "$line" "libinput Accel Speed" "${2:--0.4}" done <<<"$(iconf mouse)" ;; m*) # set sensitivity but map volume from 0 to 100 if [ -n "$2" ]; then SENSITIVITY=$(echo "( $2 / 50 ) - 1" | bc -l) else SENSITIVITY="-.04" fi while read -r line; do xinput set-prop "$line" "libinput Accel Speed" "$SENSITIVITY" done <<<"$(iconf mouse)" ;; z) # toggle mouse on/off if ! iconf mousespeed &>/dev/null; then iconf mousespeed -.4 fi if [ -e /tmp/zeromouse ]; then rm /tmp/zeromouse while read -r line; do xinput --enable "$line" done <<<"$(iconf mouse)" else while read -r line; do xinput --disable "$line" done <<<"$(iconf mouse)" touch /tmp/zeromouse fi ;; r*) if [ -n "$2" ]; then if [ "$2" = "0" ]; then iconf -i reversemouse 1 else iconf -i reversemouse 0 fi fi if iconf -i reversemouse; then iconf -i reversemouse 0 while read -r line; do xinput set-prop "$line" "libinput Natural Scrolling Enabled" "0" done <<<"$(iconf mouse)" echo "reverse scrolling disabled" else iconf -i reversemouse 1 echo "reverse scrolling enabled" while read -r line; do xinput set-prop "$line" "libinput Natural Scrolling Enabled" "1" done <<<"$(iconf mouse)" fi ;; l*) # get current sensitivity xinput list-props "$(iconf mouse | head -1)" | grep 'libinput Accel Speed' | head -1 | grep -o '[-.0-9]*$' ;; esac