
私は 1366x768 タッチスクリーンを搭載した HP ラップトップを持っています。800x600 の解像度を必要とするキオスク ソフトウェアを実行する必要があるため、xrandr で設定しました。
xrandr --output eDP-1 --mode 800x600
見た目は良いですね。xrandr がアスペクト比を維持するために画面の両側に黒いバーを追加したようです。
問題は、画面をタッチしたときに発生します。画面の中央から遠くをタッチするほど、カーソルがずれていきます。画面をタッチすると、カーソルの位置を計算するために、サイドの黒いバーが考慮されるようです。たとえば、物理画面の 25% をタッチすると、カーソルは表示画面の 25% に配置され、位置が揃います。
使ってみたこのリンクタッチスクリーンを調整しましたが、まったく違いはありませんでした。
答え1
すでにご存知のとおり、タッチ スクリーンの座標から画面の座標へのマッピングは、変換マトリックスによって制御されます。
通常、システムはタッチ スクリーンが画面領域全体に広がるものと想定しており、これはほとんどの状況で正しいです。ただし、表示領域がタッチ領域よりも大きい場合 (複数のモニターなど) または小さい場合は、その変換マトリックスを変更する必要があります。
Coordinate Transformation Matrix
従来は、を介して設定する必要がありましたxinput
。しかし、 を使用しているためlibinput
、次の 2 つの違いがあります。
- この
xinput
物件はlibinput Calibration Matrix
- 変換行列の計算方法は異なる
判断するとReinderien の投稿「逆行列変換を行うのが適切です」。
正直どうやってやるのか分からないのですが、幸いなことに彼はxcal、タッチスクリーンを調整します。
前提条件:
python3、tkinter、numpy (sudo apt-get install python3 pyhton3-tk python3-numpy
ターミナルで実行してインストールします)。
ダウンロードxcalそしてそれを実行します。