डिवाइस को हटाने पर यह udev नियम ट्रिगर क्यों नहीं होता है?


12

मेरे पास दो चूहे हैं, एक जिसमें एक मुद्दा है जहां मध्य माउस बटन और बटन 6 एक साथ ट्रिगर होते हैं। इसलिए मैंने ~/.Xmodmapइस बटन को निष्क्रिय करने के लिए अपने कॉन्फ़िगर किया है । उसी समय, हालांकि, मैं अभी भी अपने अन्य माउस के साथ इस बटन का उपयोग करने में सक्षम होना चाहता था। इसलिए मैंने एक udevनियम लिखा xmodmapजो बटन लेआउट को बदलने के लिए कहा गया था जिसके आधार पर माउस जुड़ा हुआ है।


सेट अप

यह मेरा वर्तमान सेटअप है:

/etc/udev/rules.d/logitech-g7.rules :

# deactivate MB 6 when mouse 1 is connected
ACTION=="add", ENV{DEVTYPE}=="usb_device", ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c51a", RUN+="/home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher_wrapper 1", OWNER="user"
# restore defaults when mouse 1 is disconnected
ACTION=="remove", ENV{DEVTYPE}=="usb_device", ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c51a", RUN+="/home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher_wrapper 0", OWNER="user"

/home/user/.scripts/Troublesourcing/Bugfixes/mouseswitcher_wraesc :

#!/bin/bash
/home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher "$1"&

/home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher

#!/bin/bash
sleep 1
DISPLAY=":0.0"
HOME=/home/user/
XAUTHORITY=$HOME/.Xauthority
export DISPLAY XAUTHORITY HOME

if [[ "$1" == 1 ]] #differentiate between ADD (1) event and REMOVE (0) event
  then
      /usr/bin/xmodmap /home/user/.XmodmapG7 > /dev/null 2>&1
  else
      /usr/bin/xmodmap /home/user/.Xmodmap > /dev/null 2>&1
fi

यदि यह सीम थोड़ा अधिक है, तो यह केवल इसलिए है क्योंकि मैं कई समस्याओं पर ठोकर खा चुका हूं, जैसे कि udv, xmodmap और DISPLAY वैरिएबल। मेरी स्क्रिप्ट इस प्रश्नोत्तर पर आधारित हैं ।


वर्तमान स्थिति

ADD क्रिया ठीक काम करती है, REMOVE क्रिया नहीं करती है। किसी टर्मिनल में मैन्युअल रूप से RUN कमांड का निष्पादन ठीक काम करता है।


मैंने अब तक क्या कोशिश की है

मैंने पाया कि इस मंच ने इस बात को रेखांकित किया कि udv को हटाने की कार्रवाई में समस्या क्यों है और तदनुसार एटीवीआर को ईएनवी चर के साथ बदल दिया गया है। लेकिन यह सब करने के लिए कोई फायदा नहीं हुआ, फिर भी REMOVE ट्रिगर काम नहीं करता है।

मुझे कुछ गलत करना है। मैं वास्तव में इसकी सराहना करूंगा यदि कोई आसपास का कोई व्यक्ति सामान्य रूप से udv और Linux का अधिक जानकार हो और मेरे मामले को देख सके।


अतिरिक्त जानकारी

udevadm monitor --environment --udevरिसीवर को प्लग इन करते समय आउटपुट :

######ADD#######

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

UDEV  [21728.392805] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3 (usb)
ACTION=add
BUSNUM=002
DEVNAME=/dev/bus/usb/002/037
DEVNUM=037
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3
DEVTYPE=usb_device
ID_BUS=usb
ID_MODEL=USB_Receiver
ID_MODEL_ENC=USB\x20Receiver
ID_MODEL_ID=c51a
ID_REVISION=4100
ID_SERIAL=Logitech_USB_Receiver
ID_USB_INTERFACES=:030102:030000:
ID_VENDOR=Logitech
ID_VENDOR_ENC=Logitech
ID_VENDOR_ID=046d
MAJOR=189
MINOR=164
PRODUCT=46d/c51a/4100
SEQNUM=3139
SUBSYSTEM=usb
TYPE=0/0/0
UDEV_LOG=3
UPOWER_VENDOR=Logitech, Inc.
USEC_INITIALIZED=21727880859

