アプリケーションではなく、ドライバーを見てください
これらの3種類のタッチパッドにより、ドライバーはアプリケーションへの単一の表現に抽象化しようとするため、これを行うプログラムは見つかりません。
- 絶対位置データを報告するタッチパッドは、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
XorgでSynapticsデバイスを実際に絶対モードにする機能は、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 のドライバーを使用することです。それはされた議論のXorgメーリングリスト(以下抜粋)に2010年に戻って:
単なる相対移動ではなく、タッチパッド上の指の絶対位置を取得する必要があります。
synapticsドライバーはこれを行いませんが、evdevドライバーは行います。そのため、代わりにタッチパッド用のevdevドライバーを使用するようにXサーバーを構成する必要があります。サーバー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を使用すると、2本指でのスクロール、タップなどの機能が失われます。
結論:機能リクエストを作成する
synapticsドライバー(および他のドライバー)のアップストリームバグトラッカーに機能リクエストの余地があります。タッチパッドの絶対位置の値を読み取ることができるように、Xorgにインターフェースがあると非常に便利です。私が見る主なブロッカーは、これが非常にハードウェア固有であり、したがって実装が難しいかもしれないということです。
Joe ShawとPeter Huttererと話すことは、これの歴史が正確に何であるか、どのようにそれを素晴らしい機能要求にするか、そしてそれから何を期待するかを見るために大きな価値があると思います。