ฉันมีเมาส์ฉันใช้สำหรับปุ่ม ฉันต้องการปิดใช้งานเฉพาะอินพุตการเคลื่อนไหวของเมาส์ การปิดเซ็นเซอร์ไม่ได้ผล
ฉันมีเมาส์ฉันใช้สำหรับปุ่ม ฉันต้องการปิดใช้งานเฉพาะอินพุตการเคลื่อนไหวของเมาส์ การปิดเซ็นเซอร์ไม่ได้ผล
คำตอบ:
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
เมาส์ของฉันไม่มีคุณสมบัติ '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
ถ้าฉันอ่าน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:]]*}
}
น่าเสียดายที่นี่มีผลข้างเคียงของการปิดใช้งานอินพุตล้อเลื่อนของอุปกรณ์
xinput list 6
(6
อุปกรณ์อยู่ที่ไหน) เอกสารเกี่ยวกับคุณสมบัติสามารถพบได้ที่นี่: x.org/wiki/Development/Documentation/PointerAcceleration