这里没有答案对我有用,并且我想设置的选项无法在中指定xorg.conf
:
$ xsetwacom -x get 'Wacom Intuos PT S Pad pad' button 1
Button: Actions are not supported by xorg.conf. Try shell format (-s) instead.
我最终不得不使用由udev规则触发的systemd服务来启动脚本:
$ cat /etc/udev/rules.d/99-wacom.rules
SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="056a", ENV{ID_MODEL_ID}=="0302", TAG+="systemd"
可以找到lsusb
在插入设备的情况下运行的供应商和型号ID 。
重新加载udev规则:
$ udevadm control --reload-rules
$ udevadm trigger
在TAG+="systemd"
使其他systemd服务(系统或用户)依赖于设备(寄存器它作为一个装置单元,见上man systemd.device
)。要查找设备单元的名称,请运行udevadm monitor
并插入平板电脑。我懂了
UDEV [2918.098423] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3 (usb)
...
要检查systemd正在捡起它,请执行
$ systemctl status /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/
● sys-devices-pci0000:00-0000:00:1d.0-usb2-2\x2d1-2\x2d1.3.device - CTH-480 [Intuos Pen & Touch (S)]
Loaded: loaded
Active: active (plugged) since Mon 2016-06-20 11:14:20 UYT; 29min ago
Device: /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3
因此设备单元是sys-devices-pci0000:00-0000:00:1d.0-usb2-2\x2d1-2\x2d1.3.device
,并且可以在系统服务单元中使用
$ cat .config/systemd/user/wacom.service
[Service]
Type=forking
Restart=no
ExecStart=/path/to/wacom-pad-button-setup
[Install]
WantedBy=default.target
WantedBy=sys-devices-pci0000:00-0000:00:1d.0-usb2-2\x2d1-2\x2d1.1.device
WantedBy=sys-devices-pci0000:00-0000:00:1d.0-usb2-2\x2d1-2\x2d1.2.device
WantedBy=sys-devices-pci0000:00-0000:00:1d.0-usb2-2\x2d1-2\x2d1.3.device
每个USB端口有一个设备单元。
然后启用并与重新加载单元systemctl --user enable wacom.service
和systemctl --user daemon-reload
。
该脚本仍然需要一点时间让xsetwacom查找设备,并设置$DISPLAY
和$XAUTHORITY
。Type=oneshot
插入时可以正常工作,但是如果在引导计算机时已经插入设备,则无法运行。这就是为什么我需要使用用户服务而不是系统服务的原因,以及该单元也具有的原因WantedBy=default.target
。oneshot的问题在于它阻止了startx。Type=forking
并Restart=no
告诉systemd不要等待脚本的分支过程退出,这样脚本就可以在后台休眠,等待Xorg启动。
$ cat bin/wacom-pad-button-setup
#!/bin/rc
{
sleep 2
if (~ $DISPLAY ()) {
DISPLAY=:0
XAUTHORITY=/home/spelufo/.Xauthority
}
xsetwacom set 'Wacom Intuos PT S Pad pad' button 9 'button +3 -3'
xsetwacom set 'Wacom Intuos PT S Pad pad' button 8 'button +4 -4'
xsetwacom set 'Wacom Intuos PT S Pad pad' button 3 'button +1 -1'
xsetwacom set 'Wacom Intuos PT S Pad pad' button 1 'button +2 -2'
} &
55
什么具体原因吗?我一直使用“最后处理无数个条目的想法,因此最好跳过自定义条目的数字”。