LINUX.ORG.RU

Помогите удалить джойстик из системы

 , ,


1

5

При загрузке, UEFI выдает, что у меня подключено 2 квлавиатурыи 2 мыши. Реально у меня только одна клавиатура и одна мышь таких моделей:
- Logitech Wireless Keyboard K350
- A4Tech Cord Mouse X7 XL-740K

При загрузке, система создает еще и виртауальный джойстик, который постоянно поворачивает влево (тестировал на нескольких играх), хотя джойстика никакого нет.

Вот вывод xinput:

⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech Unifying Device. Wireless PID:200a id=9 [slave pointer (2)]
⎜ ↳ A4TECH USB Device id=10 [slave pointer (2)]
⎜ ↳ A4TECH USB Device id=11 [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)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]


Содержимое /dev/input:
event0
event1
event10
event11
event12
event13
event14
event2
event3
event4
event5
event6
event7
event8
event9
js0
mice
mouse0


Вывод команды udevadm info -a -p $(udevadm info -q path -n /dev/input/js0):

looking at device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/1-1.4:1.0/input/input4/js0':
KERNEL==«js0»
SUBSYSTEM==«input»
DRIVER==«»

looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/1-1.4:1.0/input/input4':
KERNELS==«input4»
SUBSYSTEMS==«input»
DRIVERS==«»
ATTRS{name}==«A4TECH USB Device»
ATTRS{phys}==«usb-0000:00:1a.0-1.4/input0»
ATTRS{uniq}==«»
ATTRS{properties}==«0»

looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/1-1.4:1.0':
KERNELS==«1-1.4:1.0»
SUBSYSTEMS==«usb»
DRIVERS==«usbhid»
ATTRS{bInterfaceClass}==«03»
ATTRS{bInterfaceSubClass}==«01»
ATTRS{bInterfaceProtocol}==«01»
ATTRS{bNumEndpoints}==«01»
ATTRS{supports_autosuspend}==«1»
ATTRS{bAlternateSetting}==" 0"
ATTRS{bInterfaceNumber}==«00»

looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4':
KERNELS==«1-1.4»
SUBSYSTEMS==«usb»
DRIVERS==«usb»
ATTRS{bDeviceSubClass}==«00»
ATTRS{bDeviceProtocol}==«00»
ATTRS{devpath}==«1.4»
ATTRS{idVendor}==«09da»
ATTRS{speed}==«12»
ATTRS{bNumInterfaces}==" 2"
ATTRS{bConfigurationValue}==«1»
ATTRS{bMaxPacketSize0}==«8»
ATTRS{busnum}==«1»
ATTRS{devnum}==«4»
ATTRS{configuration}==«»
ATTRS{bMaxPower}==«100mA»
ATTRS{authorized}==«1»
ATTRS{bmAttributes}==«a0»
ATTRS{bNumConfigurations}==«1»
ATTRS{maxchild}==«0»
ATTRS{bcdDevice}==«0102»
ATTRS{avoid_reset_quirk}==«0»
ATTRS{quirks}==«0x0»
ATTRS{version}==" 1.10"
ATTRS{urbnum}==«42568»
ATTRS{ltm_capable}==«no»
ATTRS{manufacturer}==«A4TECH»
ATTRS{removable}==«removable»
ATTRS{idProduct}==«9090»
ATTRS{bDeviceClass}==«00»
ATTRS{product}==«USB Device»

looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1':
KERNELS==«1-1»
SUBSYSTEMS==«usb»
DRIVERS==«usb»
ATTRS{bDeviceSubClass}==«00»
ATTRS{bDeviceProtocol}==«01»
ATTRS{devpath}==«1»
ATTRS{idVendor}==«8087»
ATTRS{speed}==«480»
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}==«1»
ATTRS{bMaxPacketSize0}==«64»
ATTRS{busnum}==«1»
ATTRS{devnum}==«2»
ATTRS{configuration}==«»
ATTRS{bMaxPower}==«0mA»
ATTRS{authorized}==«1»
ATTRS{bmAttributes}==«e0»
ATTRS{bNumConfigurations}==«1»
ATTRS{maxchild}==«6»
ATTRS{bcdDevice}==«0000»
ATTRS{avoid_reset_quirk}==«0»
ATTRS{quirks}==«0x0»
ATTRS{version}==" 2.00"
ATTRS{urbnum}==«40»
ATTRS{ltm_capable}==«no»
ATTRS{removable}==«fixed»
ATTRS{idProduct}==«0024»
ATTRS{bDeviceClass}==«09»

looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb1':
KERNELS==«usb1»
SUBSYSTEMS==«usb»
DRIVERS==«usb»
ATTRS{bDeviceSubClass}==«00»
ATTRS{bDeviceProtocol}==«00»
ATTRS{devpath}==«0»
ATTRS{idVendor}==«1d6b»
ATTRS{speed}==«480»
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}==«1»
ATTRS{bMaxPacketSize0}==«64»
ATTRS{authorized_default}==«1»
ATTRS{busnum}==«1»
ATTRS{devnum}==«1»
ATTRS{configuration}==«»
ATTRS{bMaxPower}==«0mA»
ATTRS{authorized}==«1»
ATTRS{bmAttributes}==«e0»
ATTRS{bNumConfigurations}==«1»
ATTRS{maxchild}==«2»
ATTRS{bcdDevice}==«0308»
ATTRS{avoid_reset_quirk}==«0»
ATTRS{quirks}==«0x0»
ATTRS{serial}==«0000:00:1a.0»
ATTRS{version}==" 2.00"
ATTRS{urbnum}==«24»
ATTRS{ltm_capable}==«no»
ATTRS{manufacturer}==«Linux 3.8.0-30-generic ehci_hcd»
ATTRS{removable}==«unknown»
ATTRS{idProduct}==«0002»
ATTRS{bDeviceClass}==«09»
ATTRS{product}==«EHCI Host Controller»

looking at parent device '/devices/pci0000:00/0000:00:1a.0':
KERNELS==«0000:00:1a.0»
SUBSYSTEMS==«pci»
DRIVERS==«ehci-pci»
ATTRS{irq}==«16»
ATTRS{subsystem_vendor}==«0x1462»
ATTRS{broken_parity_status}==«0»
ATTRS{class}==«0x0c0320»
ATTRS{companion}==«»
ATTRS{consistent_dma_mask_bits}==«32»
ATTRS{dma_mask_bits}==«32»
ATTRS{local_cpus}==«00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000000f»
ATTRS{device}==«0x1c2d»
ATTRS{uframe_periodic_max}==«100»
ATTRS{msi_bus}==«»
ATTRS{local_cpulist}==«0-3»
ATTRS{vendor}==«0x8086»
ATTRS{subsystem_device}==«0x7681»
ATTRS{numa_node}=="-1"
ATTRS{d3cold_allowed}==«1»

looking at parent device '/devices/pci0000:00':
KERNELS==«pci0000:00»
SUBSYSTEMS==«»
DRIVERS==«»


Попробовал написать правило для udev такого содержания:

KERNEL==«js[0-9]*», SUBSYSTEM==«input», SUBSYSTEM==«usb», \
ATTRS{idVendor}==«09da», ATTRS{idProduct}==«9090», \
OPTIONS+=«ignore_device»

оно не помогло.

Что можно сделать в этом случае? Судя по тому, что нашел в поиске, эта проблема у всех мышей A4Tech X7, обычно народ пишет скрипты, чтобы искать файл устройства в /dev и удалять его, либо не загружать модуль для джойстиков. Мне бы хотелось нормальное решение(через udev?), которое бы не создавало это левое устройство, потому как хотелось бы подключить в будущем нормальный джойстик.


А выяснил какой кнопке/кнопкам соответствует джойстик?

leonidko ★★★ ()

Тоже видится джой с этой мышкой, но ничего никуда не поворачивает. Ты бы мышку в ремонтик сносил, что-ли.

NeverLoved ★★★★★ ()
Ответ на: комментарий от leonidko

А выяснил какой кнопке/кнопкам соответствует джойстик?

