Wie deaktiviere ich eine Mausbewegungseingabe, während die Maustasten aktiviert bleiben?

9

Ich habe eine Maus, die ich nur für die Tasten benutze. Ich möchte nur die Bewegungseingabe der Maus deaktivieren. Das physische Abdecken des Sensors funktioniert nicht.

Ian Kelling
quelle

Antworten:

9

Sie können verwenden xinput.

>xinput --list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer            id=4    [slave  pointer  (2)]
⎜   ↳ Mouse0                                id=6    [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard           id=5    [slave  keyboard (3)]
    ↳ Keyboard0

Dort erhalten Sie den Namen der Maus in diesem Fall Mouse0.

Mit dem folgenden Befehl verlangsamen Sie die Geschwindigkeit Ihrer Maus um den Faktor 100000, der dann im Grunde Null ist.

xinput --set-prop 6 'Device Accel Constant Deceleration' 100000

oder

xinput --set-prop Mouse0 'Device Accel Constant Deceleration' 100000

Zum Zurücksetzen können Sie dasselbe verwenden

xinput --set-prop Mouse0 'Device Accel Constant Deceleration' 1
Raphael Ahrens
quelle
1
Ordentlicher Hack. Die verfügbaren Eigenschaften finden Sie mit xinput list 6(wo 6ist das Gerät). Dokumentation zu den Eigenschaften finden Sie hier: x.org/wiki/Development/Documentation/PointerAcceleration
Lekensteyn
3

Meine Maus hat nicht die Eigenschaft "Device Accel Constant Deceleration". Ich konnte die Bewegung mit immer noch deaktivieren

xinput set-prop 9 266 -1    
xinput set-prop 9 269 0 1

und wieder aktivieren mit

xinput set-prop 9 269 1 0
input set-prop 9 266 0.0

Ich habe auch meine Schaltflächen mit deaktiviert

xinput set-button-map 9 0 0 0

Gerät 9 ist meine Mitsumi Electric Apple Optical USB-Maus .

Geräteliste

Device 'Mitsumi Electric Apple Optical USB Mouse':
    Device Enabled (132):   1
    Coordinate Transformation Matrix (134): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Accel Speed (266):     -1.000000
    libinput Accel Speed Default (267):     0.000000
    libinput Accel Profiles Available (268):        0, 0
    libinput Accel Profile Enabled (269):   0, 1
    libinput Accel Profile Enabled Default (270):   1, 0
    libinput Natural Scrolling Enabled (271):       0
    libinput Natural Scrolling Enabled Default (272):       0
    libinput Send Events Modes Available (250):     1, 0
    libinput Send Events Mode Enabled (251):        0, 0
    libinput Send Events Mode Enabled Default (252):        0, 0
    libinput Left Handed Enabled (273):     0
    libinput Left Handed Enabled Default (274):     0
    libinput Scroll Methods Available (275):        0, 0, 1
    libinput Scroll Method Enabled (276):   0, 0, 0
    libinput Scroll Method Enabled Default (277):   0, 0, 0
    libinput Button Scrolling Button (278): 2
    libinput Button Scrolling Button Default (279): 274
    libinput Middle Emulation Enabled (280):        0
    libinput Middle Emulation Enabled Default (281):        0
    Device Node (253):      "/dev/input/event4"
    Device Product ID (254):        1452, 772
    libinput Drag Lock Buttons (282):       <no items>
    libinput Horizonal Scroll Enabled (255):        1
gam3
quelle
2

Wenn ich man 4 mousedrvrichtig gelesen habe , können Sie im Abschnitt CorePointer Ihrer xorg.conf Folgendes festlegen:

Option "EmulateWheel" true
Option "EmulateWheelButton" 0
Option "EmulateWheelInertia" 10000

Dies würde Bewegungen in Ereignisse mit Mausradtasten umwandeln, aber die Trägheitseinstellung würde es zu unempfindlich machen, jemals eine zu registrieren. Auf modernen Systemen ist es evdev statt mousedrv. Dies kann auch zur Laufzeit mit xinput eingestellt werden, zum Beispiel:

xinput --set-prop 17 'Evdev Wheel Emulation' 1
xinput --set-prop 17 'Evdev Wheel Emulation Button' 0
xinput --set-prop 17 'Evdev Wheel Emulation Inertia' 10000

Wobei 17 Ihre eigene Gerätenummer sein sollte. Ich verwende eine Funktion, um diese Nummer anhand des Gerätenamens abzurufen und sie während eines Startskripts in $ device-id zu speichern.

set_device_id() {
  device_id=$(xinput --list | grep -m 1 "$1")
  device_id=${device_id##*id=}
  device_id=${device_id%%[[:space:]]*}
}

Dies hat leider den Nebeneffekt, dass die Eingabe des Scrollrads des Geräts deaktiviert wird.

Ulrich Schwarz
quelle