Wie deaktiviere ich das Touchpad, während ich den Trackpoint auf einem Thinkpad verwende?

21

Thinkpads (z. B. X230, die ich verwende) verfügen sowohl über einen Trackpoint als auch über ein Touchpad. Das Touchpad ist beim Tippen deaktiviert.

Wenn ich jedoch den Trackpoint verwende, berühre ich häufig auch das Touchpad und generiere Mausklicks, die ich vermeiden möchte. Hat jemand eine Idee, wie man Mausklicks auf dem Touchpad deaktiviert, wenn der Trackpoint verwendet wird?

EDIT: Kann jemand erklären, wie die Option zum Deaktivieren des Touchpads beim Tippen funktioniert? Was wird hinter den Kulissen gemacht? Handelt es sich um einen xinput-Konfigurationsbefehl, und wenn ja, um welchen?

EDIT2: Klarstellung; Das manuelle Deaktivieren des Touchpads (auch mit einer Verknüpfung) ist hier nicht das Problem. Dies sollte genauso funktionieren wie die Option "Touchpad beim Tippen deaktivieren", da ich Touchpad und Trackpoint austauschbar verwende (am häufigsten verwende ich Touchpad zum Scrollen und Trackpoint zum Bewegen des Cursors).

Januar
quelle
Das wäre interessant. Die Anordnung der Tastatur trägt zu Streugesten bei, die den ordnungsgemäßen Betrieb beeinträchtigen. Ich glaube nicht, dass dies mit aktuellen Optionen möglich ist, aber vielleicht in der Zukunft? Ich muss zwei Hände benutzen, um zu tippen und zu zeigen, wobei ich meine (rechte) Hand hoch wölbe, um ein Bürsten / Anstoßen des Trackpads zu vermeiden.
Fleamour
Im Moment habe ich Mausklicks mit dem Touchpad deaktiviert. In den meisten Fällen verwende ich die Schaltflächen oben auf dem Touchpad.
Januar

Antworten:

10

Deaktivieren des Touchpads, wenn die Tastatur verwendet wird

Diese Funktion wird vom syndaemonDienstprogramm aus dem xserver-xorg-input-synapticsPaket ausgeführt. Sie können Optionen wie die Leerlaufzeit, die Abrufhäufigkeit usw. einstellen (siehe Hilfe zur Laufzeit ):

Verwendung: syndaemon [-i Leerlaufzeit] [-m Abfrageverzögerung] [-d] [-t] [-k]
  -i Wie viele Sekunden nach dem letzten Tastendruck noch gewartet werden muss
     Aktivieren des Touchpads. (Standard ist 2.0s)
  -m Wie viele Millisekunden bis zur nächsten Umfrage warten müssen.
     (Standard ist 200ms)
  ...
  -t Deaktiviert nur das Tippen und Scrollen, nicht die Mausbewegungen.

Hier ist der Quellcode für syndaemon.c.

  • Die wichtigen Funktionen sind keyboard_activity(...)undmain_loop(...)
  • keyboard_activityVerwendet den XQueryKeyMap- API-Aufruf, um den aktuellen Status der Tastatur (1 Bit pro Taste) abzurufen , und vergleicht ihn dann mit dem letzten (alten) Status. Wenn sie unterschiedlich sind, wird 1 zurückgegeben
  • main_loopAbfrage keyboard_activityalle mMillisekunden und basierend auf der "letzten Aktivitätszeit" und der keyboard_activityRückgabe von true oder false wird entschieden, ob das Touchpad deaktiviert oder aktiviert wird.
  • Die dp_get_deviceFunktion veranschaulicht, wie X Eingabegeräte aufgelistet werden. Sie sollten in der Lage sein, dies und die keyboard_activityFunktion zu ändern, um auch nach Trackpoint-Aktivitäten zu suchen.

  • Das xinputTool listet Geräte und IDs auf, zum Beispiel "

    ID des virtuellen Kernzeigers = 2 [Hauptzeiger (3)]
    ⎜ ↳ XTEST-Zeiger-ID des virtuellen Kerns = 4 [Slave-Zeiger (2)]
    ⎜ ↳ SynPS / 2 Synaptics TouchPad-ID = 11 [Slave-Zeiger (2)]
    ⎜ ↳ TPPS / 2 IBM TrackPoint-ID = 12 [Slave-Zeiger (2)]

  • Sie können diese (die ID) über die XListInputDevices- Funktion abrufen

  • Danach müssen Sie mithilfe des XOpenDevice ein Gerätehandle aus der ID abrufen
  • Anschließend verwenden Sie die XQueryDeviceState- Funktion, um die Koordinaten des TrackPoint-Zeigers abzurufen . Ähnlich wie bei der vorhandenen Schleife rufen Sie diese regelmäßig ab und prüfen, ob sich die Koordinaten geändert haben (dh der TrackPoint wird verwendet). Mit dieser Option können Sie das Touchpad ein- und ausschalten
  • Sie können das xinputDienstprogramm mit dem query-stateSchalter und der Geräte-ID verwenden, um zu überprüfen, ob Ihre Programmierung korrekt ist. Beispiel:

    $ xinput query-state 12
    2 Klassen:
    ButtonClass
    Taste [1] = auf
    Taste [2] = auf
    Taste [3] = auf
    Taste [4] = auf
    Taste [5] = auf
    Taste [6] = auf
    Taste [7] = auf
    ValuatorClass Mode = Relative Nähe = In
    Bewerter [0] = 854
    Bewerter [1] = 867
    
  • Sie interessieren sich für die Bewertungswerte , bei denen es sich um die X- und Y-Koordinaten des TrackPoints handelt
  • xinputWeitere Tipps finden Sie in der Quelle
  • So ändern Sie dieses Paket und erstellen es neu:

    1. Holen Sie sich die Quelle mit apt-get source...
    2. Nehmen Sie Ihre Änderungen an vor tools/syndaemon.c
    3. Deaktivieren Sie die vorhandenen syndaemonPatches, indem Sie die Zeilen 118...und 124...auskommentierendebian/patches/series
    4. Erstellen Sie Ihr geändertes Paket mit dpkg-buildpackage -us -ucund die deb-Dateien werden im übergeordneten Verzeichnis sein.
