Come disabilitare il touchpad durante l'utilizzo del trackpoint su un Thinkpad?


21

I Thinkpad (ad es. X230 che sto usando) hanno sia un trackpoint che un touchpad. Il touchpad è disabilitato durante la digitazione.

Tuttavia, quando utilizzo il trackpoint, tocco spesso anche il touchpad e genera clic del mouse che vorrei evitare. Qualcuno ha idea di come disabilitare i clic del mouse sul touchpad quando il trackpoint è in uso?

EDIT: inoltre, qualcuno può spiegare come funziona l'opzione di disabilitare il touchpad durante la digitazione? Cosa si sta facendo dietro le quinte? È un comando di configurazione xinput e, se sì, quale?

EDIT2: chiarimento; la disabilitazione manuale del Touchpad (anche con un collegamento) non è il problema qui. Questo dovrebbe funzionare esattamente come l'opzione "disabilita touchpad durante la digitazione", poiché utilizzo Touchpad e Trackpoint in modo intercambiabile (più frequentemente, utilizzo Touchpad per lo scorrimento e Trackpoint per spostare il cursore).


Questo sarebbe interessante. Il modo in cui la tastiera è disposta contribuisce a gesti vaganti che interferiscono con il corretto funzionamento. Non credo sia possibile con le opzioni attuali, ma forse in futuro? Trovo che devo usare due mani per digitare e puntare, inarcando la mia mano (destra) in alto, per evitare di spazzolare / muovere il trackpad.
fleamour,

Al momento, ho disabilitato i clic del mouse con il touchpad: trovo che nella maggior parte dei casi utilizzo comunque i pulsanti nella parte superiore del touchpad.
Gennaio

Risposte:


10

Disabilitazione del touchpad quando la tastiera è in uso

Questa funzione viene eseguita syndaemondall'utilità, dal xserver-xorg-input-synapticspacchetto. È possibile impostare opzioni come il tempo di inattività, la frequenza di polling, ecc. (Consultare la guida di runtime ):

Utilizzo: syndaemon [-i idle-time] [-m poll-delay] [-d] [-t] [-k]
  -i Quanti secondi attendere dopo l'ultimo tasto premuto prima
     abilitazione del touchpad. (il valore predefinito è 2.0s)
  -m Quanti milli-secondi attendere fino al prossimo sondaggio.
     (il valore predefinito è 200 ms)
  ...
  -t Disabilita solo il tocco e lo scorrimento, non i movimenti del mouse.

