ดูที่ไดรเวอร์ไม่ใช่แอปพลิเคชัน
คุณจะไม่พบโปรแกรมที่ทำเช่นนี้เนื่องจากทัชแพดทั้งสามประเภทนี้ไดรเวอร์พยายามที่จะสรุปความเป็นตัวแทนของแอปพลิเคชัน:
- Touchpads การรายงานข้อมูลตำแหน่งที่แน่นอนจะถูกแปลโดยไดรเวอร์ Xorg เพื่อการเคลื่อนไหวที่สัมพันธ์กันสำหรับแอปพลิเคชัน แอปพลิเคชันทั่วไปไม่สามารถพูดคุยกับทัชแพดโดยตรง (โดยการออกแบบ) ดังนั้นคุณต้องหาวิธีแก้ไขในไดรเวอร์
- ทัชแพดที่มีความสามารถทั้งในโหมดสัมพัทธ์และโหมดสัมบูรณ์จำเป็นต้องสลับโหมดซึ่งเป็นฮาร์ดแวร์เฉพาะและไม่ทราบถึงแอปพลิเคชัน
- ทัชแพดพื้นฐานบางอย่างไม่มีความสามารถในการรายงานตำแหน่งที่แน่นอน
น่าเสียดายที่แม้ว่าคุณจะมีทัชแพดที่สามารถรายงานค่าสัมบูรณ์ทั้งหมดได้ แต่ไดรเวอร์ทัชแพดส่วนใหญ่จะไม่ยอมให้คุณใช้ในแอพพลิเคชั่น Linux ข้อมูลสัมบูรณ์มีอยู่จริงเนื่องจากผู้ขับขี่สามารถตรวจจับได้ว่าคุณแตะที่ขอบเพื่อเลื่อนดูหรือไม่ ทดสอบสิ่งนี้เพื่อตัวคุณเองโดยใช้evtest
ในเทอร์มินัลเสมือน (เพื่อระงับ X) ทัชแพดของฉัน Synaptics รายงานตำแหน่งที่แน่นอนดังนี้:
Event type 3 (EV_ABS)
Event code 0 (ABS_X)
Value 3332
Min 1472
Max 5648
Fuzz 8
Resolution 39
Event code 1 (ABS_Y)
Value 2017
Min 1408
Max 4806
Fuzz 8
Resolution 79
ความสามารถในการวางอุปกรณ์ Synaptics ในโหมดสัมบูรณ์ใน Xorg ถูกลบออกเมื่อไม่นานมานี้โดยการกระทำนี้ในxf86-input-synaptics
ไดรเวอร์:
Remove absolute mode
Moving a touchpad in absolute mode is unusual - touchpads are disconnected
from the output device, so direct interaction is hard. There appears to be
little usage of it (I haven't seen bug reports from people claiming to use
it). Joe Shaw, author of the code and only known user doesn't have a use for
it anymore, so purge it from the repo.
ไดรเวอร์พื้นฐานทั้งระบบ: evdev
วิธีเดียวที่ฉันเห็นสิ่งนี้เป็นไปได้ในขณะนี้ใน Linux คือการใช้evdev
ไดรเวอร์ใน Xorg มันถูกกล่าวถึงในปี 2010 ในรายชื่อผู้รับจดหมาย Xorg (ข้อความที่ตัดตอนมาด้านล่าง):
ฉันต้องได้ตำแหน่งที่แน่นอนของนิ้วบนทัชแพดแทนที่จะเป็นแค่การเคลื่อนที่สัมพัทธ์
ไดรเวอร์ synaptics ไม่ได้ทำเช่นนี้ แต่ไดรเวอร์ evdev ทำ ดังนั้นคุณต้องกำหนดค่าเซิร์ฟเวอร์ X ของคุณเพื่อใช้ไดรเวอร์ evdev สำหรับทัชแพดแทน ตัวอย่างข้อมูลการกำหนดค่าต่อไปนี้จะทำเพื่อคุณหากคุณใช้เซิร์ฟเวอร์ 1.8 หรือใหม่กว่า
Section "InputClass"
Identifier "evdev touchpad"
MatchIsTouchpad "on"
Driver "evdev"
Option "Mode" "absolute"
EndSection
บันทึกสิ่งนี้เป็น/etc/X11/xorg.conf.d/99-evdev-touchpad.conf
และรีสตาร์ทเซิร์ฟเวอร์ โปรดทราบว่านี่เป็นการเปลี่ยนแปลงลักษณะการทำงานของทัชแพดเท่านั้นไม่ใช่ข้อมูลในเหตุการณ์ แต่หลังจากนั้นข้อมูลก็ยังคงสมบูรณ์อยู่เสมอ นอกจากนี้ด้วยการใช้ evdev แทนที่จะเป็นซินแน็ปติกส์คุณจะสูญเสียความสามารถในการเลื่อนด้วยสองนิ้วแตะหรืออื่น ๆ
บรรทัดล่าง: สร้างคำขอคุณลักษณะ
ฉันเห็นที่ว่างสำหรับคำขอคุณลักษณะในตัวติดตามข้อผิดพลาดต้นน้ำสำหรับไดรเวอร์ synaptics (และอาจเป็นอย่างอื่น) มันจะมีประโยชน์มากหากมีอินเทอร์เฟซใน Xorg เพื่อให้สามารถอ่านค่าตำแหน่งที่แน่นอนของทัชแพดได้ ตัวบล็อคหลักที่ฉันเห็นคือมันอาจจะเป็นฮาร์ดแวร์ที่เฉพาะเจาะจงและยากที่จะใช้งาน
ฉันคิดว่าการพูดคุยกับโจชอว์และ Peter Hutterer อาจเป็นประโยชน์อย่างยิ่งในการดูว่าประวัติศาสตร์ในเรื่องนี้เป็นอย่างไรวิธีทำให้มันเป็นคุณสมบัติที่ยอดเยี่ยมและสิ่งที่คาดหวังจากมัน