web-dev-qa-db-ja.com

タッチスクリーンの使用時にマウスカーソルを動的に非表示にする

私はタッチスクリーンのラップトップを持っていて、画面に触れるたびにポインターを非表示にしたいと思っています。 nclutterstartx -nocursor のような解決策を知っていますが、ポインターを動的に非表示/表示し、タッチスクリーンを使用する場合は非表示にし、ハードウェアマウス。

2つの個別のポインター を作成してタッチスクリーンポインターに上記の2つの解決策の1つを適用することを考えましたが、どちらの解決策も単一のポインターをターゲットにする方法については言及していません。ハードウェアマウスカーソルは非表示になりません。

現在の入力メカニズムを追跡し、タッチスクリーンが使用されているときは常にxinput -cursor [transparent cursor]を実行し、通常のマウスが使用されているときは常にxinput -cursor [normal cursor]を実行して、 this 中古。

私はxinputを見てみましたが、ハードウェアマウスとタッチスクリーンの両方が同じポインターにスレーブ化されているため、どちらもxevに同じイベントを登録するので、タッチを区別するために必要な情報をどこで取得できるのか本当にわかりませんマウスクリックから。出来ますか?

21
erp

あなたは使うことができます

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

Sudo apt-get install unclutter

それを実行します

unclutter -idle 0.01 -root

アイドル後の数値は、非表示になるまでの時間を意味することに注意してください。この場合、1/100秒に設定されています。常に非表示になる値に変更してみてください。

カーソルを動かさないと、カーソルが非表示になります。完全に隠すオプションもあると思います。

私はあなたがマウスを持っていないときにタッチスクリーンを使用し、それを使用したいときにシステムにプラグインすると思います。この場合、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"

個人的には、マウスが接続されているときにタッチスクリーンも完全に無効にするので、マウスに追従すると予想されるときに誤って触れてもカーソルの妨げにはなりません。

2

nowrepによるunclutter-fixesツールのフォークがここにあります があります。このバージョンでは、-touchオプションが追加され、タッチ入力が検出されるたびにカーソルが自動的に非表示になります。 (元のunclutter-xfixesリポジトリは here です)

注意すべきことの1つは、指定した期間が経過した後もカーソルを非表示にする動作がまだ含まれていることです。 --timeoutオプションを非常に高い値に設定するだけで、それを回避できます。

これは完全に機能するはずです。私の場合、外付けのタッチスクリーンがあり、通常のモニターに戻ると、カーソルはタッチスクリーン上にあるので、タッチした場所からモニターに戻す必要があります。いいのは、マウスを動かし始めるとカーソルが表示されるので、それがどこにあるのかわかります。

このオプションのすばらしい利点は、必要な場合は引き続きタッチスクリーンで通常のようにマウスを使用できますが、使用しない場合は非表示にできることです。

1
bpedman