Activer / désactiver le pavé tactile

17

J'ai réussi à installer Ubuntu 16.04 sur mon asus ux501 vw, mais certains de mes raccourcis ne fonctionnent pas. Je ne cherche pas à les réparer tous, mais un seul: le raccourci qui me permet d'activer ou de désactiver le pavé tactile, afin que je puisse écrire de longs documents en travaillant sur le pavé tactile.

J'ai essayé de le trouver sur google mais je n'ai rien obtenu.

Quelqu'un peut-il m'expliquer comment résoudre ce problème s'il vous plaît? Merci !

Rei
la source

Réponses:

24

J'ai créé ce script bash à partir de la réponse de negusp . Il trouve et bascule le périphérique TouchPad. Vous pouvez lui configurer un raccourci personnalisé dans les paramètres système.

#!/bin/bash

read TPdevice <<< $( xinput | sed -nre '/TouchPad|Touchpad/s/.*id=([0-9]*).*/\1/p' )
state=$( xinput list-props "$TPdevice" | grep "Device Enabled" | grep -o "[01]$" )

if [ "$state" -eq '1' ];then
    xinput --disable "$TPdevice" && notify-send -i emblem-nowrite "Touchpad" "Disabled"
else
    xinput --enable "$TPdevice" && notify-send -i input-touchpad "Touchpad" "Enabled"
fi

Je configure Ctrl+ Shift+ F9pour activer et désactiver le pavé tactile comme ceci:

entrez la description de l'image ici

Modifier: Vous devrez peut-être rendre votre script exécutable avec la commande chmod + x nom de fichier ou entrez / bin / bash / filepath dans le champ Commande de la fenêtre de raccourci personnalisé.

Almas Dusal
la source
2
Il est rarement nécessaire de chaîner grepet sed. Vous pouvez facilement consolider les deux sed -nre '/TouchPad/s/.*id=([0-9]*).*/\1/p'.
David Foerster
3
Une petite correction dans le script pour Ubuntu 17.10 après avoir obtenu la ligne d'erreur 6: [:: expression entière attendue incapable de trouver le périphérique Changer le pavé tactile en pavé tactile
Gregor Grajzar
1
Réponse géniale! Mes seuls ajouts sont d'ajouter zenity --info --text "Touchpad DISABLED" --timeout=2et zenity --info --text "Touchpad ENABLED" --timeout=2à vos blocs ifet else, respectivement, pour faire apparaître une fenêtre qui annonce le nouvel état puis se ferme automatiquement en 2 secondes.
Gabriel Staples le
1
Voir ma légère modification ici: askubuntu.com/a/1109515/327339
Gabriel Staples
1
Mise à jour: certains systèmes s'affichent Touchpadau lieu de TouchPaddans la sortie de xinput, j'ai donc mis à jour ma réponse pour rechercher les deux. De plus, je l'ai fait résoudre correctement le problème de la molette de défilement lente en utilisant imwheel. Voir tous les ans ici: askubuntu.com/questions/844151/enable-disable-touchpad/…
Gabriel Staples
11

Vous voulez un raccourci, mais vous pouvez facilement mettre 2 scripts sur le bureau et les exécuter.

Allez d'abord au terminal. Tapez xinput. Exemple de sortie:

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=12   [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)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Laptop_Integrated_Webcam_1.3M             id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys 

Trouvez le pavé tactile. Dans cet exemple, le pavé tactile est répertorié comme id = 12

Créez le premier script avec ceci:

#!/bin/bash
xinput enable 12

Enregistrez-le et nommez-le touchpadenable.sh, et dans le terminal, marquez-le comme exécutable avec:

chmod +x touchpadenable.sh

Faites exactement la même chose, mais renommez le fichier en touchpaddisable.sh(ou autre), et au lieu de

xinput enable 12

Utilisez la commande

xinput disable 12

Enregistrez, marquez comme exécutable et vous devriez pouvoir exécuter les scripts à partir du bureau. Remarque: vous devrez peut-être cliquer avec le bouton droit sur les scripts, cliquer sur les propriétés et autoriser leur exécution.

negusp
la source
Hé merci pour la réponse! Je vais utiliser quelque chose comme ça! Une seule chose pensez-vous que ce serait possible si je le fais sur 1 fichier de script pour pouvoir utiliser le même raccourci?
Rei
@Thomas Voir cette réponse: askubuntu.com/questions/597395/…
negusp
6

Vous devez faire comme la réponse de negusp , vérifiez d'abord votre appareil tactile, et affichera quelque chose comme ceci:

