为什么 xsetwacom 不能从 udev 工作?

Red*_*dro 9 xorg udev devices

我编写了一个脚本来将我的 Wacom Bamboo 数位板旋转 180 度。当我以我自己(用户)或 root 身份执行它时,它工作正常,但从udev(即当将平板电脑插入usb端口时)启动时,它不起作用。

Udev 规则

SUBSYSTEMS=="usb", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00d1", ATTRS{manufacturer}=="Wacom Co.,Ltd.", RUN+="/usr/local/bin/red-wacom-bamboo.sh"
Run Code Online (Sandbox Code Playgroud)

Wacom 脚本 /usr/local/bin/red-wacom-bamboo.sh

#!/usr/bin/env bash

exec > /tmp/red-wacom.log
exec 2>&1

# I had to do this otherwise xsetwacom would say:
# "Failed to open Display ."
# Is there a way to do this without using my username?
export XAUTHORITY=/home/redsandro/.Xauthority
export DISPLAY=:0

/usr/bin/xsetwacom set "Wacom Bamboo 2FG 4x5 Pen stylus" Rotate half
/usr/bin/xsetwacom set "Wacom Bamboo 2FG 4x5 Finger touch" Rotate half
Run Code Online (Sandbox Code Playgroud)

结果在 /tmp/red-wacom.log

Cannot find device 'Wacom Bamboo 2FG 4x5 Pen stylus'.
Cannot find device 'Wacom Bamboo 2FG 4x5 Finger touch'.
Run Code Online (Sandbox Code Playgroud)

(请注意,日志中的错误意味着 udev 规则本身不是问题。)

我尝试sleep在脚本中设置 a ,可能需要几毫秒。但这无济于事。

  • 为什么直接从 调用此脚本不起作用udev
    • 我该如何解决?
  • 我可以udev作为特定用户调用脚本吗?(例如同步/home到外部备份驱动器 - /home/ 仅对其用户可见)

der*_*ert 3

有一个相当简单的解决方法,您可以将类似的内容添加到您的xorg.conf(或 中的文件xorg.conf.d,就像我所做的那样):

anthony@Watt:/etc/X11/xorg.conf.d$ cat 55-local-wacom.conf 
Section "InputClass"
       Identifier "Wacom Left Handed"
       MatchDriver "wacom"
       Option "Rotate" "half"
EndSection
Run Code Online (Sandbox Code Playgroud)

有关可设置的所有选项的详细信息,请查看wacom(4) 联机帮助页。

(理论上,您可以用来MatchProduct单独配置触摸板、笔、橡皮擦等,但是当我不久前尝试这样做时,它导致 Xorg 出现段错误。如果我尝试浮动它们也是如此。但是您没有做任何事情那个......也许这个错误现在已经修复了。)