UDEV  [21728.393864] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0 (usb)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0
DEVTYPE=usb_interface
INTERFACE=3/1/2
MODALIAS=usb:v046DpC51Ad4100dc00dsc00dp00ic03isc01ip02in00
PRODUCT=46d/c51a/4100
SEQNUM=3140
SUBSYSTEM=usb
TYPE=0/0/0
UDEV_LOG=3
USEC_INITIALIZED=21728393779

UDEV  [21728.395536] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1 (usb)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1
DEVTYPE=usb_interface
INTERFACE=3/0/0
MODALIAS=usb:v046DpC51Ad4100dc00dsc00dp00ic03isc00ip00in01
PRODUCT=46d/c51a/4100
SEQNUM=3146
SUBSYSTEM=usb
TYPE=0/0/0
UDEV_LOG=3
USEC_INITIALIZED=21728395426

UDEV  [21728.395737] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/0003:046D:C51A.004B (hid)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/0003:046D:C51A.004B
HID_ID=0003:0000046D:0000C51A
HID_NAME=Logitech USB Receiver
HID_PHYS=usb-0000:00:1d.0-1.3/input0
MODALIAS=hid:b0003g0001v0000046Dp0000C51A
SEQNUM=3141
SUBSYSTEM=hid
UDEV_LOG=3
USEC_INITIALIZED=21728395467

UDEV  [21728.398102] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1/0003:046D:C51A.004C (hid)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1/0003:046D:C51A.004C
HID_ID=0003:0000046D:0000C51A
HID_NAME=Logitech USB Receiver
HID_PHYS=usb-0000:00:1d.0-1.3/input1
MODALIAS=hid:b0003g0001v0000046Dp0000C51A
SEQNUM=3147
SUBSYSTEM=hid
UDEV_LOG=3
USEC_INITIALIZED=21728397927

UDEV  [21728.398650] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/0003:046D:C51A.004B/hidraw/hidraw2 (hidraw)
ACTION=add
DEVNAME=/dev/hidraw2
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/0003:046D:C51A.004B/hidraw/hidraw2
MAJOR=251
MINOR=2
SEQNUM=3145
SUBSYSTEM=hidraw
UDEV_LOG=3
USEC_INITIALIZED=21728398188

UDEV  [21728.399406] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1/0003:046D:C51A.004C/hidraw/hidraw3 (hidraw)
ACTION=add
DEVNAME=/dev/hidraw3
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1/0003:046D:C51A.004C/hidraw/hidraw3
MAJOR=251
MINOR=3
SEQNUM=3151
SUBSYSTEM=hidraw
UDEV_LOG=3
USEC_INITIALIZED=21728399273

UDEV  [21728.400119] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1/usbmisc/hiddev1 (usbmisc)
ACTION=add
DEVNAME=/dev/usb/hiddev1
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1/usbmisc/hiddev1
MAJOR=180
MINOR=1
SEQNUM=3150
SUBSYSTEM=usbmisc
UDEV_LOG=3
USEC_INITIALIZED=21727874845

UDEV  [21728.401438] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/input/input73 (input)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/input/input73
EV=17
ID_BUS=usb
ID_INPUT=1
ID_INPUT_MOUSE=1
ID_MODEL=USB_Receiver
ID_MODEL_ENC=USB\x20Receiver
ID_MODEL_ID=c51a
ID_PATH=pci-0000:00:1d.0-usb-0:1.3:1.0
ID_PATH_TAG=pci-0000_00_1d_0-usb-0_1_3_1_0
ID_REVISION=4100
ID_SERIAL=Logitech_USB_Receiver
ID_TYPE=hid
ID_USB_DRIVER=usbhid
ID_USB_INTERFACES=:030102:030000:
ID_USB_INTERFACE_NUM=00
ID_VENDOR=Logitech
ID_VENDOR_ENC=Logitech
ID_VENDOR_ID=046d
KEY=ffff0000 0 0 0 0
MODALIAS=input:b0003v046DpC51Ae0111-e0,1,2,4,k110,111,112,113,114,115,116,117,118,119,11A,11B,11C,11D,11E,11F,r0,1,6,8,am4,lsfw
MSC=10
NAME="Logitech USB Receiver"
PHYS="usb-0000:00:1