~ $ xinput
⎡ ID du pointeur du noyau virtuel = 2 [pointeur maître (3)]
⎜ ↳ Noyau du pointeur XTEST noyau virtuel = 4 [pointeur esclave (2)]
⎜ ↳ PixArt Dell MS116 USB Optical Mouse id = 10 [pointeur esclave (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 14 [pointeur esclave (2)]
⎜ ↳ DLLC6B2: 00 06CB: 75BF Id pavé tactile = 12 [pointeur esclave (2)]
⎣ ID du clavier virtuel de base = 3 [clavier maître (2)]
    ↳ ID du clavier XTEST du noyau virtuel = 5 [clavier esclave (3)]
    ↳ ID du bouton d'alimentation = 6 [clavier esclave (3)]
    Id ID du bus vidéo = 7 [clavier esclave (3)]
    ↳ ID du bouton d'alimentation = 8 [clavier esclave (3)]
    ↳ Sleep Button id = 9 [clavier esclave (3)]
    ↳ Integrated_Webcam_HD id = 11 [clavier esclave (3)]
    ↳ ID du clavier de l'ensemble traduit 2 = 13 [clavier esclave (3)]
    ↳ Dell WMI hotkeys id = 15 [clavier esclave (3)]
    ↳ ID de touches de raccourci sans fil DELL = 16 [clavier esclave (3)]

Dans mon cas, l'appareil avec id = 12, maintenant créez un script bash avec le nom "toggle-touch" dans votre dossier Desktop sous un dossier nommé "bin", serait "~ / Desktop / bin" et copiez le code suivant, vérifiez la variable de l'appareil pointe vers mon touch id = 12, corrigez-la avec votre cas:

#!/bin/bash

device=12
state=`xinput list-props "$device" | grep "Device Enabled" | grep -o "[01]$"`

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

Définissez cette autorisation d'exécution de script:

chmod 775 /Desktop/bin/toggle-touch

Enfin, vous pouvez ajouter ce chemin au ".bashrc" de votre dossier personnel, ajoutez simplement cette ligne à la fin du fichier:

PATH=$PATH:~/Desktop/bin

mettre à jour le chemin avec:

. .bashrc

Ensuite, vous pouvez exécuter ce script depuis n'importe quel endroit, j'espère que cette aide.

Hermeslm
la source
1

Dans mon Ubuntu 18.04, la réponse d'Almas Dusal n'a pas fonctionné jusqu'à ce que je change le 'p' en minuscule TouchPaddans la ligne suivante de son code:

read TPdevice <<< $( xinput | sed -nre '/Touchpad/s/.*id=([0-9]*).*/\1/p' )

Après cela, le pavé tactile a été désactivé et activé avec succès par le script, mais cela n'a pas été reflété dans l' écran des paramètres de la souris et du pavé tactile. J'ai créé le nouveau script suivant qui fait basculer le pavé tactile lors de la mise à jour de la vue des paramètres.

#!/bin/bash

state=$( gsettings get org.gnome.desktop.peripherals.touchpad send-events )

if [ "$state" = "'enabled'" ];then
    gsettings set org.gnome.desktop.peripherals.touchpad send-events 'disabled' \
        && notify-send -i touchpad-disabled-symbolic "Touchpad" "Disabled"
else
    gsettings set org.gnome.desktop.peripherals.touchpad send-events 'enabled' \
        && notify-send -i input-touchpad-symbolic "Touchpad" "Enabled"
fi
Samuli Asmala
la source
1

Testé et fonctionne sur Ubuntu 14.04, 16.04 et 18.04.

Faites comme la réponse de @Almas Dusal , qui aime la réponse de @ negusp , sauf utilisez plutôt mon script modifié car il a 3 avantages supplémentaires ( MISE À JOUR: les avantages 1 et 3 ci-dessous ont été ajoutés le 12 septembre 2019 ):

  1. Il recherche la sortie de xinputpour les deux TouchpadET TouchPad, car certains systèmes ont le P en majuscule tandis que d'autres ne le font pas. Cela rend mon script compatible avec plus de systèmes (j'espère que TOUS les systèmes).
  2. Il ajoute les fenêtres contextuelles à fermeture automatique de 2 secondes via zenitypour indiquer si votre pavé tactile est maintenant ACTIVÉ ou DÉSACTIVÉ. Voir les captures d'écran de ces fenêtres contextuelles ci-dessous.
  3. Il corrige correctement la vitesse de votre molette de défilement, ce imwheelqui permet (ce qui résout votre problème de molette de défilement lente dans Ubuntu / Linux lorsque vous utilisez une molette de défilement de la souris) lorsque vous utilisez une souris, tout en le désactivant imwheellorsque vous utilisez un pavé tactile, imwheelsinon le défilement du pavé tactile devient vraiment glitchy lorsqu'il est activé. Assurez-vous de décommenter les lignes respectives pour que cela fonctionne. Ex: # imwheel -b "4 5"et # killall imwheel.
#!/bin/bash

# GS_toggle_touchpad.sh
# - toggle the touchpad on and off

# Gabriel Staples
# Written: 2 Apr. 2018 
# Updated: 12 Sept. 2019 

# References:
# - /ubuntu//a/874865/327339
# - /ubuntu/844151/enable-disable-touchpad/1109515#1109515 <-- my own ans!

# Search for id number of "TouchPad" OR "Touchpad" in `xinput` list; manually type `xinput` to see all your devices
read TouchPadDeviceId <<< $( xinput | sed -nre '/TouchPad|Touchpad/s/.*id=([0-9]*).*/\1/p' ) 

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

echo "TouchPadDeviceId = $TouchPadDeviceId"
echo "state = $state"

if [ "$state" -eq '1' ];then
    xinput --disable "$TouchPadDeviceId"
    zenity --info --text "Touchpad DISABLED" --timeout=2
    # Next line required only if using imwheel to fix slow scroll speed in Chrome, for ex; see here: 
    # /ubuntu//a/991680/327339
    # imwheel -b "4 5"
else
    xinput --enable "$TouchPadDeviceId"
    zenity --info --text "Touchpad ENABLED" --timeout=2
    # Next line required only if using imwheel to fix slow scroll speed in Chrome, for ex; see here: 
    # /ubuntu//a/991680/327339
    # killall imwheel
fi

Notez que la fonction imwheel n'est requise que si vous suivez également cette réponse pour corriger la vitesse de votre molette de défilement: Fixer définitivement la vitesse de défilement de Chrome .

Maintenant, affectez-lui une touche de raccourci de Ctrl+ Alt+ P(ou ce que vous choisissez [le «P» signifie touch'P'ad dans mon cas]). Mon ajout au script ci-dessus est la zenitypartie de la fenêtre contextuelle à fermeture automatique, que je décris plus dans ma réponse ici ( /superuser//a/1310142/425838 ).

Maintenant, lorsque j'utilise le raccourci ci-dessus, je vois cette fenêtre contextuelle, qui se ferme automatiquement après 2 secondes:

entrez la description de l'image ici

Et si j'appuie à nouveau, j'obtiens cette fenêtre contextuelle, qui se ferme automatiquement après 2 secondes:

entrez la description de l'image ici

Parfait!

En prime, si vous êtes un gros utilisateur de souris, ajoutez simplement la commande qui appelle votre script ci-dessus à vos programmes de démarrage dans Ubuntu pour qu'il s'exécute et désactive votre trackpad à chaque démarrage de votre ordinateur! J'ai cet ensemble pour que je puisse arrêter de cogner le pavé tactile avec la base de ma main et de supprimer des trucs accidentellement tout le temps! Maintenant, quand ma main heurte le pavé tactile, rien ne se passe car il est désactivé. :)

Remarque: tout cela fonctionne très bien dans Ubuntu 18.04 ainsi que dans les anciennes versions. Je l'ai testé dans Ubuntu 18.04 et Ubuntu 14.04. Voici une capture d'écran de la fenêtre des paramètres de raccourci du 18.04:

entrez la description de l'image ici

En relation:

  1. Fixer définitivement la vitesse de défilement de Chrome
Gabriel Staples
la source
Ne se réactive pas sur mon HP Probook. Il y a 2 éléments dans xinput SynPS/2 Synaptics TouchPadet SYNA306A:00 06CB:CD0B Touchpad. La première exécution désactive l'un, la seconde désactive l'autre. De là, il basculera le second, mais jamais le premier.
rtaft
0

Laissant mon script ici (plus ou moins le même que ci-dessus). Fonctionne hors de la boîte, pas besoin de recherche préalable de l'ID de l'appareil.

#!/bin/bash

function query_device_id {
    xinput list | grep -i touchpad | sed 's/.*id=\([0-9]*\).*/\1/g'
}

let device_id=$(query_device_id)

let state=$(xinput list-props $device_id | grep Enabled | awk '{print $4;}')

let new_state=$((1 - $state))

xinput set-prop $device_id "Device Enabled" $new_state
erosb
la source
0

Créez un script shell et collez-le ci-dessous et nommez-le touchPadDisable.sh

#!/bin/bash
temp=$(xinput | grep -i "Elantech Touchpad" | cut -d"=" -f 2 | cut -d"[" -f 1)
xinput disable $temp

Créez un autre script shell et collez-le ci-dessous et nommez-le touchPadEnable.sh

#!/bin/bash
temp=$(xinput | grep -i "Elantech Touchpad" | cut -d"=" -f 2 | cut -d"[" -f 1)
xinput enable $temp

Le premier script désactivera le pavé tactile et le second activera le pavé tactile.

Vous pouvez ajouter ce script à des raccourcis personnalisés dans les claviers.

Shrinivas Kulkarni
la source