Enable/Disable Touchpad on HP Envy Ultrabook running Ubuntu

HP Envy Touchpad

HP Envy Touchpad

As mentioned in a previous post, I mentioned about my HP Envy and Ubuntu. One more feature I noticed missing was the ability to enable and disable the touchpad. As shown in the picture, the touchpad has a special tap area on its left top corner which acts as a toggle button. But this is not working under Ubuntu. But ofcourse I had to solve this problem and here is the solution I came up with:

First of all we need to list all the input devices available. This can be done by the command:

xinput list


⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                   	id=9	[slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                   	id=10	[slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad              	id=13	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ Power Button                            	id=8	[slave  keyboard (3)]
    ↳ HP Truevision HD                        	id=11	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=12	[slave  keyboard (3)]
    ↳ HP WMI hotkeys                          	id=14	[slave  keyboard (3)]

Notice the 4th entry under Virtual core pointer which is SynPS/2 Synaptics TouchPad having id=13. To be very sure we can also test it using the command:

xinput test 13

As I move my finger on the touchpad, the data is displayed which is a surety that I made the right choice. Now we need to create a script to enable/disable the touchpad.

Create a new file for instance toggle and place it in the current folder. Add the following contents to this file:

SYNSTATE=$(xinput list-props "13" | grep Enabled | grep -Eo '.$')
if [ $SYNSTATE = 0 ]; then xinput set-prop "13" "Device Enabled" 1
else xinput set-prop "13" "Device Enabled" 0; fi

Notice the “13” in all three lines, this is the id which we noticed earlier. Save and close the file. To run this script, we need to change the permissions to executable:

chmod +x toggle

Finally we can enable and disable the touchpad:


Running this command will disable it, which you can test also. Running it again will enable it again. This is enough and works fine. However you will notice that these id numbers at times do change on different system boots. The solution can be to use the complete name its of the id in the script:

SYNSTATE=$(xinput list-props "SynPS/2 Synaptics TouchPad" | grep Enabled | grep -Eo '.$')
if [ $SYNSTATE = 0 ]; then xinput set-prop "SynPS/2 Synaptics TouchPad" "Device Enabled" 1
else xinput set-prop "SynPS/2 Synaptics TouchPad" "Device Enabled" 0; fi
Ubuntu Keyboard

Ubuntu Keyboard

As an additional step, we can also assign a keyboard shortcut for this file. Open the Keyboard program from Unity dash and go to the second tab named Shortcuts. Add a new shortcut as shown in the picture. Give a name, path of the file and a key combination.

Now pressing these keys will toggle the touchpad 🙂