Bagaimana cara menonaktifkan input gerakan mouse, sambil membiarkan tombol mouse tetap aktif?

9

Saya punya mouse yang saya gunakan untuk tombol. Saya ingin menonaktifkan hanya input gerakan mouse. Secara fisik menutupi sensor tidak berfungsi.

Ian Kelling
sumber

Jawaban:

9

Anda bisa menggunakannya 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

Di sana Anda mendapatkan nama mouse dalam hal ini Mouse0.

Dengan perintah berikut ini Anda memperlambat kecepatan mouse Anda dengan faktor 100000, yang pada dasarnya nol.

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

atau

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

Untuk mengembalikan Anda dapat menggunakan yang sama

xinput --set-prop Mouse0 'Device Accel Constant Deceleration' 1
Raphael Ahrens
sumber
1
Retas yang rapi. Properti yang tersedia dapat ditemukan dengan xinput list 6(di mana 6perangkat). Dokumentasi tentang properti dapat ditemukan di sini: x.org/wiki/Development/Documentation/PointerAcceleration
Lekensteyn
3

Mouse saya tidak memiliki properti 'Deselerasi Konstan Perangkat Konstan'. Saya masih bisa menonaktifkan gerakan dengan

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

dan mengaktifkannya kembali dengan

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

Saya juga menonaktifkan tombol saya dengan

xinput set-button-map 9 0 0 0

Perangkat 9 adalah Mitsumi Electric Apple Optical USB Mouse .

Daftar perangkat

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
sumber
2

Jika saya membaca man 4 mousedrvdengan benar, Anda dapat mengatur, di bagian CorePointer dari xorg.conf Anda,

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

yang akan mengubah gerakan menjadi peristiwa tombol roda mouse, tetapi pengaturan inersia akan membuatnya terlalu tidak sensitif untuk mendaftar. Pada sistem modern, itu evdev bukan mousedrv. Ini juga dapat diatur saat runtime menggunakan xinput, misalnya:

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

Di mana 17 harus menjadi nomor perangkat Anda sendiri. Saya menggunakan fungsi untuk mendapatkan nomor ini dengan nama perangkat, dan menyimpannya dalam $ device-id selama skrip startup.

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

Sayangnya ini memiliki efek samping menonaktifkan input roda gulir perangkat.

Ulrich Schwarz
sumber