[udev] Mapper les touches Logitech M560 [contourné]

Questions et astuces concernant l'installation et la configuration d'archlinux
Avatar de l’utilisateur
Tetsumaki
archer
Messages : 141
Inscription : jeu. 06 mai 2010, 05:44

[udev] Mapper les touches Logitech M560 [contourné]

Message par Tetsumaki »

Bonjour.

Voici mon matériel :
Clavier : Logitech K270
Souris : Logitech M560

Les 2 sont donc sans fil et relié au même périphérique Unifying.

Le problème c'est que le firmware de la souris M560 a été conçu pour Windows 8.
Par exemple le bouton au niveau du pouce qui sert à faire "Précédent" va exécuter Super+D qui correspond donc à "Afficher le bureau".

J'ai donc partiellement résolu le problème grâce à ces liens :
https://wiki.archlinux.org/index.php/Ma ... o_keycodes
https://bugzilla.redhat.com/show_bug.cgi?id=1035668#c3

J'ai crée le fichier /etc/udev/hwdb.d/90-logitech-m-560.hwdb contenant :

Code : Tout sélectionner

# Logitech M-560
keyboard:usb:v046DpC52B*
 KEYBOARD_KEY_90001=middle              # Middle Button map to Middle
 KEYBOARD_KEY_700E2=reserved           # Will Send leftalt when move left with middle button click
 KEYBOARD_KEY_70072=reserved            # Will send f23 when move left with middle button click
 KEYBOARD_KEY_700E3=reserved            # Will Send leftmeta when move right with middle button click. Also is sent when use Back button.
 KEYBOARD_KEY_7002B=reserved            # Will Send tab when move right with middle button click
 KEYBOARD_KEY_90004=left                # Left Scroll Click map to Left
 KEYBOARD_KEY_90005=right               # Right Scroll Click map to Right
 KEYBOARD_KEY_70007=back                # Back button sends second keycode. 700E3 is the first and already mapped.
 KEYBOARD_KEY_700E7=forward             # Forward button map to Forward
Puis mis à jour la base de donnée hardware de udev :

Code : Tout sélectionner

udevadm hwdb --update
reboot
Ça fonctionne mais le problème c'est que ça s'applique à mon clavier et ma souris qui ont le même vendorID et productID et donc certaines touches du clavier ne fonctionnent plus : D, alt+D, ...

Je pense qu'il doit être possible de rendre la règle "keyboard:usb:v046DpC52B*" plus précise afin qu'elle s'applique qu'à la souris non ?

Voici quelques informations à propos de la souris :
evtest /dev/input/by-id/usb-Logitech_USB_Receiver-if02-event-mouse

Code : Tout sélectionner

Input device ID: bus 0x3 vendor 0x46d product 0xc52b version 0x111
Input device name: "Logitech Unifying Device. Wireless PID:402d"
Encore la souris :
udevadm info -a -n /dev/input/by-id/usb-Logitech_USB_Receiver-if02-event-mouse

