Keine der Antworten hier funktionierte für mich, und die Optionen, die ich festlegen wollte, konnten nicht angegeben werden in 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.
Am Ende musste ich das Skript mit einem systemd-Dienst starten, der durch eine udev-Regel ausgelöst wurde:
$ cat /etc/udev/rules.d/99-wacom.rules
SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="056a", ENV{ID_MODEL_ID}=="0302", TAG+="systemd"
Hersteller- und Modell-ID werden lsusb
bei angeschlossenem Gerät ausgeführt.
So laden Sie udev-Regeln neu:
$ udevadm control --reload-rules
$ udevadm trigger
Das TAG+="systemd"
ermöglicht andere systemd Dienste (System oder Benutzer) auf dem Gerät (Register es als Geräteeinheit, siehe abhängen man systemd.device
). Um den Namen der Geräteeinheit zu finden, führen Sie udevadm monitor
das Tablet aus und schließen Sie es an. Ich bekomme
UDEV [2918.098423] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3 (usb)
...
Um zu überprüfen, ob systemd es aufnimmt, tun Sie es
$ 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
Die Geräteeinheit ist also sys-devices-pci0000:00-0000:00:1d.0-usb2-2\x2d1-2\x2d1.3.device
und kann in der systemd-Serviceeinheit verwendet werden
$ 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
Es gibt eine Geräteeinheit pro USB-Port.
Aktivieren und laden Sie das Gerät anschließend mit systemctl --user enable wacom.service
und neu systemctl --user daemon-reload
.
Das Skript muss noch etwas schlafen, damit xsetwacom das Gerät findet und $DISPLAY
und setzt $XAUTHORITY
. Type=oneshot
funktioniert einwandfrei beim Anschließen, wird jedoch nicht ausgeführt, wenn das Gerät beim Booten des Computers bereits angeschlossen war. Aus diesem Grund musste ich einen Benutzerdienst anstelle eines Systemdienstes verwenden, und das Gerät hat auch einen WantedBy=default.target
. Das Problem mit oneshot ist, dass es startx blockiert hat. Type=forking
und Restart=no
weist systemd an, nicht auf das Beenden des gegabelten Prozesses des Skripts zu warten, damit das Skript im Hintergrund schlafen und auf den Start von Xorg warten kann.
$ 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
? Ich verwende immer die Idee, dass "unzählige Einträge zuletzt verarbeitet werden, daher ist es am besten, Zahlen für benutzerdefinierte Einträge zu überspringen."