珍しく伝統的なLinux問題のお話をする。

私はELECOMのEX-G UltimateLaser Mouseを愛用している。

EX-Gシリーズは10個のボタンがあり、10番目はDPI変更ボタンになっているのだが、Ultimate Laser Mouseだけはファンクションボタンが3つある12ボタンマウスになっている。

せっかくなので、というか使いたい意図があって残り3つのボタンを使おうとしたのだが、 xevで見るとファンクションボタンが全部button 9になっている。 button 9は進むボタンに当てられていて、実際進むボタンとして機能する。

しかし、これでは困る。ドライバが間違っているのだろうか。 まずはデバイスがどう認識されているのか確認する。

I: Bus=0003 Vendor=056e Product=00d3 Version=0100
N: Name="ELECOM ELECOM UltimateLaser Mouse"
P: Phys=usb-0000:00:14.0-14.1/input0
S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb1/1-14/1-14.1/1-14.1:1.0/0003:056E:00D3.0003/input/input4
U: Uniq=
H: Handlers=event4 mouse0 
B: PROP=0
B: EV=17
B: KEY=1f0000 0 0 0 0
B: REL=143
B: MSC=10
Bus 001 Device 010: ID 056e:00d3 Elecom Co., Ltd 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x056e Elecom Co., Ltd
  idProduct          0x00d3 
  bcdDevice            0.01
  iManufacturer           1 ELECOM
  iProduct                2 ELECOM UltimateLaser Mouse
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x003b
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.00
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      89
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.00
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      46
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0000
  (Bus Powered)

うぅむ、正しく認識されているようだ。 ドライバはどうなっているのだろう。

[    16.960] (**) ELECOM ELECOM UltimateLaser Mouse: Applying InputClass "evdev pointer catchall"
[    16.960] (**) ELECOM ELECOM UltimateLaser Mouse: Applying InputClass "libinput pointer catchall"
[    16.960] (II) Using input driver 'libinput' for 'ELECOM ELECOM UltimateLaser Mouse'
[    16.960] (**) ELECOM ELECOM UltimateLaser Mouse: always reports core events
[    16.960] (**) Option "Device" "/dev/input/event4"
[    16.960] (**) Option "_source" "server/udev"
[    17.017] (II) event4  - ELECOM ELECOM UltimateLaser Mouse: is tagged by udev as: Mouse
[    17.017] (II) event4  - ELECOM ELECOM UltimateLaser Mouse: device is a pointer
[    17.017] (II) event4  - ELECOM ELECOM UltimateLaser Mouse: device removed
[    17.076] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:14.0/usb1/1-14/1-14.1/1-14.1:1.0/0003:056E:00D3.0003/input/input4/event4"
[    17.076] (II) XINPUT: Adding extended input device "ELECOM ELECOM UltimateLaser Mouse" (type: MOUSE, id 9)
[    17.077] (**) Option "AccelerationScheme" "none"
[    17.077] (**) ELECOM ELECOM UltimateLaser Mouse: (accel) selected scheme none/0
[    17.077] (**) ELECOM ELECOM UltimateLaser Mouse: (accel) acceleration factor: 2.000
[    17.077] (**) ELECOM ELECOM UltimateLaser Mouse: (accel) acceleration threshold: 4
[    17.134] (II) event4  - ELECOM ELECOM UltimateLaser Mouse: is tagged by udev as: Mouse
[    17.134] (II) event4  - ELECOM ELECOM UltimateLaser Mouse: device is a pointer
[    17.135] (II) config/udev: Adding input device ELECOM ELECOM UltimateLaser Mouse (/dev/input/mouse0)

Using input driver 'libinput' for 'ELECOM ELECOM UltimateLaser Mouse' …あぁ、そういえばManjaroはlibinputに移行していたなぁ…

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ELECOM ELECOM UltimateLaser Mouse         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)]
    ↳ FCL USB Keyboard                          id=8    [slave  keyboard (3)]
Device 'ELECOM ELECOM UltimateLaser Mouse':
        Device Enabled (151):   1
        Coordinate Transformation Matrix (153): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Natural Scrolling Enabled (288):       0
        libinput Natural Scrolling Enabled Default (289):       0
        libinput Scroll Methods Available (290):        0, 0, 1
        libinput Scroll Method Enabled (291):   0, 0, 0
        libinput Scroll Method Enabled Default (292):   0, 0, 0
        libinput Button Scrolling Button (293): 2
        libinput Button Scrolling Button Default (294): 2
        libinput Middle Emulation Enabled (295):        1
        libinput Middle Emulation Enabled Default (296):        0
        libinput Accel Speed (297):     0.000000
        libinput Accel Speed Default (298):     0.000000
        libinput Accel Profiles Available (299):        1, 1
        libinput Accel Profile Enabled (300):   1, 0
        libinput Accel Profile Enabled Default (301):   1, 0
        libinput Left Handed Enabled (302):     0
        libinput Left Handed Enabled Default (303):     0
        libinput Send Events Modes Available (273):     1, 0
        libinput Send Events Mode Enabled (274):        0, 0
        libinput Send Events Mode Enabled Default (275):        0, 0
        Device Node (276):      "/dev/input/event4"
        Device Product ID (277):        1390, 211
        libinput Drag Lock Buttons (304):       <no items>
        libinput Horizontal Scroll Enabled (305):       1

やはり正しく認識されているけれど、ボタンの数は9だと思われている。

1 2 3 4 5 6 7 8 9 

しかしxmodmapでは10ボタンだと思われている。

There are 10 pointer buttons defined.

    Physical        Button
     Button          Code
        1              1
        2              2
        3              3
        4              4
        5              5
        6              6
        7              7
        8              8
        9              9
       10             10

何度も言うが、 Ultimate Laser Mouse は12ボタンである

自力解決できず、フォーラムに質問してみたのだが、回答はつかなかった。 (解決した場合はこの記事を撤回し、投稿し直す予定)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください