Abilita / disabilita il touchpad


17

Sono riuscito a installare Ubuntu 16.04 sul mio asus ux501 vw, ma alcuni dei miei collegamenti non funzionano. Non sto cercando di risolverli tutti, ma solo uno: il collegamento che mi consente di abilitare o disabilitare il touchpad, quindi posso scrivere lunghi documenti lavorando sul touchpad.

Ho provato a trovarlo su Google, ma non ho ottenuto nulla.

Qualcuno può spiegarmi come risolvere questo per favore? Grazie !

Risposte:


24

Ho creato questo script bash dalla risposta di negusp . Trova e attiva il dispositivo TouchPad. È possibile configurare un collegamento personalizzato ad esso nelle impostazioni di sistema.

#!/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

Sto impostando Ctrl+ Shift+ F9per abilitare e disabilitare il touchpad in questo modo:

inserisci qui la descrizione dell'immagine

Modifica: potrebbe essere necessario rendere eseguibile lo script con il comando chmod + x nomefile o input / bin / bash / percorso file nel campo Comando della finestra di scelta rapida personalizzata.


2
Raramente c'è bisogno di incatenare grepe sed. Puoi facilmente consolidare i due a sed -nre '/TouchPad/s/.*id=([0-9]*).*/\1/p'.
David Foerster,

