10

I can disable a device like this:

xinput set-prop 13 "Device Enabled" 0

But I want to actually set a custom shortcut that toggles this between 0\1. My bash skills are kinda rusty, so how can I do this? There's no get-prop command, I got this far:

xinput list-props 13 | grep "Device Enabled"

Which correctly prints out

Device Enabled (135):   1

But I don't know what to do next. Help?

2 Answers 2

19

Toggle xinput device on or off with following bash script.

#!/bin/bash

device=13
state=$(xinput list-props "$device" | grep "Device Enabled" | grep -o "[01]$")

if [ $state == '1' ];then
  xinput --disable "$device"
else
  xinput --enable "$device"
fi
0

I made this one-liner from Jason YiZhang Chen's answer. It's handy if you just need a command to put in a keyboard shortcut or startup job. It exploits the fact that you can also set properties of devices by name, and that the name of the touchpad won't change.

To get the device name:

$ xinput | grep Touchpad
⎜   ↳ ETPS/2 Elantech Touchpad                  id=18   [slave  pointer  (2)]

So my device is called ETPS/2 Elantech Touchpad. I hardcode that into this one-liner:

[ "$(xinput list-props 'ETPS/2 Elantech Touchpad' | grep 'Device Enabled' | grep -o '[01]$')" == "1" ] && xinput --disable 'ETPS/2 Elantech Touchpad' || xinput --enable 'ETPS/2 Elantech Touchpad'
1
  • 'xinput set-prop 18 "Device Enabled" $((1-$(xinput list-props 18 | grep "Device Enabled" | grep -o "[01]$")))' Jan 14, 2021 at 19:13

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .