为什么 udev 规则触发脚本的某些部分不起作用? (插入时使用xinput设置鼠标加速度)

为什么 udev 规则触发脚本的某些部分不起作用? (插入时使用xinput设置鼠标加速度)

我有一个 udev 规则

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c084", RUN+="/some/script.sh"

它成功触发了类似的脚本

#!/bin/bash

ls /tmp >> /tmp/lsasd # this line works
touch /tmp/asdasd # this line works

for id in $(xinput --list | \
            sed -n '/Logitech G203 Prodigy Gaming Mouse.*pointer/s/.*=\([0-9]\+\).*/\1/p')
do
  echo $id >> /tmp/test.log 2>&1
  xinput --set-prop $id 'libinput Accel Profile Enabled' 0, 1
  
done

前两个命令工作正常,但设置属性不起作用。这个想法是运行命令

xinput --set-prop $id 'libinput Accel Profile Enabled' 0, 1

$id对于找到的所有设备,因为我当时不知道。

知道可能是什么问题吗?xinput那时设备还不能使用吗?我尝试添加一个sleep 5来测试这一点,但这也不起作用。

答案1

我找到了答案:

xinput 设置仅在 X 上下文中有效。但它们不是从桌面管理器中启动的终端运行的。

例如

ACTION=="add", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c084", ENV{DISPLAY}=":0.0", ENV{XAUTHORITY}="/home/administrator/.Xauthority", RUN+="/some/script.sh"

您可以阅读更多相关内容这里,这里这里

相关内容