วิธีปิดการใช้งานอินพุตการเคลื่อนไหวของเมาส์ในขณะที่เปิดใช้งานปุ่มเมาส์อยู่?


9

ฉันมีเมาส์ฉันใช้สำหรับปุ่ม ฉันต้องการปิดใช้งานเฉพาะอินพุตการเคลื่อนไหวของเมาส์ การปิดเซ็นเซอร์ไม่ได้ผล

คำตอบ:


9

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

คุณได้รับชื่อของเมาส์ในกรณีนี้ Mouse0

ด้วยคำสั่งต่อไปนี้คุณจะลดความเร็วของเมาส์ลงด้วย 100,000 เท่าซึ่งโดยทั่วไปจะเป็นศูนย์

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

หรือ

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

หากต้องการย้อนกลับคุณสามารถใช้สิ่งเดียวกันได้

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

1
แฮ็คเรียบร้อย คุณสมบัติที่มีอยู่สามารถพบได้ด้วยxinput list 6( 6อุปกรณ์อยู่ที่ไหน) เอกสารเกี่ยวกับคุณสมบัติสามารถพบได้ที่นี่: x.org/wiki/Development/Documentation/PointerAcceleration
Lekensteyn

3

เมาส์ของฉันไม่มีคุณสมบัติ 'Device Accel Constant Deceleration' ฉันยังคงสามารถปิดการเคลื่อนไหวด้วย

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

และเปิดใช้งานอีกครั้งด้วย

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

ฉันยังปิดการใช้งานปุ่มด้วย

xinput set-button-map 9 0 0 0

9 อุปกรณ์เป็นของฉันMitsumi ไฟฟ้าแอปเปิ้ลออฟติคัล USB Mouse

รายการอุปกรณ์

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

2

ถ้าฉันอ่านman 4 mousedrvถูกต้องคุณสามารถตั้งค่าในส่วน CorePointer ของ xorg.conf ของคุณ

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

ซึ่งจะแปลงการเคลื่อนไหวเป็นเหตุการณ์ปุ่มล้อเลื่อนของเมาส์ แต่การตั้งค่าความเฉื่อยจะทำให้ไม่รู้สึกไวเกินกว่าจะลงทะเบียนได้ ในระบบที่ทันสมัยมันเป็น evdev แทน mousedrv สิ่งนี้ยังสามารถตั้งค่าที่รันไทม์โดยใช้ xinput ตัวอย่างเช่น

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

ที่ 17 ควรเป็นหมายเลขอุปกรณ์ของคุณเอง ฉันใช้ฟังก์ชั่นเพื่อรับหมายเลขนี้ตามชื่ออุปกรณ์และเก็บไว้ใน $ device-id ระหว่างสคริปต์เริ่มต้น

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

น่าเสียดายที่นี่มีผลข้างเคียงของการปิดใช้งานอินพุตล้อเลื่อนของอุปกรณ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.