web-dev-qa-db-fra.com

Comment désactiver un pavé tactile à l'aide de la ligne de commande?

Est-il possible de désactiver un pavé tactile à l'aide d'une commande de terminal?

39
Peng Wu

Pour désactiver le pavé tactile:

synclient TouchpadOff=1

Pour le réactiver:

synclient TouchpadOff=0
55
0x7c0

Vous pouvez essayer au moins deux méthodes (à ma connaissance).

synclient

Si votre ordinateur portable est équipé d'un pavé tactile Synaptics (ou ALPS), vous pouvez en effet utiliser synclient comme déjà mentionné par Shutupsquare. J'utilise Ubuntu 14.04 et sur ma machine, il a été installé par défaut.

Testez si le synclient est installé: synclient -V (il devrait indiquer le numéro de version)

Activer le touchpad: synclient TouchpadOff=0

Désactiver le pavé tactile: synclient TouchpadOff=1

Je n'ai pas testé cela moi-même, mais si votre objectif est de ne pas déplacer la souris lorsque vos bras reposent sur la tablette tactile, cela pourrait vous aider.

Activer la détection Palm: synclient PalmDetect=1

Désactiver la détection Palm: synclient PalmDetect=0

En général, vous pouvez configurer n’importe quelle propriété de votre pavé tactile Synaptics avec synclient property=value. Où la propriété est l'une des propriétés disponibles affichées par synclient -l

Liens pour en savoir plus

buntu - wiki d'aide de Comminity - SynapticsTouchpad

archlinux - wiki - Pavé tactile Synaptics

ask ubuntu - Comment puis-je conserver les paramètres de mon synclient? - Ubuntu

xinput

Si vous ne voulez pas ou ne pouvez pas utiliser synclient, vous pouvez également utiliser xinput. La procédure est un peu similaire.

liste tous les périphériques xinput: xinput

Une partie de la sortie pourrait ressembler à ceci:

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB-PS/2 Optical Mouse           id=13   [slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad                  id=17   [slave  pointer  (2)]

Dans ce cas particulier, mon touchpad a id = 17 et son nom complet est "ETPS/2 Elantech Touchpad".

La commande permettant de définir une propriété est xinput set-prop. La propriété permettant d'activer ou de désactiver le pavé tactile est Device Enabled. Pour l'activer ou la désactiver, tapez:

Activez le touchpad: xinput set-prop <id> "Device Enabled" 1 (où <id> est l'identifiant de votre appareil, dans mon cas 17)

Désactiver le pavé tactile: xinput set-prop <id> "Device Enabled" 0

Activer la détection Palm: xinput set-prop <id> "Palm Detection" 1

Désactiver la détection Palm: xinput set-prop <id> "Palm Detection" 0

Pour interroger les propriétés disponibles: xinput list-props <id> OR xinput list-props <full-name>, cela devrait être assez similaire à synclient -l.

Liens pour en savoir plus

buntu - wiki - input

REMARQUE

Lors de la définition des propriétés via xinput ou synclient, les propriétés ne sont pas définies sur l'autre outil. Ils ne sont pas non plus placés dans le centre de contrôle de l'unité.

22
bremme

synclient et xinput ne fonctionneront pas si vous utilisez un environnement gnome (ou unité, cannelle), car ils remplaceront les paramètres. Par conséquent, si vous souhaitez que synclient ou xinput accepte ces paramètres, vous devez d'abord le désactiver:

  1. installez dconf-editor s'il n'est pas installé:

    apt-get install dconf-editor
    
  2. lancer dconf-editor

    dconf-editor 
    
  3. ouvrez le répertoire /org/gnome/settings-daemon/plugins/mouse/ ou /org/cinnamon/settings-daemon/plugins/mouse/ et décochez la case correspondant à active.

  4. logout ou reboot

Cela devrait permettre à synclient ou xinput de fonctionner.

4
realhu
  1. Listez vos périphériques d'entrée:

    xinput list
    

    Dans mon cas j'ai cette liste:

    Virtual core XTEST pointer                  id=4
    Logitech M510                               id=11   
    ETPS/2 Elantech Touchpad                    id=15
    
  2. Désactiver votre touchpad en passant l'ID

    xinput set-prop 15 "Device Enabled" 0
    
1
D.Snap

J'ai écrit un morceau de code python afin que vous puissiez utiliser la technique xinputsans effectuer tout le travail manuel. Copyleft, AS-IS, sans garantie, à utiliser à vos risques et périls. Cela fonctionne très bien pour moi: et si vous utilisez gnome, associez-le simplement à un raccourci clavier comme CtrlShiftT.

#!/usr/bin/python2
# -*- coding: utf-8 -*-
'''Program to toggle Touchpad Enable to Disable or vice-versa.'''

import commands
import re


def current_id():
    """ Search through the output of xinput and find the line that has the
    Word TouchPad.  At that point, I believe we can find the ID of that device."""

    props = commands.getoutput("xinput").split("\n")
    match = [line for line in props if "TouchPad" in line]
    assert len(match) == 1, "Problem finding Touchpad string! %s" % match

    pat = re.match(r"(.*)id=(\d+)", match[0])
    assert pat, "No matching ID found!"

    return int(pat.group(2))


def current_status(tpad_id):
    """Find the current Device ID, it has to have the Word TouchPad in the line."""

    props = commands.getoutput("""xinput list-props %d""" % tpad_id).split('\n')
    match = [line for line in props if "Device Enabled" in line]
    assert len(match) == 1, "Can't find the status of device #%d" % tpad_id

    pat = re.match(r"(.*):\s*(\d+)", match[0])
    assert pat, "No matching status found!"
    return int(pat.group(2))

def flop(tpad_id, status):
    """Change the value of status, and call xinput to reverse that status."""
    if status == 0:
        status = 1
    else:
        status = 0

    print "Changing Device #%d Device Enabled %d" % (tpad_id, status)
    commands.getoutput("""xinput set-prop %d "Device Enabled" %d""" % (tpad_id, status))

def main():
    """Get curent device id and status, and flop status value."""
    tpad = current_id()
    stat = current_status(tpad)
    flop(tpad, stat)

main()
1

Sur Gnome, ma touche de fonction pour basculer le pavé tactile ne fonctionnait pas pour une raison quelconque, j'ai donc créé un script en utilisant gsettings.

  • Avantage: pas spécifique au vendeur
  • Inconvénient: sur Gnome, les clics sur le pavé tactile (non tapé) sont toujours gérés pour une raison quelconque, alors que la solution xinput désactive complètement le pavé tactile comme prévu. Si comme moi, votre seul problème est que vous déplacez le curseur par inadvertance en tapant, cependant, cela suffira.

toggle_touchpad_gsettings.py

#!/usr/bin/python3.6
import sys
import subprocess

gsettings_schema, gsettings_key = "org.gnome.desktop.peripherals.touchpad", "send-events"

def get_touchpad_send_events():
    send_events_value = subprocess.check_output(["gsettings", "get", gsettings_schema, gsettings_key])
    return send_events_value.strip()

def toggle_touchpad():
    # string returned from get is a repr including quotes,
    # but string sent with set does not need to have quotes
    if get_touchpad_send_events() == b"'enabled'":
        newval = 'disabled'
    else:
        newval = 'enabled'
    subprocess.Popen(["gsettings", "set", gsettings_schema, gsettings_key, newval])
    print(f"Set {gsettings_schema}:{gsettings_key} to {newval}")

def main():
    toggle_touchpad()

if __== '__main__':
    main()

Cela devrait également fonctionner sur Unity, mais je n'ai pas encore testé.

0
hsandt