Nascondere dinamicamente il cursore del mouse quando si utilizza il touchscreen


21

Ho un laptop touchscreen e voglio nascondere il puntatore ogni volta che tocco lo schermo. Sono a conoscenza di soluzioni come il disordine e startx -nocursorvoglio che il puntatore si nasconda / mostri in modo dinamico, nascondendomi se utilizzo il touchscreen e mostrando quando utilizzo un mouse hardware.

Ho pensato di creare due puntatori separati e applicare una delle due soluzioni precedenti al puntatore del touchscreen, ma nessuna di queste soluzioni menziona come indirizzare un singolo puntatore e avere più puntatori rende le cose strane e ciò non nasconderebbe l'hardware cursore del mouse.

Immagino che posso più fare questo ragionevolmente fare qualcosa di simile questo , tenere traccia del meccanismo di corrente di ingresso e l'esecuzione xinput -cursor [transparent cursor]ogni volta che si utilizza il touchscreen e xinput -cursor [normal cursor]ogni volta che viene utilizzato un normale mouse.

Ho guardato xinput però e sembra che sia il mouse hardware che il touchscreen siano slave sullo stesso puntatore, entrambi registrano gli stessi eventi in xev, quindi non sono sicuro di dove avrei trovato le informazioni necessarie per differenziare un tocco da un clic del mouse. È possibile?

Risposte:


5

Puoi usare

Per usarlo, installalo

sudo apt-get install unclutter

quindi eseguirlo

unclutter -idle 0.01 -root

Si noti che il numero dopo il minimo indica il tempo prima che si nasconda. In questo caso è impostato su 1/100 di secondo. Potresti provare a cambiarlo in un valore che sarebbe sempre nascosto.

Questo nasconderà il cursore quando non lo sposti. Sono sicuro che esiste anche un'opzione per nasconderlo completamente.


Ho visto soluzioni che utilizzano il disordine, ma ciò non distingue tra l'uso di un touchscreen e un mouse.
Erp,

2

Suppongo che tu usi il touchscreen quando non hai un mouse e collegane uno al sistema quando vuoi usarlo. In questo caso, è possibile utilizzare le udevregole per gestire il puntatore di conseguenza:

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]"

Le condizioni utilizzate per distinguere un mouse sono prese in prestito da questa risposta .

Tieni presente che le singole applicazioni sono libere di ridefinire il cursore in modo dinamico, quindi il cursore potrebbe diventare di nuovo visibile quando passi il mouse sulle finestre. È possibile avviare / interrompere unclutterinvece se si desidera che tutti i cursori siano nascosti ovunque:

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"

Personalmente disabiliterei del tutto anche il touchscreen quando il mouse è collegato, in modo che toccarlo accidentalmente non disturbi il cursore quando ci si aspetta che segua il mouse.


questa è una buona opzione tranne per il fatto che voglio questo comportamento per il mio trackpad, non solo per i mouse collegati. Credo che udev riguardi solo i dispositivi che vengono aggiunti / rimossi in modo dinamico?
Erp

Vuoi dire che il tuo trackpad è il tuo "mouse hardware"? Direi che dovrai provare a vedere se funziona. Il touchpad può effettivamente essere visto udevcome rimosso quando lo si disabilita utilizzando il pulsante Fn (supponendo che ne possiedi uno).
Dmitry Grigoryev il

1

C'è un fork dello strumento Unclutter-Fixes di nowrep disponibile qui . Questa versione aggiunge -touchun'opzione per nascondere automaticamente il cursore ogni volta che viene rilevato un input tocco. (Il repository unclutter-xfixes originale è qui )

Una cosa da tenere presente è che include ancora il comportamento di nascondere il cursore dopo un periodo di tempo specificato. Puoi semplicemente impostare l' --timeoutopzione su un valore molto alto per aggirare quello.

Questo dovrebbe funzionare perfettamente per te. Nel mio caso avevo un touchscreen collegato esternamente e quando torno al monitor normale il cursore si troverà sul touchscreen, quindi devo spostarlo di nuovo sul monitor da dove ho toccato. La cosa bella è che dopo che ho iniziato a muovere il mouse, il cursore apparirà, quindi so dove si trova.

Un bel vantaggio di questa opzione è che posso ancora usare il mio mouse come al solito sul touchscreen se lo voglio ma lo nascondo quando non lo faccio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.