タッチスクリーンを使用するときにマウスカーソルを動的に非表示にします。

タッチスクリーンを使用するときにマウスカーソルを動的に非表示にします。

タッチスクリーンノートパソコンがありますが、画面に触れるときにポインタを隠したいです。私はこの解決策を知っています。整えるそしてstartx -nocursorしかし、ポインタを動的に非表示または表示し、タッチスクリーンを使用している場合は非表示にし、ハードウェアマウスを使用している場合は表示したいと思います。

作るか心配です。2つの独立したポインタ上記の2つのソリューションのうちの1つをタッチスクリーンポインタに適用しましたが、両方のソリューションは単一のポインタ位置を指定する方法について言及していません。

私の考えでは、私はこれを最も合理的にすることができると思います。これ、現在の入力メカニズムを追跡し、xinput -cursor [transparent cursor]タッチスクリーンを使用するときと通常のマウスを使用するときの両方をxinput -cursor [normal cursor]実行します。

xinputを見てみると、ハードウェアマウスとタッチスクリーンの両方が同じポインタに依存しているので、両方ともxevに同じイベントを登録するようです。したがって、タッチクリックとタッチスクリーンを区別するために必要な情報をどこで取得できるのかわかりません。マウスクリック。可能ですか?

答え1

使用できる

使用するにはインストールしてください。

sudo apt-get install unclutter

その後実行

unclutter -idle 0.01 -root

アイドル後の数字は、隠す前の時間を示します。この例では1/100秒に設定されています。常に隠された値に変更してみることができます。

カーソルを動かさないとカーソルが隠されます。完全に隠すオプションがあると確信しています。

答え2

一つあるNowrepのきれいな修正ツールフォークはここで利用可能です。。このリリースでは、-touchタッチ入力が検出されたときにカーソルを自動的に非表示にするオプションが追加されました。 (元のunclutter-xfixesリポジトリは次のとおりです。ここ)

注目すべき点の1つは、指定された時間が経過してもカーソルを隠す動作がまだ含まれていることです。--timeoutこのオプションを非常に高い値に設定すると、この問題を解決できます。

これはあなたにとてもよく合います。私の場合は、外部に接続されたタッチスクリーンがあり、通常のモニターに戻るとカーソルがタッチスクリーンにあるため、タッチした場所からモニターに戻す必要があります。良いことは、マウスを動かし始めるとカーソルが現れ、それがどこにあるのかを知ることができるということです。

このオプションの良い利点は、必要に応じてタッチスクリーンでマウスを通常どおりに使用できますが、そうでない場合は非表示になることです。

答え3

マウスがない場合はタッチスクリーンを使用し、必要に応じてシステムにマウスを接続することを想像してください。この場合、udevルールを使用してそれに応じてポインタを管理できます。

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

マウスを区別するために使用される条件は、以下で借用された。この回答

個々のアプリケーションは自由に動的にカーソルをオーバーライドできるため、アプリケーションウィンドウの上にマウスを置くとカーソルが再表示される可能性があります。unclutterすべてのカーソルをどこからでも隠すには、以下を開始/停止できます。

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"

個人的には、マウスを接続するときにタッチスクリーンを完全に無効にして、カーソルがマウスに沿って移動するときに誤ってタッチしてもカーソルを妨げないようにします。

関連情報