udevadm monitor --environment --udevरिसीवर को हटाते समय आउटपुट :

#######REMOVE#######


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

UDEV  [21800.789239] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/input/input75/mouse1 (input)
ACTION=remove
DEVLINKS=/dev/input/by-id/usb-Logitech_USB_Receiver-mouse /dev/input/by-path/pci-0000:00:1d.0-usb-0:1.3:1.0-mouse
DEVNAME=/dev/input/mouse1
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/input/input75/mouse1
ID_BUS=usb
ID_INPUT=1
ID_INPUT_MOUSE=1
ID_MODEL=USB_Receiver
ID_MODEL_ENC=USB\x20Receiver
ID_MODEL_ID=c51a
ID_PATH=pci-0000:00:1d.0-usb-0:1.3:1.0
ID_PATH_TAG=pci-0000_00_1d_0-usb-0_1_3_1_0
ID_REVISION=4100
ID_SERIAL=Logitech_USB_Receiver
ID_TYPE=hid
ID_USB_DRIVER=usbhid
ID_USB_INTERFACES=:030102:030000:
ID_USB_INTERFACE_NUM=00
ID_VENDOR=Logitech
ID_VENDOR_ENC=Logitech
ID_VENDOR_ID=046d
MAJOR=13
MINOR=33
SEQNUM=3178
SUBSYSTEM=input
UDEV_LOG=3
USEC_INITIALIZED=21797014959

UDEV  [21800.792866] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/input/input75/event6 (input)
ACTION=remove
DEVLINKS=/dev/input/by-id/usb-Logitech_USB_Receiver-event-mouse /dev/input/by-path/pci-0000:00:1d.0-usb-0:1.3:1.0-event-mouse
DEVNAME=/dev/input/event6
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/input/input75/event6
ID_BUS=usb
ID_INPUT=1
ID_INPUT_MOUSE=1
ID_MODEL=USB_Receiver
ID_MODEL_ENC=USB\x20Receiver
ID_MODEL_ID=c51a
ID_PATH=pci-0000:00:1d.0-usb-0:1.3:1.0
ID_PATH_TAG=pci-0000_00_1d_0-usb-0_1_3_1_0
ID_REVISION=4100
ID_SERIAL=Logitech_USB_Receiver
ID_TYPE=hid
ID_USB_DRIVER=usbhid
ID_USB_INTERFACES=:030102:030000:
ID_USB_INTERFACE_NUM=00
ID_VENDOR=Logitech
ID_VENDOR_ENC=Logitech
ID_VENDOR_ID=046d
MAJOR=13
MINOR=70
SEQNUM=3179
SUBSYSTEM=input
UDEV_LOG=3
USEC_INITIALIZED=21797013896

UDEV  [21800.797061] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/input/input75 (input)
ACTION=remove
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/input/input75
EV=17
ID_BUS=usb
ID_INPUT=1
ID_INPUT_MOUSE=1
ID_MODEL=USB_Receiver
ID_MODEL_ENC=USB\x20Receiver
ID_MODEL_ID=c51a
ID_PATH=pci-0000:00:1d.0-usb-0:1.3:1.0
ID_PATH_TAG=pci-0000_00_1d_0-usb-0_1_3_1_0
ID_REVISION=4100
ID_SERIAL=Logitech_USB_Receiver
ID_TYPE=hid
ID_USB_DRIVER=usbhid
ID_USB_INTERFACES=:030102:030000:
ID_USB_INTERFACE_NUM=00
ID_VENDOR=Logitech
ID_VENDOR_ENC=Logitech
ID_VENDOR_ID=046d
KEY=ffff0000 0 0 0 0 0 0 0 0
MODALIAS=input:b0003v046DpC51Ae0111-e0,1,2,4,k110,111,112,113,114,115,116,117,118,119,11A,11B,11C,11D,11E,11F,r0,1,6,8,am4,lsfw
MSC=10
NAME="Logitech USB Receiver"
PHYS="usb-0000:00:1d.0-1.3/input0"
PRODUCT=3/46d/c51a/111
PROP=0
REL=143
SEQNUM=3180
SUBSYSTEM=input
UDEV_LOG=3
UNIQ=""
USEC_INITIALIZED=21796479085

