1

このスクリプトは、マウスの挿入を検出し、タッチパッドを無効/有効にするために使用されます。

これは、スクリプトをトリガーする 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 で動作しない理由について何か推測はありますか?

4

1 に答える 1