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

21

Eu tenho um laptop com tela sensível ao toque e quero ocultar o ponteiro sempre que tocar na tela. Estou ciente de soluções como Arrumar e startx -nocursormas eu quero o ponteiro para ocultar / mostrar dinamicamente, escondendo se eu usar o touchscreen e mostrando quando eu usar um mouse hardware.

Pensei em criar dois ponteiros separados e aplicar uma das duas soluções acima ao ponteiro da tela de toque, mas nenhuma dessas soluções menciona como direcionar um único ponteiro, e ter vários ponteiros faz as coisas agirem estranhas, e isso não ocultaria o hardware cursor do mouse.

Eu acho que eu posso mais razoável fazer isso fazendo algo parecido com isso , manter o controle do mecanismo de entrada de corrente e executar xinput -cursor [transparent cursor]sempre que o touchscreen é utilizada e xinput -cursor [normal cursor], sempre que um rato normal é usada.

No entanto, observei o xinput e parece que, como o mouse de hardware e a tela sensível ao toque são escravizados no mesmo ponteiro, ambos registram os mesmos eventos no xev, então não tenho certeza de onde obteria as informações necessárias para diferenciar um toque de um clique de mouse. é possível?

erp
fonte

Respostas:

5

Você poderia usar

Para usar, instale-o

sudo apt-get install unclutter

então corra

unclutter -idle 0.01 -root

Observe que o número após inativo significa o tempo antes de ocultar. Nesse caso, é definido como 1/100 de segundo. Você pode tentar alterá-lo para um valor que sempre estaria oculto.

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

КодСерфинг145
fonte
Vi soluções usando a organização, mas isso não diferencia o uso de uma tela sensível ao toque e de um mouse.
erp 23/09
2

Suponho que você use a tela sensível ao toque quando não tiver um mouse e conecte uma ao sistema quando quiser usá-la. Nesse caso, você pode usar udevregras 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 desta resposta .

Lembre-se de que aplicativos individuais são livres para redefinir o cursor dinamicamente, para que seu cursor fique visível novamente quando você passar o mouse pelas janelas. Você pode iniciar / parar unclutterse 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 desativaria completamente a tela sensível ao toque quando o mouse estiver conectado, para que tocar acidentalmente não perturbe o cursor quando você espera que ele siga o mouse.

Dmitry Grigoryev
fonte
essa é uma boa opção, exceto que eu quero esse comportamento para o meu trackpad, não apenas para mouses conectados. Acredito que o udev afeta apenas dispositivos que são adicionados / removidos dinamicamente?
ERP
Você quer dizer que seu trackpad é o seu "mouse de hardware"? Eu diria que você terá que tentar e ver se funciona. O touchpad pode realmente ser visto porudev como removido quando você o desativa usando o botão Fn (supondo que você tenha um).
Dmitry Grigoryev
1

Há uma bifurcação da ferramenta unclutter-fixes por nowrep disponível aqui . Esta versão adiciona uma -touchopção para ocultar automaticamente o cursor sempre que uma entrada de toque é detectada. (O repositório original unclutter-xfixes está aqui )

Uma coisa a ter em atenção é que ele ainda inclui o comportamento de ocultar o cursor após um período especificado. Você pode apenas definir a --timeoutopção com um valor muito alto para contornar isso.

Isso deve funcionar perfeitamente para você. No meu caso, eu tinha uma tela sensível ao toque conectada externamente e, quando volto para o monitor comum, o cursor fica na tela sensível ao toque, então tenho que movê-la de volta para o monitor de onde toquei. O bom é que, depois que eu começar a mover o mouse, o cursor aparecerá para que eu saiba onde está.

Uma boa vantagem dessa opção é que ainda posso usar o mouse normalmente na tela sensível ao toque, se quiser, mas o oculto quando não uso.

bpedman
fonte