А как? И кнопки ли это?

kodx ()
Ответ на: комментарий от NeverLoved

Тоже видится джой с этой мышкой, но ничего никуда не поворачивает. Ты бы мышку в ремонтик сносил, что-ли.

Мышь работает нормально, мне бы это виртуальное устройство из системы удалить, чтобы не мешалось.

kodx ()
Ответ на: комментарий от kodx

Мышь работает нормально, мне бы это виртуальное устройство из системы удалить, чтобы не мешалось.

rm? :)
rmmod? :)

tazhate ★★★★★ ()
Ответ на: комментарий от tazhate

В оригинальном сообщении об этом написал, что хотелось сделать правило для udev, чтобы устройство вообще не создавалось, а не городить хаки разного рода.

kodx ()
Ответ на: комментарий от kodx

В оригинальном сообщении об этом написал, что хотелось сделать правило для udev, чтобы устройство вообще не создавалось, а не городить хаки разного рода.

Дык а причем тут правило для udev? Заблеклисти модуль джойстика и все.

tazhate ★★★★★ ()
Ответ на: комментарий от tazhate

Так хотелось бы джойстиком пользоваться в будущем, настоящим. Если модуль заблеклистить, то тогда уже другой не подключить. Об этом тоже написано в оригинальном сообщении.

kodx ()

Я не понял, кавычки что, и в <pre> теперь елочками?

cdshines ★★★★ ()
Ответ на: комментарий от kodx

Так хотелось бы джойстиком пользоваться в будущем, настоящим

У тебя он уже есть?

tazhate ★★★★★ ()
Ответ на: комментарий от tazhate

Да, две штуки (XBox 360 wired controller и Defender Cobra M5). Подключать уже пробовал, но мешает джойстик от мышки своим постоянным поворотом влево.

kodx ()
xinput list --long 10
xinput list --long 11

Потом надо выбрать что выключать с помощью

xinput disable `id`

Это предварительно.

leonidko ★★★ ()

А вообще, если «джойстик» всегда поворачивает влево, то я бы подумал что у меня «залипла» какая то клавиша.

leonidko ★★★ ()
Ответ на: комментарий от leonidko

xinput list --long 10


A4TECH USB Device id=10 [slave pointer (2)]
Reporting 6 classes:
Class originated from: 10. Type: XIButtonClass
Buttons supported: 7
Button labels: «Button 0» «Button Unknown» «Button Unknown» «Button Wheel Up» «Button Wheel Down» «Button Horiz Wheel Left» «Button Horiz Wheel Right»
Button state:
Class originated from: 10. Type: XIKeyClass
Keycodes supported: 248
Class originated from: 10. Type: XIValuatorClass
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 10. Type: XIValuatorClass
Detail for Valuator 1:
Label: Rel Y
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 10. Type: XIValuatorClass
Detail for Valuator 2:
Label: Rel Horiz Wheel
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 10. Type: XIScrollClass
Scroll info for Valuator 2
type: 2 (horizontal)
increment: 1.000000
flags: 0x0



xinput list --long 11


A4TECH USB Device id=11 [slave pointer (2)]
Reporting 7 classes:
Class originated from: 11. Type: XIButtonClass
Buttons supported: 24
Button labels: «Button Left» «Button Middle» «Button Right» «Button Wheel Up» «Button Wheel Down» «Button Horiz Wheel Left» «Button Horiz Wheel Right» «Button Side» «Button Extra» «Button Forward» «Button Back» «Button Task» «Button Unknown» «Button Unknown» «Button Unknown» «Button Unknown» «Button Unknown» «Button Unknown» «Button Unknown» «Button Unknown» «Button Unknown» «Button Unknown» «Button Unknown» «Button Unknown»
Button state:
Class originated from: 11. Type: XIValuatorClass
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 11. Type: XIValuatorClass
Detail for Valuator 1:
Label: Rel Y
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 11. Type: XIValuatorClass
Detail for Valuator 2:
Label: Rel Horiz Wheel
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 11. Type: XIValuatorClass
Detail for Valuator 3:
Label: Rel Vert Wheel
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 11. Type: XIScrollClass
Scroll info for Valuator 2
type: 2 (horizontal)
increment: 1.000000
flags: 0x0
Class originated from: 11. Type: XIScrollClass
Scroll info for Valuator 3
type: 1 (vertical)
increment: -1.000000
flags: 0x2 ( preferred )


Как узнать кто из них джойстик? Подозреваю, что id=10.

kodx ()
Последнее исправление: kodx (всего исправлений: 1)
Ответ на: комментарий от leonidko

Так его ведь нет, он там что угодно может посылать и непонятно, что это там система такое нашла и подумала, что это джойстик. Могу предположить, что это вообще может быть какой-то интерфейс для взаимодействия с контроллером в мыше, который определился как джойстик.

kodx ()
Ответ на: комментарий от cdshines

Да, я вставлял все без елочек, движок их сам добавил.

kodx ()
Ответ на: комментарий от kodx

Умных мыслей у меня нет. Так что посоветую открыть эмулятор терминала и сделать

 xinput disable 10 
и подёргать грызуна. Чистой воды грязный хак. Если курсор будет бегать, то можно уже проверять в играх.

leonidko ★★★ ()
xinput --get-feedbacks 10
xinput --get-feedbacks 11
leonidko ★★★ ()

очорт... шел 2013-й год... В онтопике появились неудаляемые джойстики... Не к добру Линус картинку поменял.

slackwarrior ★★★★★ ()

При загрузке, UEFI выдает, что у меня подключено 2 квлавиатурыи 2 мыши

тык все верно, у тебя 2 клавиатуры и 2 мыши. вангую два приемника или один приемник и один юсб-штекер.

Джойстик левый какой-то. Должно быть по два девайса - мышь и клавиатура.

parrto ()
Ответ на: комментарий от slackwarrior

Не стоит паниковать, эта проблема уже давно существует, просто её никто не хотел решать. Она присутствует у всех пользователей данной серии мышей.

kodx ()
Ответ на: комментарий от parrto

Клавиатура беспроводная с приемником, мышь на проводе. Джойстик появляется от мыши и в дереве устройство относится к мыше, а вернее к какой-то клавиатуре в мыше, которая тоже добавляется.

kodx ()

Если посмотреть на правило для udev, которое я приводил:

KERNEL=="js[0-9]*", SUBSYSTEM=="input", SUBSYSTEM=="usb", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="9090", OPTIONS+="ignore_device"
то там есть ошибка, опция «ignore_device» была удалена http://lwn.net/Articles/364728/ еще в 2009 году, разработчики признались в своём бессилии контролировать процесс добавления устройств(?).

Чтобы все было правильно, надо дописывать драйвер, который отвечает за usb в ядре, иначе даже после удаления файлов устройств в /dev они будут висеть в sysfs и другие устройства не смогут занять их место. Хорошо хоть Xorg опирается на /dev, при определении устройств ввода.

Вот мой вариант решения проблемы - правило для udev:

$ cat /etc/udev/rules.d/99-remove-a4tech-joystick.rules

SUBSYSTEMS=="usb", ATTRS{bInterfaceProtocol}=="01", ATTRS{bInterfaceNumber}=="00", ENV{ID_VENDOR_ID}=="09da", ENV{ID_MODEL_ID}=="9090", ENV{ID_VENDOR_ENC}=="A4TECH", RUN:="/bin/sh -c '/bin/rm -f $env{DEVNAME}; for i in $env{DEVLINKS}; do /bin/rm -f $i; done'", SYMLINK:="", OPTIONS+="last_rule"
Что тут происходит - при обнаружении устройства по заданным параметрам, удаляется файл этого устройства и все симлинки на него. Опция last_rule говорит, что это правильно должно быть последним.

kodx ()
Ответ на: комментарий от kodx

там точно дескриптор типа «джойстик»? должны быть дескрипторы «hid mouse» «hid keyboard»

parrto ()
Ответ на: комментарий от parrto

У него родитель это клавиатура, которая в мыше. Я уже написал правило для удаления этой левой клавиатуры с джойстиком.

kodx ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.