Ecco il codice sorgente per syndaemon.c.

  • Le funzioni importanti sono keyboard_activity(...)emain_loop(...)
  • keyboard_activityusa la chiamata API XQueryKeyMap per ottenere lo stato corrente della tastiera (1 bit per tasto), quindi confronta è con l'ultimo (vecchio) stato; se sono diversi, restituisce 1
  • main_loopesegue il polling keyboard_activityogni mmillisecondi e in base al "tempo dell'ultima attività" e se keyboard_activityrestituisce vero o falso, decide se disabilitare o abilitare il touchpad.
  • La dp_get_devicefunzione illustra come sono elencati i dispositivi di input X; dovresti essere in grado di modificare questo e la keyboard_activityfunzione per verificare anche eventuali attività del trackpoint.

  • Lo xinputstrumento elenca dispositivi e ID, ad esempio "

    Puntatore core virtuale id = 2 [puntatore master (3)]
    ⎜ ↳ ID del puntatore XTEST del core virtuale = 4 [puntatore slave (2)]
    ⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [puntatore slave (2)]
    ⎜ ↳ TPPS / 2 IBM TrackPoint id = 12 [puntatore slave (2)]

  • È possibile ottenere questo (l'ID) tramite la funzione XListInputDevices

  • Successivamente, è necessario ottenere un handle di dispositivo dall'ID utilizzando XOpenDevice
  • Quindi, si utilizza la funzione XQueryDeviceState per ottenere le coordinate del puntatore TrackPoint; simile al loop esistente, esegui il polling ogni tanto e verifichi se le coordinate sono cambiate (ovvero il TrackPoint è in uso) e lo usi per attivare o disattivare il touchpad
  • È possibile utilizzare l' xinpututilità con lo query-stateswitch e l'ID dispositivo per verificare se la programmazione è corretta, ad esempio:

    $ xinput query-state 12
    2 lezioni:
    ButtonClass
    Pulsante [1] = alto
    tasto [2] = up
    tasto [3] = up
    tasto [4] = up
    tasto [5] = up
    Pulsante [6] = alto
    Pulsante [7] = alto
    ValuatorClass Mode = Prossimità relativa = In
    valuator [0] = 854
    valuator [1] = 867
    
  • Sei interessato ai valori del valutatore , che sono le coordinate X e Y del TrackPoint
  • Vedi la xinputfonte per ulteriori suggerimenti
  • Per modificare e ricostruire questo pacchetto:

    1. Ottieni la fonte con apt-get source...
    2. Apporta le tue modifiche a tools/syndaemon.c
    3. Disabilita le syndaemonpatch esistenti commentando le righe 118...e124...debian/patches/series
    4. Compilare il pacchetto modificato con dpkg-buildpackage -us -uce i file deb saranno nella directory principale.

1
Poiché la taglia scadrà tra tre giorni, avrei un accordo con te (a meno che non appaia una risposta migliore): assegnerò la taglia a te se mi indicherai all'API per interrogare un dispositivo tramite l'identificatore xinput e fornire un collegamento a una pagina che descrive come creare un pacchetto deb da fonti modificate. Quindi sarei in grado di applicare questo approccio. Andrebbe bene?
Gennaio

Scusa, sono stato via. Suona bene, proverò a trovare le informazioni e a modificare la risposta tra qualche ora.
Ish,

nessun problema! Questo va bene
Gennaio

1
Come promesso, si ottiene la taglia. Non accetto la risposta, tuttavia, perché devo prima codificare la soluzione.
Gennaio

1
@Gennaio, non sei ancora sicuro di essere riuscito a codificare la tua soluzione? Syndaemon è stato patchato per supportare il monitoraggio del trackpoint. github.com/eyko/xf86-input-synaptics (eseguire il commit qui github.com/eyko/xf86-input-synaptics/commit/… ) Per monitorare il TrackPoint, è necessario passare il flag dell'opzione -T quando si esegue Syndaemon.
Vince,

4

La prima cosa da fare è conoscere il tuo ID del touchpad, quindi per farlo segui questi passaggi

Per prima cosa apri il terminale ed esegui questo comando

~$ xinput --list

Ecco qui Touchpad id = <id Number>

Dopo aver aperto le scorciatoie da tastiera, aggiungi questo sotto due comandi con le scorciatoie da tastiera.

# Disable Touchpad:
xinput set-prop <id number> 'Device Enabled' 0

# Enable Touchpad:
xinput set-prop <id number> 'Device Enabled' 1

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine


Grazie, ma disabilitare il Touchpad manualmente non è il problema qui (anche con una scorciatoia) e so come farlo. L'idea è quella di disabilitare automaticamente il Touchpad mentre si utilizza Trackpoint, in modo simile il Touchpad viene disabilitato automaticamente quando si utilizza la tastiera (vedere l'impostazione "disabilita il touchpad durante la digitazione" nelle impostazioni "Mouse e Touchpad").
Gennaio

0

Ecco una soluzione a bassa tecnologia che potrebbe essere dannosa per il consumo di energia (la patch syndaemon -T non ha funzionato per me).

#!/bin/sh

TRACKPOINT_DEV="TPPS/2 IBM TrackPoint"
SLEEP_TIME=5

OLD_XY=0,0,
while true; do
  NEW_XY=`xinput query-state "$TRACKPOINT_DEV" |grep valu|awk 'BEGIN { FS = "=" } ; {print $2 ","}'|xargs`
    if [ ! "$OLD_XY" = "$NEW_XY" ]; then
      synclient TouchpadOff=1
    else
      synclient TouchpadOff=0
    fi
    sleep $SLEEP_TIME
    OLD_XY="$NEW_XY"
done

Deve essere un po 'fortunato a notare che stai usando il trackpoint, perché può dire le coordinate solo durante ogni intervallo di 5 secondi. In altre parole, è prudente disabilitare il touchpad ma non dovrebbe riattivarlo in modo affidabile quando il trackpoint è inattivo.

Ad ogni modo, mi aiuta molto sul mio ultrabook con il cursore errante di Palm Press.

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.