【问题标题】:synclient doesn't work from udev rulessynclient 不适用于 udev 规则
【发布时间】:2013-03-18 23:07:56
【问题描述】:

此脚本用于检测插入鼠标,并禁用/启用触摸板。

这是触发脚本的 udev 规则:

ENV{DEVTYPE}=="usb_device", ACTION=="add", RUN+="/usr/local/bin/enable-disable-touchpad-when-add-remove-mouse.sh"

问题:当被 udev-rule 调用时,命令 synclient 不起作用。

有趣的是,当插入或移除鼠标时,脚本确实会运行并写入日志(我可以 tail -f 看到它运行)。

当我从 shell 手动运行脚本时,该脚本在任何用户(也是 root)帐户下都可以正常工作。这是脚本

#!/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 下运行的任何猜测?

【问题讨论】:

    标签: bash udev touchpad


    【解决方案1】:

    您需要环境变量 DISPLAY 和 XAUTHORITY。在 X 终端中它们被设置。

    您可以在脚本或udev规则中设置它

    https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Disable_touchpad_upon_external_mouse_detection

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多