タッチスクリーンとマウスを別々の入力として使用しますか?

タッチスクリーンとマウスを別々の入力として使用しますか?

これを実現する方法について、誰か良い参考資料を教えてくれませんか、それともやり方だけ教えてください。Google は、常にタッチパッドに関する推奨事項を提示しようとするので、ここではあまり役に立ちません :/

答え1

タッチスクリーンが退屈な入力デバイスとして検出される限り、xinputを使用してこれを行うことができます。このツールを使用すると、新しいマスター ポインター (マウス ポインターに似た仮想ポインター) を定義し、スレーブ ポインター (実際のハードウェア デバイス) をマスター ポインターから切り離したり、マスター ポインターに接続したりできます。

だからあなたがすべきことは

  1. 新しいマスターポインタを作成する
  2. タッチスクリーンをこの新しいマスターポインターに再接続します

これは次のように行います:

  1. 新しいマスター ポインターを作成します。

    $ xinput create-master touchy
    

    これにより、新しいマスター キーボード/ポインター ペアが作成されます。キーボードは「タッチ キーボード」、ポインターは「タッチ ポインター」と呼ばれます。

    $ xinput
       ⎡ Virtual core pointer                          id=2    [master pointer  (3)]
       ⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
       ⎜   ↳ SynPS/2 Synaptics TouchPad                id=10   [slave  pointer  (2)]
       ⎜   ↳ TPPS/2 IBM TrackPoint                     id=11   [slave  pointer  (2)]
       ⎜   ↳ My Cool™ Touchscreen                      id=14   [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)]
           ↳ Video Bus                                 id=7    [slave  keyboard (3)]
           ↳ Sleep Button                              id=8    [slave  keyboard (3)]
           ↳ AT Translated Set 2 keyboard              id=9    [slave  keyboard (3)]
           ↳ ThinkPad Extra Buttons                    id=12   [slave  keyboard (3)]
           ↳ HID 046a:0011                             id=13   [slave  keyboard (3)]
       ⎡ touchy pointer                                id=15   [master pointer  (16)]
       ⎜   ↳ touchy XTEST pointer                      id=17   [slave  pointer  (15)]
       ⎣ touchy keyboard                               id=16   [master keyboard (15)]
           ↳ touchy XTEST keyboard                     id=18   [slave  keyboard (16)]
    
  2. タッチスクリーンのスレーブポインターを新しいマスターに再接続します

    この例では、使用するデバイスとして「My Cool™ Touchscreen」を想定します ( id=14)。

    $ xinput reattach 14 15
    

    結果は次のようになります。

    $ xinput
      ⎡ Virtual core pointer                          id=2    [master pointer  (3)]
      ⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
      ⎜   ↳ SynPS/2 Synaptics TouchPad                id=10   [slave  pointer  (2)]
      ⎜   ↳ TPPS/2 IBM TrackPoint                     id=11   [slave  pointer  (15)]
      ⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
          ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
          ↳ Power Button                              id=6    [slave  keyboard (3)]
          ↳ Video Bus                                 id=7    [slave  keyboard (3)]
          ↳ Sleep Button                              id=8    [slave  keyboard (3)]
          ↳ AT Translated Set 2 keyboard              id=9    [slave  keyboard (3)]
          ↳ ThinkPad Extra Buttons                    id=12   [slave  keyboard (3)]
          ↳ HID 046a:0011                             id=13   [slave  keyboard (3)]
      ⎡ touchy pointer                                id=15   [master pointer  (16)]
      ⎜   ↳ My Cool™ Touchscreen                      id=14   [slave  pointer  (2)]
      ⎜   ↳ touchy XTEST pointer                      id=17   [slave  pointer  (15)]
      ⎣ touchy keyboard                               id=16   [master keyboard (15)]
          ↳ touchy XTEST keyboard                     id=18   [slave  keyboard (16)]
    

これで、タッチスクリーンは個別のポインティング デバイスのように動作するはずです。

編集:タッチスクリーンでは不要な2つ目のマウスポインタを削除するには、次のようにします。これXInput2 拡張機能を利用してポインターを個別に変更するツールです。

関連情報