Sob o Kubuntu 17.04, estou tentando obter uma configuração de ponteiro duplo, onde um é anexado ao meu mouse como de costume e o outro é anexado à tela sensível ao toque que funciona corretamente enquanto conectado ao ponteiro central ):
$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ My touchscreen id=11 [slave pointer (2)]
⎜ ↳ My mouse id=18 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=15 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
...
Seguindo esta resposta , criei outro ponteiro e anexei a tela sensível ao toque:
$ xinput create-master Touchscreen
$ xinput reattach 11 "Touchscreen pointer"
$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ My mouse id=18 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=15 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
...
⎡ Touchscreen pointer id=21 [master pointer (22)]
⎜ ↳ My touchscreen id=11 [slave pointer (21)]
⎜ ↳ Touchscreen XTEST pointer id=23 [slave pointer (21)]
⎣ Touchscreen keyboard id=22 [master keyboard (21)]
↳ Touchscreen XTEST keyboard id=24 [slave keyboard (22)]
Isso também é funcional, incluindo gestos. O problema é o cursor conectado ao cursor da tela sensível ao toque piscar. Isso não acontece com o ponteiro do núcleo. O que é estranho é que a cintilação só acontece quando eu movo o ponteiro do mouse. Se eu não mover o mouse, o ponteiro da tela sensível ao toque ficará invisível quando a tela sensível ao toque não for usada, o que é muito próximo do que desejo. Idealmente, o ponteiro da tela sensível ao toque ficaria sempre oculto.
Usando xicursorset
como sugerido pela resposta acima . O código finalmente usa XIDefineCursor
para definir a imagem do cursor para ponteiros individuais. Isso simplesmente não fez nada para mim no KDE, sem erros. Se funcionasse, eu colocaria o cursor em uma imagem vazia, o que não tenho certeza se resolveria o problema de cintilação.
Deixando a tela sensível ao toque flutuando por:
$ xinput float 11
$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ My mouse id=18 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=15 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
...
∼ My touchscreen id=11 [floating slave]
Nessa configuração, nenhuma janela do KDE reconhece a tela sensível ao toque, mas, surpreendentemente, o Chrome reconhece gestos como a rolagem com um dedo ou o zoom com dois dedos. Se eu conseguisse esse tipo de funcionalidade em todas as janelas, seria o suficiente para mim.
Para adicionar / remover o ponteiro dinamicamente. Em outras palavras, usando o seguinte script chamado ~/.local/bin/watch-touchscreen.py
:
#!/usr/bin/python
import sys;
from subprocess import call;
while True:
line = sys.stdin.readline()
if line.startswith("button press"):
call(["xinput", "create-master", "Touchscreen"])
call(["xinput", "reattach", "11", "Touchscreen pointer"])
elif line.startswith("button release"):
call(["xinput", "remove-master", "Touchscreen pointer"])
assim:
$ xinput test 11 | ~/.local/bin/watch-touchscreen.py
A idéia é criar um novo ponteiro toda vez que a tela sensível ao toque for tocada e destruí-la quando o toque for liberado, ponto em que a tela sensível ao toque retornará a ser um escravo flutuante. Isso funciona muito brevemente até que a sessão X falhe, forçando-me a fazer o login novamente. Não é uma ideia inteligente criar dinamicamente e destruir os ponteiros de xinput, suponho.
Alguma idéia, soluções alternativas?