Code : Tout sélectionner

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.2/0003:046D:C52B.0003/input/input7/event4':
    KERNEL=="event4"
    SUBSYSTEM=="input"
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.2/0003:046D:C52B.0003/input/input7':
    KERNELS=="input7"
    SUBSYSTEMS=="input"
    DRIVERS==""
    ATTRS{name}=="Logitech Unifying Device. Wireless PID:402d"
    ATTRS{phys}=="usb-0000:00:1a.1-2:1"
    ATTRS{uniq}==""
    ATTRS{properties}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.2/0003:046D:C52B.0003':
    KERNELS=="0003:046D:C52B.0003"
    SUBSYSTEMS=="hid"
    DRIVERS=="logitech-djreceiver"

  looking at parent device '/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.2':
    KERNELS=="4-2:1.2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usbhid"
    ATTRS{bInterfaceClass}=="03"
    ATTRS{bInterfaceSubClass}=="00"
    ATTRS{bInterfaceProtocol}=="00"
    ATTRS{bNumEndpoints}=="01"
    ATTRS{supports_autosuspend}=="1"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bInterfaceNumber}=="02"

  looking at parent device '/devices/pci0000:00/0000:00:1a.1/usb4/4-2':
    KERNELS=="4-2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="2"
    ATTRS{idVendor}=="046d"
    ATTRS{speed}=="12"
    ATTRS{bNumInterfaces}==" 3"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{busnum}=="4"
    ATTRS{devnum}=="2"
    ATTRS{configuration}=="RQR12.01_B0019"
    ATTRS{bMaxPower}=="98mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="a0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="0"
    ATTRS{bcdDevice}=="1201"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="118279"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Logitech"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="c52b"
    ATTRS{bDeviceClass}=="00"
    ATTRS{product}=="USB Receiver"

  looking at parent device '/devices/pci0000:00/0000:00:1a.1/usb4':
    KERNELS=="usb4"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="0"
    ATTRS{idVendor}=="1d6b"
    ATTRS{speed}=="12"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{authorized_default}=="1"
    ATTRS{busnum}=="4"
    ATTRS{devnum}=="1"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="0mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="2"
    ATTRS{bcdDevice}=="0312"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{serial}=="0000:00:1a.1"
    ATTRS{version}==" 1.10"
    ATTRS{urbnum}=="32"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Linux 3.12.9-2-ARCH uhci_hcd"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="0001"
    ATTRS{bDeviceClass}=="09"
    ATTRS{product}=="UHCI Host Controller"

  looking at parent device '/devices/pci0000:00/0000:00:1a.1':
    KERNELS=="0000:00:1a.1"
    SUBSYSTEMS=="pci"
    DRIVERS=="uhci_hcd"
    ATTRS{irq}=="17"
    ATTRS{subsystem_vendor}=="0x1028"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x0c0300"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{local_cpus}=="00000000,00000000,00000000,00000003"
    ATTRS{device}=="0x3a68"
    ATTRS{enable}=="1"
    ATTRS{msi_bus}==""
    ATTRS{local_cpulist}=="0-1"
    ATTRS{vendor}=="0x8086"
    ATTRS{subsystem_device}=="0x0420"
    ATTRS{numa_node}=="-1"
    ATTRS{d3cold_allowed}=="0"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""
Du clavier :
evtest /dev/input/by-id/usb-Logitech_USB_Receiver-if02-event-kbd

Code : Tout sélectionner

Input device ID: bus 0x3 vendor 0x46d product 0xc52b version 0x111
Input device name: "Logitech Unifying Device. Wireless PID:4003"
De la souris, du clavier, du dongle :
dmesg | grep logitech-dj

Code : Tout sélectionner

[    3.070809] logitech-djreceiver 0003:046D:C52B.0003: hiddev0,hidraw0: USB HID v1.11 Device [Logitech USB Receiver] on usb-0000:00:1a.1-2/input2
[    3.074236] logitech-djdevice 0003:046D:C52B.0004: input,hidraw1: USB HID v1.11 Keyboard [Logitech Unifying Device. Wireless PID:402d] on usb-0000:00:1a.1-2:1
[    3.076213] logitech-djdevice 0003:046D:C52B.0005: input,hidraw2: USB HID v1.11 Keyboard [Logitech Unifying Device. Wireless PID:4003] on usb-0000:00:1a.1-2:2
xinput list

Code : Tout sélectionner

⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Logitech Unifying Device. Wireless PID:402d	id=8	[slave  pointer  (2)]
⎜   ↳ Logitech Unifying Device. Wireless PID:4003	id=9	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Power Button                            	id=7	[slave  keyboard (3)]
    ↳ Dell WMI hotkeys                        	id=10	[slave  keyboard (3)]
Merci par avance pour votre aide.
Dernière modification par Tetsumaki le mer. 19 févr. 2014, 20:20, modifié 1 fois.
Avatar de l’utilisateur
Tetsumaki
archer
Messages : 141
Inscription : jeu. 06 mai 2010, 05:44

Re: [udev] Mapper les touches Logitech M560

Message par Tetsumaki »

Après des heures et des heures à chercher une solution sur IRC et les forums, j'ai contourné le problème en prenant une Logitech M510 :bravo:
Répondre