вторник, 6 марта 2012 г.

Logitech G300 не корректно работает в Ubuntu

Купил на днях себе мышку: Logitech Gaming Mouse G300
Небольшая, симпатичная, недорогая, кнопок много и профили DPI запоминает - что ещё для счастья надо? Чтобы работала в линуксе - это же очевидно! Вот только, когда я тащил её домой, ну никак не мог предположить, что уж с такой элементарной штучкой, как мышка, линукс будет глючить, но как оказалось...

Пришёл, подключил:

Загружаю линь. Хм-м-м, странно, что-то не так, почему-то левая кнопка мыши при нажатии делает всё что угодно, только не клик на выбранном элементе. Ок, подключаем мышу к компу с виндой - всё норм. Странно.
Возвращаемся обратно, грепаем логи:

$ dmesg | grep G300
[    2.648301] input: Logitech Gaming Mouse G300 as /devices/pci0000:00/0000:00:1d.1/usb6/6-2/6-2:1.0/input/input2                                                                                                                          
[    2.648389] generic-usb 0003:046D:C246.0001: input,hidraw0: USB HID v1.10 Mouse [Logitech Gaming Mouse G300] on usb-0000:00:1d.1-2/input0                                                                                                
[    2.659127] input: Logitech Gaming Mouse G300 as /devices/pci0000:00/0000:00:1d.1/usb6/6-2/6-2:1.1/input/input3                                                                                                                          
[    2.659226] generic-usb 0003:046D:C246.0002: input,hiddev0,hidraw1: USB HID v1.10 Keyboard [Logitech Gaming Mouse G300] on usb-0000:00:1d.1-2/input1

Щито? Keyboard? Да ну? Ок, смотрим, что там у нас в устройствах ввода:

$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech Gaming Mouse G300                id=8    [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)]
    ↳   USB Keyboard                            id=10   [slave  keyboard (3)]
    ↳   USB Keyboard                            id=11   [slave  keyboard (3)]
    ↳ Logitech Gaming Mouse G300                id=9    [slave  keyboard (3)]

Действительно, Logitech Gaming Mouse G300 записалась в клавиатуры :-D Почему так происходит? А хрен его знает, надо багрепорт разработчикам иксов писать :-D
Гуглим решение, находим тут, смотрим свойства устройства по его идентификатору, в моём случае id=9.

$ xinput list-props 9
Device 'Logitech Gaming Mouse G300':
        Device Enabled (121):   1
        Coordinate Transformation Matrix (123): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        Device Accel Profile (247):     0
        Device Accel Constant Deceleration (248):       1.000000
        Device Accel Adaptive Deceleration (249):       1.000000
        Device Accel Velocity Scaling (250):    10.000000
        Evdev Axis Inversion (251):     0, 0
        Evdev Axis Calibration (252):   <no items>
        Evdev Axes Swap (253):  0
        Axis Labels (254):      "Abs Misc" (264), "Abs Misc" (264), "Abs Misc" (264), "Abs Misc" (264)

Device Enabled (121): 1 - Устройство включено. Выключаем:
$ xinput set-prop 9 121 0

Работает! Теперь, нужно автоматизировать, берём скрипт из обожаемой нами всеми убунтушниками арч-вики и пихаем в автозагрузку.

#!/bin/sh
DEVICE_ID=`xinput list |  grep "Logitech Gaming Mouse G300" | grep keyboard | sed 's/.*id=\([0-9]*\).*/\1/'`

if xinput -list-props $DEVICE_ID | grep "Device Enabled" | grep "1$" > /dev/null
then
   xinput set-int-prop $DEVICE_ID "Device Enabled" 8 0
fi 
 
 Например, в кедах достаточно кинуть исполняемый файл со скриптом в /home/user/.kde/Autostart/

Комментариев нет:

Отправить комментарий