User Tools

Site Tools


doc:appunti:linux:sa:touchpad_disable

This is an old revision of the document!


Disable notebook touchpad in GNU/Linx

Following this recipe you can disable or enable the touchpad of your GNU/Linux notebook using the command line. I used it to control the touchpad of my Teclast F6, where the Fn key to disable the touchpad does not work.

Install the xinput Debian package and run the following to list the X input devices:

xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver Consumer Control    id=8    [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=15   [slave  pointer  (2)]
⎜   ↳ SYNA3602:00 0911:5288 Touchpad            id=11   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Video Bus                                 id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ SHUNCCM2MP: SHUNCCM2MP                    id=10   [slave  keyboard (3)]
    ↳ Intel HID events                          id=12   [slave  keyboard (3)]
    ↳ Intel HID 5 button array                  id=13   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=14   [slave  keyboard (3)]
    ↳ Logitech USB Receiver Consumer Control    id=9    [slave  keyboard (3)]

The ask more info about input the touchpad (ID #11 in the above example):

niccolo@ithaca:~$ xinput list-props 11    
Device 'SYNA3602:00 0911:5288 Touchpad':
        Device Enabled (154):   1
        Coordinate Transformation Matrix (156): 1.000000, ...
        Device Accel Profile (286):     1
        ...

The Device Enabled property has ID #154, we can disable it:

xinput set-prop 11 154 0

Replace the zero with 1 to re-enable it.

Mapping Fn+ESC on the Teclast F6

The ESC key on the Teclast F6 notebook has the blue label indicating that the shortcut Fn+ESC should trigger the touchpadd toggle function, but it does not work in GNU/Linux.

Using the evtest tool we can see that the Fn+ESC keys produces three events, i.e. it is the same as pressing three keys together:

Event: time 1620808296.082667, -------------- SYN_REPORT ------------
Event: time 1620808298.469045, type 4 (EV_MSC), code 4 (MSC_SCAN), value 1d
Event: time 1620808298.469045, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 1
Event: time 1620808298.469045, -------------- SYN_REPORT ------------
Event: time 1620808298.471997, type 4 (EV_MSC), code 4 (MSC_SCAN), value db
Event: time 1620808298.471997, type 1 (EV_KEY), code 125 (KEY_LEFTMETA), value 1
Event: time 1620808298.471997, -------------- SYN_REPORT ------------
Event: time 1620808298.473572, type 4 (EV_MSC), code 4 (MSC_SCAN), value 76
Event: time 1620808298.473572, type 1 (EV_KEY), code 85 (KEY_ZENKAKUHANKAKU), value 1

The keys are Left Control, Left Meta and the key used to toggle from Zenkaku (full-width) to Hankaku (half-width) Japanese character spacing :-O

Using udev I remapped the Left Meta and ZENKAKUHANKAKU keys to the more useable Left Alt and ESC (see this page about customize udev events):

evdev:atkbd:dmi:*
 KEYBOARD_KEY_db=leftalt
 KEYBOARD_KEY_76=esc

Finally, using the XFCE SettingsKeyboard, I associated the Ctrl+Alt+Escape keyboard shortcut to the following shell script /usr/local/bin/touchpad-toggle:

#!/bin/sh
STATE="$(xinput --list-props 11 | egrep '^\s+Device Enabled' | rev | awk '{print $1}')"
set_on() {
    xinput set-prop 11 154 1
    echo "Touchpad enabled"
}
set_off() {
    xinput set-prop 11 154 0
    echo "Touchpad disabled (pass \"1\" as first option to re-enable it)"
}
case "$1" in
    on|yes|1)
        set_on
        ;;
    off|no|0)
        set_off
        ;;
    *)
        if [ "$STATE" -eq "1" ]; then
            set_off
        else
            set_on
        fi
        ;;
esac

Web References

doc/appunti/linux/sa/touchpad_disable.1620836151.txt.gz · Last modified: 2021/05/12 18:15 by niccolo