Inotify

在腳本中監控 xinput

  • March 3, 2021

我的筆記型電腦有一個破裂的觸摸屏,當地華碩技術人員告訴我無法更換,即使是非觸摸屏也無法更換,因為他們不再製造它們了。

它在所有其他方面都是一台出色的筆記型電腦,並且可以與外接顯示器一起使用,但螢幕上的裂縫有時會產生隨機的觸摸事件,從而擾亂我的會話。

禁用螢幕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,它們都按預期工作,但是這個有問題。

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.log查看 Xorg X11 伺服器檢測到觸摸屏控制器時使用的確切標識符可能會有所幫助,並相應地調整Match...條款。您可以通過在系統上使用來找到有關各種Match...關鍵字的更多資訊。man xorg.conf

引用自:https://unix.stackexchange.com/questions/637279