UDEV  [21800.797132] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/0003:046D:C51A.004D/hidraw/hidraw2 (hidraw)
ACTION=remove
DEVNAME=/dev/hidraw2
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/0003:046D:C51A.004D/hidraw/hidraw2
MAJOR=251
MINOR=2
SEQNUM=3181
SUBSYSTEM=hidraw
UDEV_LOG=3
USEC_INITIALIZED=21800796369

UDEV  [21800.797172] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/0003:046D:C51A.004D (hid)
ACTION=remove
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/0003:046D:C51A.004D
HID_ID=0003:0000046D:0000C51A
HID_NAME=Logitech USB Receiver
HID_PHYS=usb-0000:00:1d.0-1.3/input0
MODALIAS=hid:b0003g0001v0000046Dp0000C51A
SEQNUM=3182
SUBSYSTEM=hid
UDEV_LOG=3
USEC_INITIALIZED=21800796501

UDEV  [21800.798537] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0 (usb)
ACTION=remove
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0
DEVTYPE=usb_interface
INTERFACE=3/1/2
MODALIAS=usb:v046DpC51Ad4100dc00dsc00dp00ic03isc01ip02in00
PRODUCT=46d/c51a/4100
SEQNUM=3183
SUBSYSTEM=usb
TYPE=0/0/0
UDEV_LOG=3
USEC_INITIALIZED=21800796538

UDEV  [21800.814181] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1/input/input76/event7 (input)
ACTION=remove
DEVLINKS=/dev/input/by-id/usb-Logitech_USB_Receiver-event-if01 /dev/input/by-path/pci-0000:00:1d.0-usb-0:1.3:1.1-event
DEVNAME=/dev/input/event7
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1/input/input76/event7
ID_BUS=usb
ID_INPUT=1
ID_INPUT_KEY=1
ID_MODEL=USB_Receiver
ID_MODEL_ENC=USB\x20Receiver
ID_MODEL_ID=c51a
ID_PATH=pci-0000:00:1d.0-usb-0:1.3:1.1
ID_PATH_TAG=pci-0000_00_1d_0-usb-0_1_3_1_1
ID_REVISION=4100
ID_SERIAL=Logitech_USB_Receiver
ID_TYPE=hid
ID_USB_DRIVER=usbhid
ID_USB_INTERFACES=:030102:030000:
ID_USB_INTERFACE_NUM=01
ID_VENDOR=Logitech
ID_VENDOR_ENC=Logitech
ID_VENDOR_ID=046d
MAJOR=13
MINOR=71
SEQNUM=3184
SUBSYSTEM=input
UDEV_LOG=3
USEC_INITIALIZED=21797013933
XKBLAYOUT=de
XKBMODEL=pc105

UDEV  [21800.816765] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1/input/input76 (input)
ABS=1 0
ACTION=remove
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1/input/input76
EV=1f
ID_BUS=usb
ID_INPUT=1
ID_INPUT_KEY=1
ID_MODEL=USB_Receiver
ID_MODEL_ENC=USB\x20Receiver
ID_MODEL_ID=c51a
ID_PATH=pci-0000:00:1d.0-usb-0:1.3:1.1
ID_PATH_TAG=pci-0000_00_1d_0-usb-0_1_3_1_1
ID_REVISION=4100
ID_SERIAL=Logitech_USB_Receiver
ID_TYPE=hid
ID_USB_DRIVER=usbhid
ID_USB_INTERFACES=:030102:030000:
ID_USB_INTERFACE_NUM=01
ID_VENDOR=Logitech
ID_VENDOR_ENC=Logitech
ID_VENDOR_ID=046d
KEY=4837fff 72ff32d bf544446 0 0 1 20f90 8b17c000 677bfa d9415fed 9ed680 4400 0 10000002
MODALIAS=input:b0003v046DpC51Ae0111-e0,1,2,3,4,k71,72,73,74,77,80,82,83,85,86,87,88,89,8A,8B,8C,8E,90,96,98,9B,9C,9E,9F,A1,A3,A4,A5,A6,A7,A8,A9,AB,AC,AD,AE,B0,B1,B2,B5,B6,CE,CF,D0,D1,D2,D4,D8,D9,DB,DF,E4,E7,E8,E9,EA,EB,F1,100,161,162,166,16A,16E,172,174,176,178,179,17A,17B,17C,17D,17F,180,182,183,185,188,189,18C,18D,18E,18F,190,191,192,193,195,198,199,19A,1A0,1A1,1A2,1A3,1A4,1A5,1A6,1A7,1A8,1A9,1AA,1AB,1AC,1AD,1AE,1B0,1B1,1B7,1BA,r6,a20,m4,lsfw
MSC=10
NAME="Logitech USB Receiver"
PHYS="usb-0000:00:1d.0-1.3/input1"
PRODUCT=3/46d/c51a/111
PROP=0
REL=40
SEQNUM=3185
SUBSYSTEM=input
UDEV_LOG=3
UNIQ=""
USEC_INITIALIZED=21796482192