3
Una piccola correzione nello script per Ubuntu 17.10 dopo aver ottenuto la riga di errore 6: [:: si prevede che l'espressione intera non sia in grado di trovare il dispositivo Cambia TouchPad in Touchpad
Gregor Grajzar

1
Risposta fantastica! Le mie uniche aggiunte sono aggiungere zenity --info --text "Touchpad DISABLED" --timeout=2e zenity --info --text "Touchpad ENABLED" --timeout=2al tuo ife elseblocchi, rispettivamente, per far apparire una finestra che annuncia il nuovo stato e poi si chiude automaticamente in 2 secondi.
Gabriel Staples,

1
Vedi la mia leggera modifica qui: askubuntu.com/a/1109515/327339
Gabriel Staples

1
Aggiornamento: alcuni sistemi mostrano Touchpadinvece che TouchPadnell'output di xinput, quindi ho aggiornato la mia risposta per cercare entrambi. Inoltre, ho risolto correttamente anche il problema della rotella di scorrimento lento, usando imwheel. Vedi la risposta
Gabriel Staples

11

Vuoi un collegamento, ma puoi facilmente mettere 2 script sul desktop ed eseguirli.

Per prima cosa, vai al terminal. Tipo xinput. Esempio di output:

⎡ 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 

Trova il touchpad. In questo esempio, il touchpad è elencato come id = 12

Crea il primo script con questo:

#!/bin/bash
xinput enable 12

Salvalo e chiamalo e touchpadenable.sh, nel terminale, contrassegnalo come eseguibile con:

chmod +x touchpadenable.sh

Ripeti esattamente la stessa cosa, ma rinomina il file come touchpaddisable.sh(o qualsiasi altra cosa) e invece di

xinput enable 12

Usa il comando

xinput disable 12

Salva, contrassegna come eseguibile e dovresti essere in grado di eseguire gli script dal desktop. Nota: potrebbe essere necessario fare clic con il pulsante destro del mouse sugli script, fare clic su Proprietà e consentire l'esecuzione.


Ehi, grazie per la risposta! Userò qualcosa del genere! Solo una cosa pensi che sarebbe possibile se lo facessi su 1 file di script in modo da poter usare lo stesso collegamento?
Rei

@Thomas Vedi questa risposta: askubuntu.com/questions/597395/…
negusp

6

Devi fare come la risposta di negusp , prima controlla il tuo dispositivo touch e mostrerà qualcosa del genere:

~ $ xinput
⎡ Puntatore core virtuale id = 2 [puntatore master (3)]
⎜ ↳ ID del puntatore XTEST del core virtuale = 4 [puntatore slave (2)]
⎜ ↳ ID mouse ottico USB Dell MS116 PixArt = 10 [puntatore slave (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 14 [puntatore slave (2)]
⎜ ↳ DLLC6B2: 00 06CB: 75BF Touchpad id = 12 [puntatore slave (2)]
⎣ ID tastiera core virtuale = 3 [tastiera master (2)]
    ↳ ID tastiera XTEST del core virtuale = 5 [tastiera slave (3)]
    ↳ Pulsante di accensione id = 6 [tastiera slave (3)]
    ↳ ID bus video = 7 [tastiera slave (3)]
    ↳ Pulsante di accensione id = 8 [tastiera slave (3)]
    ↳ Tasto sospensione id = 9 [tastiera slave (3)]
    ↳ Integrated_Webcam_HD id = 11 [tastiera slave (3)]
    ↳ AT Translated Set 2 id tastiera = 13 [tastiera slave (3)]
    ↳ Tasti di scelta rapida Dell WMI id = 15 [tastiera slave (3)]
    ↳ DELL Tasti di scelta rapida wireless id = 16 [tastiera slave (3)]

Nel mio caso è il dispositivo con id = 12, ora crea uno script bash con il nome "toggle-touch" nella cartella del desktop in una cartella denominata "bin", sarebbe "~ / Desktop / bin" e copia il codice successivo, controlla la variabile del dispositivo è puntata sul mio tocco id = 12, risolvilo con il tuo caso:

#!/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

Impostato su questa autorizzazione per l'esecuzione dello script:

chmod 775 /Desktop/bin/toggle-touch

Finalmente puoi aggiungere questo percorso al ".bashrc" dalla tua cartella home, basta aggiungere questa linea alla fine del file:

PATH=$PATH:~/Desktop/bin

aggiorna il percorso con:

. .bashrc

Quindi puoi eseguire questo script da qualsiasi luogo, spero che questo aiuto.


1

Nel mio Ubuntu 18.04 la risposta di Almas Dusal non ha funzionato fino a quando ho cambiato la 'p' in minuscolo nella TouchPadseguente riga del suo codice:

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

Dopo che il touchpad è stato disabilitato e abilitato con successo dallo script, ma ciò non si è riflesso nella schermata delle impostazioni del mouse e del touchpad . Ho creato il seguente nuovo script che attiva / disattiva il touchpad durante l'aggiornamento della vista delle impostazioni.

#!/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

1

Testato e funziona su Ubuntu 14.04, 16.04 e 18.04.

Fai come la risposta di @Almas Dusal , che gradisce la risposta di @ negusp , tranne usa invece il mio script modificato poiché ha 3 vantaggi aggiuntivi ( AGGIORNAMENTO: i vantaggi 1 e 3 di seguito sono stati aggiunti il ​​12 settembre 2019 ):

  1. Cerca l'output di xinputentrambi TouchpadAND TouchPad, poiché alcuni sistemi hanno la P maiuscola mentre altri no. Questo rende il mio script compatibile con più sistemi (speriamo TUTTI i sistemi).
  2. Aggiunge le finestre popup a chiusura automatica di 2 secondi tramite zenityper mostrare se il touchpad è ora ABILITATO o DISATTIVATO. Vedi schermate di queste finestre popup di seguito.
  3. Corregge correttamente la velocità della rotellina di scorrimento, abilitando imwheel(che risolve il problema della rotella di scorrimento lenta in Ubuntu / Linux quando si utilizza una rotellina del mouse) quando si utilizza un mouse, mentre disabilita imwheelquando si utilizza un touchpad, poiché imwheelaltrimenti rende lo scorrimento del touchpad davvero glitch quando abilitato. Assicurati di decommentare le rispettive linee per farlo funzionare. Es: # imwheel -b "4 5"e # 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

Nota che la cosa imwheel è necessaria solo se stai seguendo questa risposta per correggere anche la velocità della rotella di scorrimento: Correggi in modo permanente la velocità di scorrimento di Chrome .

Ora assegnagli un tasto scorciatoia di Ctrl+ Alt+ P(o qualunque cosa tu scelga [la 'P' sta per touch'P'ad nel mio caso]). La mia aggiunta allo script sopra è la zenityparte della finestra popup a chiusura automatica, che descrivo di più nella mia risposta qui ( /superuser//a/1310142/425838 ).

Ora, quando uso il collegamento sopra, vedo questa finestra popup, che si chiude automaticamente dopo 2 secondi:

inserisci qui la descrizione dell'immagine

E se lo premo di nuovo ottengo questa finestra popup, che si chiude automaticamente dopo 2 secondi:

inserisci qui la descrizione dell'immagine

Perfetto!

Come bonus aggiuntivo, se sei un utente di mouse pesante, aggiungi semplicemente il comando che chiama lo script sopra ai tuoi programmi di avvio in Ubuntu in modo che venga eseguito e disabiliti il ​​trackpad ogni volta che il computer si avvia! Ho questo set in modo da poter smettere di urtare il trackpad con la base della mia mano e di eliminare roba accidentalmente tutto il tempo! Ora, quando la mia mano batte il trackpad, non succede nulla perché è disabilitato. :)

Nota: tutto funziona alla grande in Ubuntu 18.04 e nelle versioni precedenti. L'ho provato in Ubuntu 18.04 e Ubuntu 14.04. Ecco uno screenshot dalla finestra delle impostazioni del collegamento in 18.04:

inserisci qui la descrizione dell'immagine

Relazionato:

  1. Correggi in modo permanente la velocità di scorrimento di Chrome

Non riattivabile sul mio HP Probook. Ci sono 2 elementi in xinput SynPS/2 Synaptics TouchPade SYNA306A:00 06CB:CD0B Touchpad. La prima esecuzione disabilita l'una, la seconda disabilita l'altra. Da lì alternerà il secondo, ma mai il primo.
ritorno

0

Lasciando qui la mia sceneggiatura (più o meno la stessa di cui sopra). Funziona immediatamente, senza bisogno di una ricerca preliminare dell'ID del dispositivo.

#!/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

0

Crea uno script di shell e incolla il codice sottostante e chiamalo touchPadDisable.sh

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

Crea un altro script di shell e incollalo sotto il codice e chiamalo touchPadEnable.sh

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

Il primo script disabiliterà il touchpad e il secondo abiliterà il touchpad.

Puoi aggiungere questo script a scorciatoie personalizzate nelle tastiere.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.