Помогите мне создать скрипт, который запускается, когда клавиатура отсоединена

Я сделал следующее

 # Saved as /etc/udev/rules.d/81-MSSP3-dock.rules


# Microsoft Surface Pro Keyboard
SUBSYSTEM=="input", ENV{ID_VENDOR_ID}=="045e", ENV{ID_MODEL_ID}=="07e3, GOTO="MSSP3_rules"
GOTO="MSSP3_rules_end"

LABEL="MSSP3_rules"
ACTION=="add", RUN+="/home/joshuarobison/Documents/Scripts/landscape.sh"
ACTION=="remove", RUN+="/home/joshuarobison/Documents/Scripts/portrait.sh"

LABEL="MSSP3_rules_end"

мой udev выглядит следующим образом

monitor will print the received events for:
UDEV - the event which udev sends out after rule processing

UDEV  [2672.635429] remove   /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/0003:045E:07E3.0012/input/input303/event3 (input)
ACTION=remove
BACKSPACE=guess
DEVLINKS=/dev/input/by-path/pci-0000:00:14.0-usb-0:3:1.0-event-kbd /dev/input/by-id/usb-Microsoft_Surface_Type_Cover-event-kbd
DEVNAME=/dev/input/event3
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/0003:045E:07E3.0012/input/input303/event3
ID_BUS=usb
ID_INPUT=1
ID_INPUT_KEY=1
ID_INPUT_KEYBOARD=1
ID_MODEL=Surface_Type_Cover
ID_MODEL_ENC=Surface\x20Type\x20Cover
ID_MODEL_ID=07e3
ID_PATH=pci-0000:00:14.0-usb-0:3:1.0
ID_PATH_TAG=pci-0000_00_14_0-usb-0_3_1_0
ID_REVISION=0307
ID_SERIAL=Microsoft_Surface_Type_Cover
ID_TYPE=hid
ID_USB_DRIVER=usbhid
ID_USB_INTERFACES=:030000:
ID_USB_INTERFACE_NUM=00
ID_VENDOR=Microsoft
ID_VENDOR_ENC=Microsoft
ID_VENDOR_ID=045e
LIBINPUT_DEVICE_GROUP=3/45e/7e3:usb-0000:00:14.0-3
MAJOR=13
MINOR=67
SEQNUM=4374
SUBSYSTEM=input
TAGS=:power-switch:
USEC_INITIALIZED=2297576881
XKBLAYOUT=jp
XKBMODEL=pc105

Сценарии ландшафта и портрета уже работают. Я знаю, что проблема в правилах udev как-то. Когда я отсоединяю и закрепляю клавиатуру, скрипт не запускается.

Даже если сценарии Portrait или landscape.sh являются простой командой echo, ничего не происходит.

1
задан 26 May 2019 в 08:42

1 ответ

Следующее создаст Microsoft SP3 так, чтобы, когда клавиатура удалена, она переключилась на режим портрета. Сценарии гарантируют, что активный стилус и емкостная сенсорная ориентация корректны.

Спасибо @george udeson для ссылки на учебное руководство, которое помогло мне записать это.

Правила UDEV

# Saved as /etc/udev/rules.d/81-MSSP3-dock.rules

# Microsoft Surface Pro Keyboard

ACTION=="add" \
, ATTRS{idProduct}=="07e3" \
, ATTRS{idVendor}=="045e" \
, ENV{DISPLAY}=":0" \
, ENV{XAUTHORITY}="/home/joshuarobison/.Xauthority" \
, RUN+="//home/joshuarobison/Documents/Scripts/landscape.sh"

ACTION=="remove" \
, ATTRS{idProduct}=="07e3" \
, ATTRS{idVendor}=="045e" \
, ENV{DISPLAY}=":0" \
, ENV{XAUTHORITY}="/home/joshuarobison/.Xauthority" \
, RUN+="//home/joshuarobison/Documents/Scripts/portrait.sh"

сценарий portrait.sh

#!/bin/sh
#Portrait
xrandr -o left
  xinput set-prop "NTRG0001:01 1B96:1B05" --type=float "Coordinate Transformation Matrix" 0 -1 1 1 0 0 0 0 1
  xinput set-prop "NTRG0001:01 1B96:1B05" --type=float "Coordinate Transformation Matrix" 0 -1 1 1 0 0 0 0 1
  xsetwacom set "NTRG0001:01 1B96:1B05 Pen stylus" Rotate ccw

сценарий landscape.sh

#!/bin/sh
#landscape

  xrandr -o normal
  xinput set-prop "NTRG0001:01 1B96:1B05" --type=float "Coordinate Transformation Matrix" 0 0 0 0 0 0 0 0 0
  xinput set-prop "NTRG0001:01 1B96:1B05" --type=float "Coordinate Transformation Matrix" 0 0 0 0 0 0 0 0 0
  xsetwacom set "NTRG0001:01 1B96:1B05 Pen stylus" Rotate 0

После создания файла правил udev не забывают работать

sudo udevadm control --reload
1
ответ дан 7 December 2019 в 15:02

Другие вопросы по тегам:

Похожие вопросы: