このスクリプトは、マウスの挿入を検出し、タッチパッドを無効/有効にするために使用されます。
これは、スクリプトをトリガーする udev ルールです。
ENV{DEVTYPE}=="usb_device", ACTION=="add", RUN+="/usr/local/bin/enable-disable-touchpad-when-add-remove-mouse.sh"
問題: コマンド synclient は、udev ルールによって呼び出されたときに機能しません。
おもしろいことに、マウスが挿入または削除されると、スクリプトが実際に実行され、ログに書き込まれます (ログを末尾に -f して実行を確認できます)。
スクリプトは、シェルから手動で実行すると、どのユーザー (ルートも含む) アカウントでも問題なく動作します。これがスクリプトです
#!/bin/bash
let x=`lsusb | grep -i logite | wc -l`+`lsusb | grep -i mouse | wc -l`
echo `id` >> /tmp/usblog2
if [ $x -gt 0 ]
then
echo touch off >> /tmp/usblog2
/usr/bin/synclient touchpadoff=1
else
echo touch on >> /tmp/usblog2
/usr/bin/synclient touchpadoff=0
fi
synclient が udev で動作しない理由について何か推測はありますか?