EGalaxドライバーを使用して、1つのタッチスクリーンの上に1つの通常のスクリーンを備えたNVidia GTX260カードを持っています。
Xinputを使用してタッチスクリーンを設定しようとしましたが、正しく設定できません。通常の画面を切断し、「Evdev Axis Calibration」オプションをいじると問題なく動作しますが、通常の画面を再度接続すると、厳しいマッピングがシフトします。タッチスクリーンに触れると、マウスは他の画面の対応する位置に移動します。
「座標変換マトリックス」も「出力へのマップ」も機能しないようです...
どんな助けも大歓迎です!
/ヘンリック
私は今(13.04)同様の問題を抱えていましたが、正しい順序で物事をすれば、xinput map-to-output
が役に立ちました。
xinput map-to-output
は、「座標変換マトリックス」を調整します。xinput_calibrator
は「Evdev Axis Calibration」を設定し、「Coordinate Transformation Matrix」を完全に認識しません。また、常に使用可能な出力領域全体に引き伸ばされて開きます。
つまり、xinput_calibrator
を1つの画面で実行する必要があります。
xrandr --output <non-touch-output> --off
xinput map-to-output <touch input device> <touch-output>
(以前に触れた場合に備えて、「座標変換マトリックス」をリセットします)。
xinput_calibrator
で調整します。
これで、1つの画面で適切に調整されたタッチが表示されます。
(私のタッチスクリーンは当初、X/Yが交換され、Yが反転されていたので、--misclick 0
で2回実行しなければなりませんでした。状況。)
2番目の画面を再度有効にします。xrandr --output <non-touch-output> --on
map-to-output
を再度実行します。
ubuntu 12.04 LTS(64bit)の場合、xinput --helpで正しいコマンドが
xinput map-to-crtc '入力デバイスの名前'出力デバイスの名前
入力デバイスの名前は$ xinput --listで表示されますが、出力デバイスの名前は$ xrandrで表示され、LVDS1またはVGA1などです。
Beniの答え はおそらく(ほとんどではないにしても)一部の人々には機能しますが、私の場合、他のディスプレイが無効になっていてもxinput_calibrator
は依然として混乱しています。また、ベンダーからのクローズドソースドライバーのインストールに偏りはありませんでした。
幸いなことに、この非常にQAと他のソース( EVDEV xorgドキュメンテーション 、および この回答 )の情報を使用すると、すべてを手動でセットアップすることが完全に可能であることがわかりますEVDEVとXorgを使用している限り(現在少なくともKubuntuのデフォルト)。
xinput --list
を介してデバイスIDを見つけます。これは<DEVICE_ID>
と呼ばれます。xinput --list-prop <DEVICE-ID>
を実行し、念のためデフォルト値を書き留めます。xinput --set-prop <DEVICE_ID> "Evdev Axes Swap" 1
を実行します。それ以外の場合、このプロパティは変更しないでください。Evdev Axis Inversion
プロパティによって制御されます-X Y
、ここで0は通常、1は反転します。そう:xinput --set-prop <DEVICE_ID> "Evdev Axis Inversion" 1 0
が実行されます。Evdev Axis Calibration
プロパティはそれを制御し、それは 理論的にはベンダー固有 ですが、少し文字通り(文字通り)理解することができます。必要なことは次のとおりです。Evdev Axis Calibration
がリセットされたかどうかを確認します(私の場合、ptxconfの実行後に発生しました)。その場合は、xinput --set-prop <DEVICE_ID> "Evdev Axis Calibration" <DEFAULT_VALUES_FROM_POINT_1>
を実行します(値は出力ではコンマで区切られますが、入力ではスペースで区切る必要があることに注意してください)。<FAR_RIGHT_OFFSET> <FAR_LEFT_OFFSET> <VERY_TOP_OFFSET> <VERY_BOTTOM_OFFSET>
として記述できます。xinput --list-props <DEVICE_ID>
を実行し、最終値を書き留めます。それでおしまい!xinput_calibration
の出力が示すように、固執する設定を取得するには、xorg confのディレクトリに設定ファイルを追加する必要があります(Ubuntuでは/usr/share/X11/xorg.conf.d/
で、提供されている例では99-calibration.conf
のように十分に低い優先度が付けられています)。
Xinputプロパティ値を準備し、xinput --list
のデバイス名を確認します。これで、次の方法でファイルを作成するだけです。
Section "InputClass"
Identifier "calibration"
MatchProduct "<DEVICE_NAME_FROM_XINPUT_LIST>"
Option "TransformationMatrix" "<VALUES_FROM(Coordinate Transformation Matrix)>"
Option "Calibration" "<VALUES_FROM(Evdev Axis Calibration)>"
Option "SwapAxes" "<VALUE_FROM(Evdev Axes Swap)>"
Option "InvertX" "<X_VALUE_FROM(Evdev Axis Inversion)>"
Option "InvertY" "<Y_VALUE_FROM(Evdev Axis Inversion)>"
EndSection
例えば:
Section "InputClass"
Identifier "calibration"
MatchProduct "ACME USB Touch"
Option "TransformationMatrix" "0.5656 0.000000 0.676576 0.000000 0.765756 0.756233 0.000000 0.000000 1.000000"
Option "Calibration" "50 1366 25 2876"
Option "SwapAxes" "1"
Option "InvertY" "1"
EndSection
再起動後にすべてが機能するかどうかを確認します。これで準備は完了です!
システムトレイにあるグラフィカルツールが必要な場合は、作成したばかりで、他の人に役立つかどうかを確認したいと思います。入力ペンデバイスとマップする画面を選択するだけです。
http://wenhsinjen.github.io/ptxconf/
開始したばかりなので、タブレットや画面の識別に問題がある可能性がありますので、お知らせください。すぐに修正します。また、起動後も以前の構成を保持する予定です-一部の人々がモニターを追加および削除し続ける場合、どの構成がどの画面構成に使用されたかを覚えているかもしれません。
Mint 18.2システムで汎用/ eGalax USBタッチパネルを正しく動作させることはできませんでしたが、自分で答えを見つけましたが、うまくいったことを共有する必要があると考えました。
最初に非タッチモニターを無効にし(Beni Cherniavsky-Paskinが提案したとおり)、xinput_calibrator
を使用してタッチパネルを調整しました。
(システム設定パネルの表示セクションを介して)私の他のモニターを再びオンにしました。その時点で、タッチパネルは適切に調整されていますが、入力は両方のモニターを介してマップされます。
目的のモニター/エリアまでオフセットするために、 このマニュアル を使用して、パネルの「座標変換マトリックス」を再マップしました
$ xinput set-prop "Device Name" --type=float "Coordinate Transformation Matrix" c0 0 c1 0 c2 c3 0 0 1
Device Name
の場合、xinput --list
を使用して、タッチパネルのIDを取得しました。次の出力からid13を取得しました:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SIGMACH1P USB Keyboard id=10 [slave pointer (2)]
⎜ ↳ SOAI Gaming Mouse id=12 [slave pointer (2)]
⎜ ↳ eGalax Inc. USB TouchController id=13 [slave pointer (2)]
前述のマニュアルで説明されているように、パラメーターを計算しました。例えば私にとっては、1900pxモニターによる768px幅のタッチ領域オフセットにより、c0 = 768/(1900+768) = 0.287856
が得られました。このコマンドで終わった:
$ xinput set-prop 13 --type=float "Coordinate Transformation Matrix" 0.287856, 0.000000, 0.712114, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
これですべて正常に動作しました。ところで私はいくつかの問題がありましたが、実際に必要な場合はparams idkに小数点以下6桁の精度しか使用していなかった場合、またはおそらく混乱していました。