web-dev-qa-db-ja.com

デュアルモニター付きタッチスクリーン

私はubuntu 12.04と2つのモニターを持っています。最初はタッチスクリーンです。

システムは、解像度を3840 * 1080解像度の1つの大画面として認識します。

問題は、タッチキャリブレーションを使用する場合、キャリブレーター画面が両方の画面でサイズ変更されることです。そのため、画面に触れると、ポインターはX軸上で2回移動します。

解決策はありますか?

グラフィック:Twin wiewを搭載したNVIDIA

5
venz

最初に、xinput --listを使用してすべての入力ソースをリストします。

⎡ Virtual core pointer                       id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Sony Vaio Jogdial                         id=8    [slave  pointer  (2)]
⎜   ↳ Advanced Silicon S.A CoolTouch(TM) System id=11   [slave  pointer  (2)]
⎜   ↳ HID-compliant Mouse HID-compliant Mouse   id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Sony Vaio Keys                            id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=9    [slave  keyboard (3)]
    ↳ Power Button                              id=10   [slave  keyboard (3)]
    ↳ IR camera                                 id=12   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=14   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=15   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=16   [slave  keyboard (3)]

興味のあるデバイス(この場合、「Advanced Silicon S.A CoolTouch(TM)System」を使用しています)を取り出し、そのIDをメモします。

次に、入力デバイスをマップするディスプレイを見つける必要があります。最も簡単な方法は、xrandrを使用することです。

Screen 0: minimum 8 x 8, current 3200 x 1080, maximum 16384 x 16384
HDMI-0 connected 1280x1024+1920+0 (normal left inverted right x axis y axis) 338mm x 270mm
   1280x1024     60.02*+
   1280x960      60.00  
   1280x720      60.00    59.94  
   1152x864      75.00    70.00  
   1024x768      60.00  
   800x600       60.32  
   720x480       59.94  
   640x480       59.94    59.93  
LVDS-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
   1920x1080     60.00*+  59.94  

この場合、タッチデバイスを出力LVDS-0にマップします。

最初のステップのID(ここの11)と2番目のステップの画面名(ここのLVDS-0)を組み合わせて、次のコマンドを実行します。

xinput --map-to-output INPUT-IDSCREEN

私の例では、このコマンドは次のようになります。

xinput --map-to-output 11 LVDS-0

タッチデバイスは入力デバイスに適切にマッピングされてはならず、追加の構成は必要ありません。

これらの設定は、リブート間で保持されませんxinputコマンドを永続化する方法 でこの質問を参照してください。

9
RAnders00

Archlinux wikiはこれを解決する方法の最良の説明ですが、ここにもう少し具体的なものがあります。

Xinput --listを実行して、入力デバイスの名前を特定する必要があります。変換値を計算するスプレッドシートを作成しました。

スプレッドシートはこちら: https://docs.google.com/spreadsheets/d/13CNQjWfzpEkHM4ZdCcUWDTdQNaFqQ6TYTwatQsYcHcQ/edit?usp=sharing

あなたの番号を実行しました(デュアル1920x1080ディスプレイ)。

タッチスクリーンが左側にある場合、コマンドは次のようになります(「アドバンストシリコンS.A CoolTouch(TM)システム」は入力デバイスの名前です。次のものに置き換えてください)。

xinput set-prop 'Advanced Silicon S.A CoolTouch(TM) System' --type=float 'Coordinate Transformation Matrix' 0.5 0 0 0 1 0 0 0 1

権利については、次のようにする必要があります。

xinput set-prop 'Advanced Silicon S.A CoolTouch(TM) System' --type=float 'Coordinate Transformation Matrix' 0.5 0 0.5 0 1 0 0 0 1
2
user272160

これはこの問題の最初のGoogle検索結果であるため、私にとってシンプルに見えるソリューションを投稿することにしました。

これを見つけました archlinuxのリンク

xinput --map-to-output <stylus device ID> <screen ID>

だから、「座標変換マトリックス」で遊ぶ必要はありません...

1
Yura

参照: https://wiki.archlinux.org/index.php/Calibrating_Touchscreen

マトリックスは次のいずれかです。

 Touch screen on the left: 0. 5 0 0 0 1 0 0 0 1
 Touch screen on the right: 0. 5 0 0. 5 0 1 0 0 0 1

私はほとんど同じ構成を持っています(ただし、1つが他のものの上に表示されます)。上記のリンクの一番下の行で説明されているように、正しいマトリックスを設定した後、複数回クリックします。 Ubuntuでxorg-serverを再構築する方法が見つかりません。記載されている手順が機能しないことを確認してください。

1
gani