Touchscreen e mouse como entradas separadas?

10

Alguém pode me dar uma boa referência sobre como conseguir isso, ou apenas me dizer como é feito? O Google não está realmente me ajudando aqui, pois sempre tenta me dar recomendações no touchpad: /

Alko
fonte

Respostas:

9

Enquanto sua tela sensível ao toque for detectada como um dispositivo de entrada chato, você poderá fazer isso com xinput. Essa ferramenta permite definir novos ponteiros mestre (o ponteiro virtual que se assemelha a um ponteiro do mouse) e desanexar e anexar ponteiros escravos (os dispositivos de hardware reais) de e para ele.

Então, tudo que você precisa fazer é

  1. crie um novo ponteiro mestre
  2. reconecte a tela sensível ao toque a esse novo ponteiro mestre

Isso é feito da seguinte maneira:

  1. Crie o novo ponteiro mestre:

    $ xinput create master touchy
    

    Isso cria um novo par de teclado / ponteiro mestre, em que o teclado é chamado »teclado sensível ao toque« e o ponteiro sensível ao ponteiro »:

    $ 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. Conecte novamente o ponteiro escravo da tela de toque ao novo mestre

    Neste exemplo, assumirei que »My Cool ™ Touchscreen« é o dispositivo a ser usado ( id=14):

    $ xinput reattach 14 15
    

    Isso resultará no seguinte:

    $ 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)]
    

Agora, a tela sensível ao toque deve funcionar como um dispositivo apontador individual.

Editar: para se livrar do segundo ponteiro do mouse, que é supérfluo para uma tela sensível ao toque, você pode usar esta ferramenta, que utiliza a extensão XInput2 para alterar os ponteiros individualmente.

Andreas Wiese
fonte
impressionante, obrigado: D meu novo dispositivo apontador está funcionando! Mas agora vejo dois mouses na tela: P
Alko
2
Veja Editar. Infelizmente (AFAIK), não há utilitário padrão que exponha a API XInput2 completa (necessária para lidar com configurações de várias entradas e fazer coisas como a alteração individual do cursor).
Andreas Wiese 15/05
@AndreasWiese Obrigado pela informação, xicursorsetnão funciona para mim no KDE, nada acontece. Alguma ideia?
Ayberk Özgür