Nhìn vào trình điều khiển, không phải ứng dụng
Bạn sẽ không tìm thấy một chương trình làm điều này, vì ba loại bàn di chuột này, các trình điều khiển cố gắng trừu tượng hóa thành một đại diện duy nhất cho các ứng dụng:
- Bàn di chuột báo cáo dữ liệu vị trí tuyệt đối đang được trình điều khiển Xorg dịch sang chuyển động tương đối cho các ứng dụng. Một ứng dụng thông thường không thể nói chuyện trực tiếp với bàn di chuột (theo thiết kế), vì vậy bạn thực sự phải tìm kiếm một giải pháp trong trình điều khiển.
- Bàn di chuột có khả năng cả hai chế độ tương đối và tuyệt đối cần chuyển đổi các chế độ, rất cụ thể về phần cứng và không nhận biết ứng dụng.
- Một số bàn di chuột cơ bản hơn không có khả năng báo cáo các vị trí tuyệt đối.
Thật không may, ngay cả khi bạn có một bàn di chuột có khả năng báo cáo tất cả các giá trị tuyệt đối, hầu hết các trình điều khiển bàn di chuột không cho phép bạn sử dụng chúng trong các ứng dụng Linux. Dữ liệu tuyệt đối thực sự ở đó, vì trình điều khiển có thể phát hiện xem bạn có chạm vào nó ở các cạnh để cuộn không. Tự kiểm tra điều này bằng cách sử dụng evtest
trong một thiết bị đầu cuối ảo (để tạm dừng X). Bàn di chuột Synaptics của tôi báo cáo các vị trí tuyệt đối như sau:
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
Khả năng thực sự đặt một thiết bị Synaptics ở chế độ tuyệt đối trong Xorg đã bị loại bỏ gần đây bởi cam kết này trong xf86-input-synaptics
trình điều khiển:
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.
Hệ thống trình điều khiển cơ bản rộng: evdev
Cách duy nhất tôi thấy điều này là có thể tại thời điểm này trong Linux là sử dụng evdev
trình điều khiển trong Xorg. Nó đã được thảo luận trở lại vào năm 2010 trong danh sách gửi thư của Xorg (đoạn trích dưới đây):
Tôi phải có được vị trí tuyệt đối của một ngón tay trên bàn di chuột chứ không chỉ là chuyển động tương đối.
Trình điều khiển synap không làm điều này, nhưng trình điều khiển evdev thì không. Vì vậy, bạn cần định cấu hình máy chủ X của mình để sử dụng trình điều khiển evdev cho bàn di chuột thay thế. Đoạn mã cấu hình sau sẽ thực hiện điều đó cho bạn với điều kiện bạn đang chạy máy chủ 1.8 trở lên.
Section "InputClass"
Identifier "evdev touchpad"
MatchIsTouchpad "on"
Driver "evdev"
Option "Mode" "absolute"
EndSection
Lưu cái này làm /etc/X11/xorg.conf.d/99-evdev-touchpad.conf
và khởi động lại máy chủ. Lưu ý rằng điều này chỉ thay đổi hành vi của chính bàn di chuột, không phải dữ liệu trong các sự kiện nhưng sau đó, dữ liệu đó luôn luôn tuyệt đối. Ngoài ra, bằng cách sử dụng evdev thay vì synap, bạn sẽ mất khả năng cuộn bằng hai ngón tay, chạm, v.v.
Dòng dưới cùng: tạo một yêu cầu tính năng
Tôi thấy phòng cho một yêu cầu tính năng trên bugtracker ngược dòng cho trình điều khiển synap (và có thể cả những người khác). Sẽ rất hữu ích khi có một giao diện trong Xorg để có thể đọc các giá trị vị trí tuyệt đối của bàn di chuột. Các trình chặn chính tôi thấy là điều này có thể rất cụ thể về phần cứng và do đó khó thực hiện.
Tôi nghĩ rằng việc nói chuyện với Joe Shaw và Peter Hutterer cũng có thể có giá trị lớn để xem chính xác lịch sử trong đó là gì, làm thế nào để biến nó thành một yêu cầu tính năng tuyệt vời và những gì mong đợi từ nó.