UDEV  [21800.817249] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1/usbmisc/hiddev1 (usbmisc)
ACTION=remove
DEVNAME=/dev/usb/hiddev1
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1/usbmisc/hiddev1
MAJOR=180
MINOR=1
SEQNUM=3186
SUBSYSTEM=usbmisc
UDEV_LOG=3
USEC_INITIALIZED=21800816392

UDEV  [21800.818490] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1/0003:046D:C51A.004E/hidraw/hidraw3 (hidraw)
ACTION=remove
DEVNAME=/dev/hidraw3
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1/0003:046D:C51A.004E/hidraw/hidraw3
MAJOR=251
MINOR=3
SEQNUM=3187
SUBSYSTEM=hidraw
UDEV_LOG=3
USEC_INITIALIZED=21800816472

UDEV  [21800.818536] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1/0003:046D:C51A.004E (hid)
ACTION=remove
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1/0003:046D:C51A.004E
HID_ID=0003:0000046D:0000C51A
HID_NAME=Logitech USB Receiver
HID_PHYS=usb-0000:00:1d.0-1.3/input1
MODALIAS=hid:b0003g0001v0000046Dp0000C51A
SEQNUM=3188
SUBSYSTEM=hid
UDEV_LOG=3
USEC_INITIALIZED=21800816908

UDEV  [21800.818580] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1 (usb)
ACTION=remove
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1
DEVTYPE=usb_interface
INTERFACE=3/0/0
MODALIAS=usb:v046DpC51Ad4100dc00dsc00dp00ic03isc00ip00in01
PRODUCT=46d/c51a/4100
SEQNUM=3189
SUBSYSTEM=usb
TYPE=0/0/0
UDEV_LOG=3
USEC_INITIALIZED=21800816945

UDEV  [21800.818645] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3 (usb)
ACTION=remove
BUSNUM=002
DEVNAME=/dev/bus/usb/002/038
DEVNUM=038
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3
DEVTYPE=usb_device
ID_BUS=usb
ID_MODEL=USB_Receiver
ID_MODEL_ENC=USB\x20Receiver
ID_MODEL_ID=c51a
ID_REVISION=4100
ID_SERIAL=Logitech_USB_Receiver
ID_USB_INTERFACES=:030102:030000:
ID_VENDOR=Logitech
ID_VENDOR_ENC=Logitech
ID_VENDOR_ID=046d
MAJOR=189
MINOR=165
PRODUCT=46d/c51a/4100
SEQNUM=3190
SUBSYSTEM=usb
TYPE=0/0/0
UDEV_LOG=3
UPOWER_VENDOR=Logitech, Inc.
USEC_INITIALIZED=21796488421

1
क्या आप जांच सकते हैं कि आपके नियम डिवाइस और निष्कासन की घटनाओं से मेल खाते हैं, मैं मॉनिटर आउटपुट से इसकी पुष्टि नहीं कर सकता। आप देख सकते हैं कि क्या वे usinng से मेल खाएंगे:udevadm test --action=add $(udevadm info --query=path -n /dev/input/mouse0)
zorlem

@zorlem आपकी टिप्पणी के लिए धन्यवाद। मेरे सवाल ने चरित्र की सीमा को प्रभावित किया है, इसलिए यहाँ आउटपुट का एक पेस्टबिन है । अपनी सीमित समझ के साथ मुझे लगता है कि मैं देख सकता हूं कि नियम लागू नहीं होता है। क्या आपके पास कोई विचार है कि ऐसा क्यों हो सकता है?
ग्लूटानाएट

जवाबों:


13

दूसरा तरीका

