監視スクリプトのxinput

監視スクリプトのxinput

私のラップトップのタッチスクリーンにひびが入った。現地のASUS技術者からタッチスクリーン以外の製品もこれ以上生産していないため、交換できないという話を聞きました。

他のすべての点で、このラップトップは優れたノートブックであり、外部モニタで使用するとうまく機能しますが、画面の亀裂のためにセッションを妨げるランダムなタッチイベントが発生しました。

画面を無効にすると、xinput --disable 17問題は解決されますが、不明なイベントによって画面が再び有効になるようです。次のようにデバイスで時計を設定できます。

 xinput --watch-props 17
 Device 'USBest Technology SiS HID Touch Controller':
 Device Enabled (177):  1
 ....

「アクティブ化」を解析してdisable

したがって、スクリプトでは、おそらくサービスとして実行して、画面が再び有効になったときに再び無効にすることができることを願っています。ただし、このスクリプトはまったく出力を生成しません。

 #!/bin/bash
 xinput --watch-props 17 | 
 while read event; do
    echo "$event"
 done

この形式を使用するinotifywaitスクリプトが複数あり、ip monitorすべて期待どおりに動作しますが、ここには問題があります。

答え1

inotifywait画面を積極的に再度無効にする代わりに、デバイスが不要であることをXサーバーに通知できます。

/etc/X11/xorg.conf.d/99-no-touch.conf次のようなものを作成してこれを実行できます。

Section "InputClass"
    Identifier "Disable a cracked touch screen"
    MatchProduct "USBest Technology SiS HID Touch Controller"
    # completely disregard the broken device
    Option "Ignore" "true"
    # alternative: just stop the device for being used as an active input device
    # Option "Floating" "true"
EndSection

Option "Ignore"...私はこのシリーズが与えられた入力デバイスのリストからタッチスクリーンを完全に取り除くことによってあなたの目的にもっと役立つと信じていますxinput list

その行を使用する代わりに、デバイスがリストに残ることを許可しますOption "Floating"...が、デバイスを「現在の仮想コアポインタ/キーボードグループの一部として使用されない」と指定することで、そのデバイスをサポートしていないすべてのX11で効果的に使用できなくなります。デバイスアプリケーションはこれを無視します。特定の入力デバイスを具体的に要求します。

MatchProduct出力から値を取得したので、xinput --watch-props 17おそらく正しいでしょう。ただし、調整が必要な場合は、/var/log/Xorg.0.logXorg X11サーバーがタッチスクリーンコントローラを検出するために使用する正確な識別子を確認し、それに応じてそのMatch...用語を調整することが役に立ちます。 。システムでさまざまなキーワードを使用するMatch...と、その詳細情報を見つけることができます。man xorg.conf

関連情報