ish
quelle
1
Da das Kopfgeld in drei Tagen abläuft, hätte ich ein Abkommen mit Ihnen (es sei denn, es erscheint eine bessere Antwort): Ich werde Ihnen das Kopfgeld zuweisen, wenn Sie mich auf die API für die Abfrage eines Geräts anhand der xinput-ID und verweisen Geben Sie einen Link zu einer Seite an, die beschreibt, wie ein Deb-Paket aus geänderten Quellen erstellt wird. Dann könnte ich diesen Ansatz anwenden. Wäre das in Ordnung?
Januar
Entschuldigung, ich war weg. Das hört sich gut an, ich werde versuchen, die Informationen zu finden und die Antwort in ein paar Stunden zu bearbeiten.
ish
keine Sorgen! das ist in Ordnung
Januar
1
Wie versprochen, bekommen Sie das Kopfgeld. Ich akzeptiere die Antwort jedoch nicht, da ich die Lösung zuerst codieren muss.
Januar
1
@Januar, sind Sie sich nicht sicher, ob Sie Ihre Lösung bereits codiert haben? Ich habe syndaemon gepatcht, um die Überwachung des Trackpoints zu unterstützen. github.com/eyko/xf86-input-synaptics (hier eintragen github.com/eyko/xf86-input-synaptics/commit/… ) Um den TrackPoint zu überwachen, müssen Sie beim Ausführen von syndaemon das Flag -T-Option übergeben.
Vince
4

Als Erstes müssen Sie Ihre Touchpad-ID kennen. Führen Sie dazu die folgenden Schritte aus

Öffnen Sie zuerst das Terminal und führen Sie diesen Befehl aus

~$ xinput --list

Hier bekommen wir das Touchpad id = <id Number>

Danach öffnen Sie die Tastaturkürzel und fügen diese unter zwei Befehlen mit Ihren Tastaturkürzeln hinzu.

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

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

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

neuer Benutzer
quelle
Danke, aber das manuelle Deaktivieren des Touchpads ist hier nicht das Problem (auch nicht mit einer Verknüpfung), und ich weiß, wie es geht. Die Idee ist, das Touchpad automatisch zu deaktivieren, während Trackpoint verwendet wird. Auf ähnliche Weise wird das Touchpad automatisch deaktiviert , wenn die Tastatur verwendet wird (siehe die Einstellung "Touchpad während der Eingabe deaktivieren" in den Einstellungen "Maus und Touchpad").
Januar
0

Hier ist eine Low-Tech-Lösung, die möglicherweise schlecht für den Stromverbrauch ist (der syndaemon -T-Patch hat bei mir nicht funktioniert).

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

Es muss ein bisschen Glück haben, zu bemerken, dass Sie den Trackpoint verwenden, da er nur die Koordinaten in jedem 5-Sekunden-Intervall erkennen kann. Mit anderen Worten, es ist konservativ, das Touchpad zu deaktivieren, sollte es jedoch nicht zuverlässig wieder aktivieren, wenn der Trackpoint inaktiv ist.

Wie auch immer, es hilft mir sehr auf meinem Ultrabook mit wandernden Cursor von Palm Press.

Covener
quelle