उत्तर लिखने की समाप्ति के बाद, मुझे एहसास हुआ कि आप जो हासिल करने की कोशिश कर रहे हैं, वह xinputXorg के कॉन्फ़िगरेशन का उपयोग करके या यहां तक ​​कि बहुत ही सुरुचिपूर्ण ढंग से पूरा किया जा सकता है । Xorg में इनपुट उपकरणों को नियंत्रित करने के बारे में प्रलेखन को पढ़ना सुनिश्चित करें ।

Udv का उपयोग करना (आपके प्रश्न का उत्तर)

मेरे परीक्षणों के अनुसार आपके नियमों में दो समस्याएं हैं:

  1. कम से कम मेरे उबंटू जीएनयू / लिनक्स 12.04 पर, ENV{DEVTYPE}कभी भी मैच के लिए कोई चेक नहीं (भले ही यह ठीक से रिपोर्ट किया गया हो udevadm infoऔर udevadm monitor)। यही कारण है कि आपको addनियम मिलान भी दिखाई नहीं देता है ।
  2. आपको नियम OWNERसे असाइनमेंट को हटा देना चाहिए remove। इसका कोई मतलब नहीं है और udv पूरी तरह से नियम की अनदेखी करता है।

कृपया निम्नलिखित दो नियमों के साथ प्रयास करें और देखें कि क्या वे समस्या का समाधान करते हैं।

ACTION=="add", ENV{ID_MODEL}=="USB_Receiver", ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c51a", RUN+="/home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher_wrapper 1", OWNER="user"
ACTION=="remove", ENV{ID_MODEL}=="USB_Receiver", ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c51a", RUN+="/home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher_wrapper 0"

अतिरिक्त मुद्दो पर विचार करना

कई बातों पर विचार करें:

  1. यह उपयोग करने के लिए ATTR{idVendor}और ATTR{idProduct}उपकरणों के वर्गीकरण के लिए बहुत क्लीनर है। आप सुरक्षित रूप addसे उनका उपयोग करने के लिए नियम बदल सकते हैं, इसके बजाय ENV, लेकिन मैंने उन्हें सादगी के लिए इस तरह छोड़ दिया। वर्तमान में addऔर removeनियम लगभग समान हैं।
  2. एक स्क्रिप्ट को एक निर्देशिका में रूट के रूप में चलाने के सुरक्षा निहितार्थ पर विचार करें जो अन्य उपयोगकर्ताओं द्वारा लिखने योग्य है। आपके विशेष मामले में, यह एक गंभीर मुद्दा नहीं है, लेकिन मैं इसे एक अच्छा सुरक्षा अभ्यास नहीं कहूंगा। IMO यह काफी बेहतर / usr / स्थानीय / बिन में स्क्रिप्ट डाल होगा /, यह के स्वामित्व root.root और मोड 0755
  3. सुनिश्चित करें कि आप चाहते हैं कि माउस डिवाइस आपके उपयोगकर्ता के स्वामित्व में हो, इसके लिए वास्तव में कोई आवश्यकता नहीं है, PolicyKit और Xorg को बिना किसी समस्या के रूट-स्वामित्व वाले डिवाइस को संभालने में सक्षम होना चाहिए।

यदि आपको डिवाइस के स्वामी को बदलने की आवश्यकता नहीं है और आपका सेटअप रूट-स्वामित्व वाली डिवाइस के साथ काम करता है, तो आप अपने दो udv नियमों को सरल बना सकते हैं:

ACTION=="add|remove", ENV{ID_MODEL}=="USB_Receiver", ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c51a", RUN+="/home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher_wrapper $env{ACTION}"

यह आपकी स्क्रिप्ट को संबंधित क्रिया के साथ कॉल करेगा - removeया add, इसलिए आपको इन तर्कों को संभालने के लिए अपनी स्क्रिप्ट को संशोधित करना होगा।

नियम को (और स्क्रिप्ट को चलाने के लिए) एक से अधिक बार रोकने के लिए आपको नियम को और अधिक विशिष्ट बनाने की आवश्यकता है: नियम माउस के प्रत्येक "इनपुट" (बटन, आदि) के लिए मेल खाता है। इसलिए इसे बार-बार निष्पादित किया जाता है। जोड़ने ENV{ID_TYPE}!="hid"या ENV{ID_USB_DRIVER}!="*hid*"देखने की कोशिश करें कि क्या यह काम करता है क्योंकि केवल एक उपकरण है जो छिपाई नहीं है - शीर्ष usb_device

