mirror of
https://github.com/kuhyx/scripts.git
synced 2026-11-11 13:47:39 +01:00
feat: more robust toggle wheel script
This commit is contained in:
parent
0d5ea0a9d4
commit
60b7ccbf0f
@ -1,8 +1,10 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Replace these with your device's vendor and product IDs
|
# Replace these with your device's vendor and product IDs
|
||||||
VENDOR_ID="c24f"
|
# Note: lsusb prints as VENDOR:PRODUCT (e.g., 046d:c24f for Logitech G29)
|
||||||
PRODUCT_ID="046d"
|
# sysfs expects idVendor=046d and idProduct=c24f
|
||||||
|
VENDOR_ID="046d"
|
||||||
|
PRODUCT_ID="c24f"
|
||||||
|
|
||||||
ACTION=$1
|
ACTION=$1
|
||||||
|
|
||||||
@ -20,12 +22,13 @@ fi
|
|||||||
|
|
||||||
DEVICE_PATH=""
|
DEVICE_PATH=""
|
||||||
|
|
||||||
# Find the device path in sysfs
|
# Find the device path in sysfs (robust scan)
|
||||||
for sysdevpath in $(find /sys/bus/usb/devices/ -name idVendor); do
|
for d in /sys/bus/usb/devices/*; do
|
||||||
if [[ $(cat "$sysdevpath") == "$VENDOR_ID" ]]; then
|
if [[ -f "$d/idVendor" && -f "$d/idProduct" ]]; then
|
||||||
parentdir="$(dirname "$sysdevpath")"
|
v=$(cat "$d/idVendor")
|
||||||
if [[ $(cat "$parentdir/idProduct") == "$PRODUCT_ID" ]]; then
|
p=$(cat "$d/idProduct")
|
||||||
DEVICE_PATH="$parentdir"
|
if [[ "$v" == "$VENDOR_ID" && "$p" == "$PRODUCT_ID" ]]; then
|
||||||
|
DEVICE_PATH="$d"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@ -33,15 +36,22 @@ done
|
|||||||
|
|
||||||
# Check if device was found
|
# Check if device was found
|
||||||
if [ -z "$DEVICE_PATH" ]; then
|
if [ -z "$DEVICE_PATH" ]; then
|
||||||
echo "Device with Vendor ID $VENDOR_ID and Product ID $PRODUCT_ID not found."
|
echo "Device with Vendor ID $VENDOR_ID and Product ID $PRODUCT_ID not found in /sys/bus/usb/devices."
|
||||||
|
echo "Tip: Run 'lsusb | grep ${VENDOR_ID}:${PRODUCT_ID}' to verify it's connected."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Enable or disable the device
|
# Enable or disable the device
|
||||||
|
if [ ! -e "$DEVICE_PATH/authorized" ]; then
|
||||||
|
echo "The 'authorized' attribute is not present at $DEVICE_PATH."
|
||||||
|
echo "This device may not support toggling via 'authorized'."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$ACTION" == "off" ]; then
|
if [ "$ACTION" == "off" ]; then
|
||||||
echo '0' > "$DEVICE_PATH/authorized"
|
echo '0' > "$DEVICE_PATH/authorized"
|
||||||
echo "Device turned off."
|
echo "Device at $(basename "$DEVICE_PATH") turned off."
|
||||||
elif [ "$ACTION" == "on" ]; then
|
elif [ "$ACTION" == "on" ]; then
|
||||||
echo '1' > "$DEVICE_PATH/authorized"
|
echo '1' > "$DEVICE_PATH/authorized"
|
||||||
echo "Device turned on."
|
echo "Device at $(basename "$DEVICE_PATH") turned on."
|
||||||
fi
|
fi
|
||||||
Loading…
Reference in New Issue
Block a user