เพียงบังคับให้ตัวชี้ข้ามพิกเซลนี่คือวิธี:
อุปกรณ์อินพุตรายการแรก:
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ PixArt USB Optical Mouse id=10 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech Touchpad id=15 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ USB2.0 UVC 2M WebCam id=9 [slave keyboard (3)]
↳ Asus Laptop extra buttons id=13 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=14 [slave keyboard (3)]
↳ USB Keyboard id=11 [slave keyboard (3)]
↳ USB Keyboard id=12 [slave keyboard (3)]
ในตัวอย่างที่เราเห็น id ของเมาส์คือ 10 รายการถัดไปคุณสมบัติของมัน:
$ xinput list-props 10
Device 'PixArt USB Optical Mouse':
Device Enabled (140): 1
Coordinate Transformation Matrix (142): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (265): 0
Device Accel Constant Deceleration (266): 1.000000
Device Accel Adaptive Deceleration (267): 1.000000
Device Accel Velocity Scaling (268): 10.000000
Device Product ID (260): 2362, 9488
Device Node (261): "/dev/input/event5"
Evdev Axis Inversion (269): 0, 0
Evdev Axes Swap (271): 0
Axis Labels (272): "Rel X" (150), "Rel Y" (151), "Rel Vert Wheel" (264)
Button Labels (273): "Button Left" (143), "Button Middle" (144), "Button Right" (145), "Button Wheel Up" (146), "Button Wheel Down" (147), "Button Horiz Wheel Left" (148), "Button Horiz Wheel Right" (149)
Evdev Middle Button Emulation (274): 0
Evdev Middle Button Timeout (275): 50
Evdev Third Button Emulation (276): 0
Evdev Third Button Emulation Timeout (277): 1000
Evdev Third Button Emulation Button (278): 3
Evdev Third Button Emulation Threshold (279): 20
Evdev Wheel Emulation (280): 0
Evdev Wheel Emulation Axes (281): 0, 0, 4, 5
Evdev Wheel Emulation Inertia (282): 10
Evdev Wheel Emulation Timeout (283): 200
Evdev Wheel Emulation Button (284): 4
Evdev Drag Lock Buttons (285): 0
เราต้องการ«เมทริกซ์การแปลงพิกัด»โปรดจำ№142
โดยการเปลี่ยนคุณสมบัตินี้เราสามารถเพิ่มความเร็วของตัวชี้ มันเป็นเมทริกซ์การเปลี่ยนแปลงใช้ในการคำนวณการเคลื่อนไหวของตัวชี้ จากลิงค์:
โดยค่าเริ่มต้น CTM สำหรับอุปกรณ์อินพุตทุกตัวใน X คือเมทริกซ์เอกลักษณ์ ตัวอย่างเช่นสมมติว่าคุณแตะหน้าจอสัมผัสที่จุด (400, 197) บนหน้าจอ:
⎡ 1 0 0 ⎤ ⎡ 400 ⎤ ⎡ 400 ⎤
⎜ 0 1 0 ⎥ · ⎜ 197 ⎥ = ⎜ 197 ⎥
⎣ 0 0 1 ⎦ ⎣ 1 ⎦ ⎣ 1 ⎦
พิกัด X และ Y ของเหตุการณ์อุปกรณ์เป็นอินพุตในเมทริกซ์ที่สองของการคำนวณ ผลลัพธ์ของการคำนวณคือตำแหน่งที่พิกัด X และ Y ของเหตุการณ์ถูกแมปกับหน้าจอ ตามที่แสดงเมทริกซ์เอกลักษณ์จะแมปอุปกรณ์พิกัดกับพิกัดหน้าจอโดยไม่มีการเปลี่ยนแปลงใด ๆ
ดังนั้นเราต้องการเพิ่มค่าตามxและyซึ่งเป็นการเพิ่มความเร็วของตัวชี้ ตัวอย่างจากพีซีของฉัน:
$ xinput set-prop 10 142 2.400000, 0.000000, 0.000000, 0.000000, 2.400000, 0.000000, 0.000000, 0.000000, 1.000000
xinput set-prop <device-id> <property-number> <property-values>
มันเป็น เล่นกับสิ่งนี้จนกว่าคุณจะพบคนที่เหมาะสม หมายเหตุ: อย่าเปลี่ยนค่าสุดท้ายของเมทริกซ์ นั่นเป็นข้อผิดพลาดของฉันเมื่อฉันพยายามที่จะทำงาน - ในกรณีนี้คุณจะไม่เห็นความแตกต่าง
กิตติกรรมประกาศ: ฉันรู้สึกขอบคุณ Simon Thum จากรายชื่อผู้รับจดหมาย Xorg เขาเป็นคนหนึ่งที่ให้คำแนะนำเกี่ยวกับเมทริกซ์
UPD : หมายเหตุเกม Windows บางเกมที่รันด้วย Wine อาจมีพฤติกรรมตัวชี้แปลก ๆ(เช่นสังเกตว่าเป้าหมายใน Counter Strike 1.6 เก่าลดลงจนกระทั่งมันจ้องมองที่พื้นไม่ว่าคุณจะเลื่อนเมาส์อย่างไร)ในกรณีนี้เพิ่งรีเซ็ตxและyของ CTM ถึง1ก่อนเริ่มเกม