Escondendo o cursor do mouse dinamicamente ao usar a tela sensível ao toque

19

Eu tenho um laptop com tela sensível ao toque e quero ocultar o ponteiro sempre que toco na tela. Estou ciente de soluções como organizando e startx -nocursor mas eu quero que o ponteiro se esconda / mostre dinamicamente, escondendo se eu usar a tela de toque e mostrando quando eu uso um mouse de hardware.

Eu pensei em fazer dois indicadores separados e aplicar um dos as duas soluções acima para o ponteiro da tela sensível ao toque, mas nenhuma dessas soluções menciona como direcionar um único ponteiro, e ter vários ponteiros faz as coisas parecerem estranhas, e isso não ocultaria o cursor do mouse de hardware.

Eu acho que posso razoavelmente fazer isso fazendo algo como this , mantendo o controle do mecanismo de entrada atual e executando xinput -cursor [transparent cursor] sempre que a tela de toque for usada e xinput -cursor [normal cursor] sempre que um mouse normal for usado.

No entanto, eu olhei para o xinput e parece que desde que o mouse de hardware e a tela sensível ao toque estejam no mesmo ponteiro, ambos registram os mesmos eventos no xev, então não tenho certeza de onde obter as informações necessárias diferencie um toque de um clique do mouse. é possível?

    
por erp 24.03.2015 / 12:31

2 respostas

4

Você poderia usar

Para usar, instale-o

sudo apt-get install unclutter

execute-o

unclutter -idle 0.01 -root

Observe que o número depois de inativo significa o tempo antes que ele oculte. Neste caso, é definido como 1/100 de segundo. Você poderia tentar alterá-lo para um valor que estaria sempre oculto.

Isso ocultará o cursor quando você não o mover. Tenho certeza de que há também uma opção para ocultá-lo completamente.

    
por 13.09.2015 / 13:48
2

Suponho que você use a tela sensível ao toque quando não tiver um mouse e conecte um no sistema quando quiser usá-lo. Nesse caso, você pode usar as regras udev para gerenciar seu ponteiro de acordo:

ACTION=="add", ATTRS{bInterfaceProtocol}=="02", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceSubClass}=="01", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/user/.Xauthority", ENV{REMOVE_CMD}="/usr/bin/xinput -cursor [transparent cursor]", RUN+="/usr/bin/xinput -cursor [normal cursor]"

As condições usadas para distinguir um mouse são emprestadas de esta resposta .

Tenha em mente que aplicativos individuais são livres para redefinir o cursor dinamicamente, para que o cursor fique visível novamente quando você passar o mouse sobre as janelas. Você pode iniciar / parar unclutter se quiser que todos os cursores estejam ocultos em todos os lugares:

ACTION=="add", ATTRS{bInterfaceProtocol}=="02", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceSubClass}=="01", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/user/.Xauthority", ENV{REMOVE_CMD}="/bin/sh -c unclutter&", RUN+="/usr/bin/killall unclutter"

Pessoalmente, eu também desabilitaria totalmente a tela sensível ao toque quando o mouse estivesse conectado, para que tocar acidentalmente nela não perturbe o cursor quando você espera que ele siga o mouse.

    
por 20.10.2015 / 11:59

Tags