#!/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)"
    ;;
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