पुनश्च: यदि आप अपनी mouseswitcherस्क्रिप्ट को अधिक लचीला बनाना चाहते हैं , और ConsoleKit के साथ एक सिस्टम चला रहे हैं, तो आप ck-list-sessionsउस उपयोगकर्ता को प्राप्त करने के लिए उपयोग कर सकते हैं जो वर्तमान में लॉग इन है और XAUTHORITYवैरिएबल सेट करने के लिए उस जानकारी का उपयोग करें ।


इस शानदार जवाब के लिए धन्यवाद! संयुक्त udv नियम OWNER असाइनमेंट के बिना पूरी तरह से ठीक काम करता है, जो मुझे लगता है कि मूल पोस्टर ने पर्यावरण चर के साथ त्रुटियों का निवारण करने के लिए सेट किया था। मैं रैपर स्क्रिप्ट को हटाकर सेटअप को स्ट्रीमलाइन करने में भी सक्षम था (सच्चाई बताने के लिए, मुझे पूरा यकीन नहीं है कि ओपी ने इसे पहले स्थान पर क्यों जोड़ा)। एकमात्र समस्या यह है कि माउस को हटाने या कनेक्ट करने पर स्क्रिप्ट को कई बार कहा जाता है। यह udv के लॉगिंग लेवल सेट के साथ syslog आउटपुट हैinfo
ग्लूटामैंट

क्या आप किसी भी तरह से सोच सकते हैं कि मैं नियम को आगे निर्दिष्ट कर सकता हूं ताकि इसे सिर्फ एक बार निष्पादित किया जाए? इसके अलावा, स्क्रिप्ट के स्थान पर सलाह के लिए धन्यवाद। मुझे सुरक्षा मुद्दों की जानकारी नहीं थी। मैं निश्चित रूप से इस पर अभी से विचार करूंगा!
ग्लूटामैंट

1
जोड़ने का प्रयास करें ENV{ID_TYPE}!="hid"या ENV{ID_USB_DRIVER}!="*hid*"देखें कि क्या यह काम करता है।
ज़ोरलेम

हाँ, यह बात है। ENV{ID_TYPE}!="hid"ठीक काम किया। धन्यवाद!
Glutanimate

इस पर एक दुर्लभ उत्तर udev"सिर्फ ENV{DEVTYPE}=="usb_device"अपने नियमों को जोड़ने" से परे है , लेकिन यह भी बताएं कि क्यों। धन्यवाद!
दिमित्री ग्रिगोरीव

2

पिछला उत्तर लिखे हुए कुछ साल हो चुके हैं। ऐसा प्रतीत होता है कि तब से udv बदल गया है ताकि udv समाधान अब काम न करे, कम से कम Ubuntu 18.04 के लिए udev पैकेज संस्करण 237-3ubuntu10.29 के साथ। मैं भविष्य में इस समस्या का सामना कर रहे लोगों के लाभ के लिए इस उत्तर को पोस्ट कर रहा हूं, क्योंकि मुझे इस मुद्दे की कोई अन्य रिपोर्ट नहीं मिली है।

Udv के इस संस्करण के साथ, ENV{ID_VENDOR_ID} ENV{ID_MODEL_ID}हटाने की घटनाओं के लिए सेट नहीं हैं, इसलिए नियम इन चरों पर मेल नहीं खाएंगे। वर्कअराउंड का उपयोग करना है ENV{PRODUCT}, जो घटनाओं को जोड़ने और हटाने दोनों के लिए निर्धारित है। ENV{PRODUCT}इसका रूप है idVendor/idProduct/bcdDevice, इसलिए इसे एक नियम से मिलान किया जा सकता है:

ENV{PRODUCT}=="xxxx/yyyy*"

xxxxविक्रेता आईडी कहां है और yyyyआपके डिवाइस का उत्पाद आईडी है।

पिछले उत्तर के समय की तुलना में एक साइड नोट यह है कि udv अब ENV{DEVTYPE}सही तरीके से सेट होता है और इसे नियमों में मिलान किया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.