我想讓我的 USB 滑鼠的 xinput 設定在關閉並再次打開後仍然保留。我該如何監控此事件?
這不起作用,因為我從不拔掉 USB 接收器: 如何使 xinput 設定在裝置拔出、重新插入、關機、重新啟動等後仍然保留?
據我了解,udev 可用於硬體檢測應用程序,但它似乎無法檢測設備(例如 Logitech Unifying Receiver)中的狀態變化。
我想解決這個問題的關鍵是成功追蹤接收器中的事件並編寫腳本來執行 xinput 命令。有人知道我如何檢測此事件嗎? Solaar 當然能夠檢測到這一點,但這並不意味著它對於非專家 Linux 用戶來說很簡單。
謝謝!
答案1
我根據 unix stack exchange 中另一篇文章的建議解決了這個問題。
簡而言之,我運行一個後台 shell 腳本,該腳本每 2 秒循環一次,查找滑鼠的變化,當發現變化時,它會重新執行 xinput 命令。
原始(更簡單)的解決方案發佈在這裡:
https://unix.stackexchange.com/questions/332573/how-to-make-xinput-commands-permanent/340594#340594
這是我運行的腳本~/.xinitrc
:
# Map mouse button 8 (top right) to button 2 (top left) and vice versa, run when changes to the mouse occur
while true; do
NEW_MOUSEID=$(xinput | grep "Expert Mouse" | grep -o -E '[0-9]+' | head -n 1)
if [ "$MOUSEID" != "$NEW_MOUSEID" ]; then
MOUSEID=$NEW_MOUSEID
if [ "$MOUSEID" != "" ]; then
xinput --set-button-map $MOUSEID 1 8 3 4 5 6 7 2 9 10 11 12
fi
fi
sleep 2
done &
基本結構:
- 每 2 秒從 xinput 觀察 USB ID 的變化
- 如果滑鼠 ID 為空,則表示未連接,請勿執行 xinput(如果這樣做,將會出現錯誤)
- 此指令的解析
xinput
僅傳回滑鼠“Expert Mouse”的 USB 裝置 ID,例如:“14”
請注意,原始答案建議監視命令的變更lsusb
並重新運行命令,這也同樣有效。