ここでの答えはどれも私にとってうまくいきませんでした、そして私が設定したかったオプションはで指定することができませんでした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"
ベンダーとモデルIDはlsusb
、デバイスが接続された状態で実行されていることがわかります。
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
であり、systemdサービスユニットで使用できます。
$ 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ポートごとに1つのデバイスユニットがあります。
そして、有効にしてユニットをリロードsystemctl --user enable wacom.service
してsystemctl --user daemon-reload
。
スクリプトは、xsetwacomがデバイスを見つけて、およびを設定するために、少しスリープする必要が$DISPLAY
あり$XAUTHORITY
ます。Type=oneshot
プラグインすると正常に動作しますが、コンピュータの起動時にデバイスがすでにプラグインされている場合は動作しません。そのため、システムサービスではなくユーザーサービスを使用する必要があり、ユニットにもがありWantedBy=default.target
ます。oneshotの問題は、startxをブロックしていたことです。Type=forking
そしてRestart=no
スクリプトは、その後のXorgの背景待機中のスリープを開始することができるように、出口のスクリプトのフォークプロセスを待つ必要はないsystemdに伝えます。
$ 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
?「無数のエントリは最後に処理されるため、カスタムエントリの場合は番号をスキップすることをお勧めします。」