触摸屏和鼠标作为单独的输入?

Alk*_*lko 11 linux arch-linux touch-screen

有人可以就如何实现这一点给我一个很好的参考,或者只是告诉我它是如何完成的?谷歌在这里并没有真正帮助我,因为它总是试图给我关于触摸板的建议:/

And*_*ese 9

只要您的触摸屏被检测为无聊的输入设备,您就可以使用xinput. 该工具允许您定义新的主指针(类似于一个鼠标指针的虚拟指针),并从其分离和附加从属指针(实际硬件设备)。

所以你需要做的就是

  1. 创建一个新的主指针
  2. 将您的触摸屏重新连接到这个新的主指针

这与此类似:

  1. 创建新的主指针:

    $ xinput create-master touchy
    
    Run Code Online (Sandbox Code Playgroud)

    这将创建一个新的主键盘/指针对,其中键盘称为»触摸键盘«和指针»触摸指针«:

    $ 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)]
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将您的触摸屏从指针重新连接到新的主指针

    在此示例中,我将假设 »My Cool™ Touchscreen« 是要使用的设备 ( id=14):

    $ xinput reattach 14 15
    
    Run Code Online (Sandbox Code Playgroud)

    这将导致以下结果:

    $ 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)]
    
    Run Code Online (Sandbox Code Playgroud)

现在您的触摸屏应该像一个单独的指点设备。

编辑:为了摆脱第二个鼠标指针,这对于触摸屏来说是多余的,你可以使用这个工具,它利用 XInput2 扩展来单独更改指针。

  • 请参阅编辑。不幸的是(AFAIK)没有标准实用程序可以公开完整的 XInput2-API(需要处理多输入设置并执行 _individual_ 光标更改等操作)。 (2认同)