Почему моя мышь с двойным прокруткой работает только так, как будто у нее одно колесо?

У меня есть оптическая колесная тележка GreatEye, у которой есть 2 колесика прокрутки и 5 "кнопок" (три включают середину как «щелчок» на первом колесе прокрутки) и левую и правую боковые кнопки (темные области на изображении ниже) и, несмотря на xinput --list-props выглядящий правильно. xinput --list-props колеса прокрутки ведут себя как кнопки 4 и 5 вместо второго, работающего на 6 и 7, почему это и как его исправить? (получите 2-е колесо прокрутки, работающее как горизонтальное колесо прокрутки)?

Изображение продукта изготовителя A4Tech Optical GreatEye Wheelmouse

Выше изображения с сайта A4Tech

Вывод из xinput list-props # где # – правильный идентификатор устройства:

 Device 'ImExPS/2 Generic Explorer Mouse': Device Enabled (142): 1 Coordinate Transformation Matrix (144): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 Device Accel Profile (269): 0 Device Accel Constant Deceleration (270): 1.000000 Device Accel Adaptive Deceleration (271): 1.000000 Device Accel Velocity Scaling (272): 10.000000 Device Product ID (261): 2, 6 Device Node (262): "/dev/input/event1" Evdev Axis Inversion (273): 0, 0 Evdev Axes Swap (275): 0 Axis Labels (276): "Rel X" (152), "Rel Y" (153), "Rel Horiz Wheel" (267), "Rel Vert Wheel" (268) Button Labels (277): "Button Left" (145), "Button Middle" (146), "Button Right" (147), "Button Wheel Up" (148), "Button Wheel Down" (149), "Button Horiz Wheel Left" (150), "Button Horiz Wheel Right" (151), "Button Side" (265), "Button Extra" (266), "Button Unknown" (264), "Button Unknown" (264), "Button Unknown" (264), "Button Unknown" (264) Evdev Scrolling Distance (278): 1, 1, 1 Evdev Middle Button Emulation (279): 0 Evdev Middle Button Timeout (280): 50 Evdev Third Button Emulation (281): 0 Evdev Third Button Emulation Timeout (282): 1000 Evdev Third Button Emulation Button (283): 3 Evdev Third Button Emulation Threshold (284): 20 Evdev Wheel Emulation (285): 0 Evdev Wheel Emulation Axes (286): 0, 0, 4, 5 Evdev Wheel Emulation Inertia (287): 10 Evdev Wheel Emulation Timeout (288): 200 Evdev Wheel Emulation Button (289): 4 Evdev Drag Lock Buttons (290): 0 

Используя xev я видел, что события, которые видны для двух колесиков прокрутки, идентичны. Для меня это говорит о том, что это проблема ядра / модуля, я использую Debian «Jessie» с backports – последнее означает, что в настоящее время я использую, как uname -a :

 Linux XXXXX 4.9.0-0.bpo.1-rt-amd64 #1 SMP PREEMPT RT Debian 4.9.2-2~bpo8+1 (2017-01-26) x86_64 GNU/Linux 

В качестве спекулятивной гипотезы мне интересно (дайте ограниченное число мышей, которые на самом деле имеют больше одного реального колеса прокрутки), может ли это быть чем-то связанным с ядром, поэтому в качестве дополнительного ответа, где я мог бы начать искать больше о том, что происходит не так?

Обновление: возможно, я был неправ, в этом:

 Evdev Wheel Emulation Axes (286): 0, 0, 4, 5 

должно быть:

 Evdev Wheel Emulation Axes (286): 6, 7, 4, 5 

но просто изменяя это с помощью xinput set-props # 286 6 7 4 5 где # – правильный идентификационный номер, сам по себе не производит никаких изменений …

Любопытно, что grep -ping моего /var/log/Xorg.0.log файла дает:

 [ 46.173] (II) config/udev: Adding input device ImExPS/2 Generic Explorer Mouse (/dev/input/event1) [ 46.173] (**) ImExPS/2 Generic Explorer Mouse: Applying InputClass "evdev pointer catchall" [ 46.173] (**) ImExPS/2 Generic Explorer Mouse: Applying InputClass "evdev pointer catchall" [ 46.173] (II) Using input driver 'evdev' for 'ImExPS/2 Generic Explorer Mouse' [ 46.173] (**) ImExPS/2 Generic Explorer Mouse: always reports core events [ 46.173] (**) evdev: ImExPS/2 Generic Explorer Mouse: Device: "/dev/input/event1" [ 46.173] (--) evdev: ImExPS/2 Generic Explorer Mouse: Vendor 0x2 Product 0x6 [ 46.173] (--) evdev: ImExPS/2 Generic Explorer Mouse: Found 9 mouse buttons [ 46.173] (--) evdev: ImExPS/2 Generic Explorer Mouse: Found scroll wheel(s) [ 46.173] (--) evdev: ImExPS/2 Generic Explorer Mouse: Found relative axes [ 46.173] (--) evdev: ImExPS/2 Generic Explorer Mouse: Found x and y relative axes [ 46.173] (II) evdev: ImExPS/2 Generic Explorer Mouse: Configuring as mouse [ 46.173] (II) evdev: ImExPS/2 Generic Explorer Mouse: Adding scrollwheel support [ 46.173] (**) evdev: ImExPS/2 Generic Explorer Mouse: YAxisMapping: buttons 4 and 5 [ 46.173] (**) evdev: ImExPS/2 Generic Explorer Mouse: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200 [ 46.173] (II) XINPUT: Adding extended input device "ImExPS/2 Generic Explorer Mouse" (type: MOUSE, id 9) [ 46.174] (II) evdev: ImExPS/2 Generic Explorer Mouse: initialized for relative axes. [ 46.174] (**) ImExPS/2 Generic Explorer Mouse: (accel) keeping acceleration scheme 1 [ 46.174] (**) ImExPS/2 Generic Explorer Mouse: (accel) acceleration profile 0 [ 46.174] (**) ImExPS/2 Generic Explorer Mouse: (accel) acceleration factor: 2.000 [ 46.174] (**) ImExPS/2 Generic Explorer Mouse: (accel) acceleration threshold: 4 [ 46.174] (II) config/udev: Adding input device ImExPS/2 Generic Explorer Mouse (/dev/input/mouse0) 

Обратите внимание, что хотя есть строка, включающая YAxisMapping: buttons 4 and 5 нет соответствующих XAxisMapping: buttons 6 and 7 – что наводит на размышления …

Примечание: (в ответ на комментарий) это мышь для подключения PS / 2, поэтому диагностика, связанная с USB, вероятно, не будет полезна.

После установки пакета evtest я обнаружил, что события для двух колесиков прокрутки имели тот же type 2 (EV_REL) , code 8 (EV_WHEEL) но первое колесо прокрутки имело value 1 или -1 (для движения в двух противоположных направлениях) но второе колесо прокрутки имело value 2 или -2 . Интересно, что при использовании я заметил, что в использовании я заметил, что в некоторых приложениях второе колесо прокрутки создало прокручивающие действия TWICE, такие же большие, как и для первого, – который начинает звучать так, как будто какой-то код может ошибочно интерпретировать значение как количество движения, а не «направление», !

One Solution collect form web for “Почему моя мышь с двойным прокруткой работает только так, как будто у нее одно колесо?”

Кажется, это было отмечено пятнадцать лет назад! Ряд сообщений за пару дней (2002/07 / 17-18) в списке рассылки Linux Kernel с заголовком «Поддержка основного ввода PS2» предполагает, что это было известно, но поскольку было несколько способов обработки те же данные, которые, вероятно, должны были обрабатываться для этого конкретного продукта с помощью параметра ручного модуля. Однако это, казалось, не материализовалось. Подробности можно увидеть в этом сообщении:

Проблема в том, что драйвер A4Tech не волнует. Он просто интерпретирует входящие данные так, как я описал: + -1 – вертикальное перемещение, + -2 – горизонтальное, 0 – движение, а все остальное игнорируется … Это интерпретация A4Tech протоколов ImPS / 2 и ExPS / 2 ,

Поэтому мы можем либо предположить (например, GPM), что движение колеса может быть только + -1, и поэтому мы можем смело предположить, что + -2 – горизонтальное перемещение, а затем все в порядке, или нам нужен какой-то параметр, который повлияет на драйвер мыши поведение.

Все мои (A4Tech …) колеса колес мыши PS / 2 сообщают только колесо + -1 даже с частотой дискретизации 10 Гц, но я не думаю, что мои мыши являются репрезентативной выборкой доступных версий ExPS / 2.

Нет, обычные мыши ImPS / 2 и ExPS / 2 действительно могут сообщать значения, превышающие 1 для движения колеса.

Мы можем либо сделать некоторые эвристические (когда-либо видели движение 3? Если да, то это не мышь A4Tech …), либо перейти к параметру командной строки.

Думаю, я вытащу некоторых из моих A4Tech-мышей и буду их мучить, чтобы увидеть, реагируют ли они на какую-то последовательность …

Другое дело, тогда мышь USB A4Tech, в которой используется кнопка, чтобы различать колеса, в то время как спецификация USB снабжает два колеса на мыши 🙁 Но это, по крайней мере, можно обнаружить.


Войтех Павлик
SuSE Labs

Поэтому я намерен задействовать немного хакера ядра, чтобы добавить параметр модуля в ./drivers/input/mouse/psmouse_base.c чтобы ./drivers/input/mouse/psmouse_base.c данные, считываемые с мыши, для его исправления, если это разрешено для случая psmouse_type являющегося PSMOUSE_IMEX .

  • Перейти к последнему приглашению в терминале (или tmux)
  • Как я могу препятствовать тому, чтобы imwheel позволял прокручивать события прокрутки?
  • Поддерживает ли поддержка дистрибутива Linux настройку чувствительности колесика мыши?
  • Приложение Qt Disobeying Xmodmap
  • mupdf непрерывная прокрутка
  • Linux Mint 12 прокрутка двумя пальцами
  • Как увеличить горизонтальную чувствительность прокрутки мыши?
  • Вертикальная прокрутка виртуального терминала очень медленная
  • Изменить колесо мыши и сенсорную панель с двумя пальцами
  • Как поместить текущую строку вверху / центру / внизу экрана в vim?
  • Есть ли способ отключить прокрутку мыши в combobox в GTK / Gnome и Qt / KDE?
  • Interesting Posts

    Разрешения на печать непосредственно на USB-принтер

    Предотвращение автоматического подключения определенного USB-устройства

    Проблема компиляции документации Binutils

    Как запустить графическое приложение в контейнере под Wayland?

    Почему в выводе температуры SCT отображаются «пропущенные» значения температуры?

    Можно ли изменить тип несмонтированного раздела из другого раздела на диске?

    Ноутбук говорит, что WIFI является жестко заблокированным Atheros AR9565

    Драйвер CUPS для HP Laserjet CP1525nw

    Локальный unix-сокет – приблизительное представление о пропускной способности

    Как можно скрыть короткие клавиши X11 программой Python?

    вытягивать линии, которые содержат 1 в 3-й колонке

    Awk / sed: добавить номера строк в текст из диапазона

    Как отправить команду в фоновый режим с помощью ssh на удаленной системе

    сценарий настройки ядра Linux

    Есть ли скриптовый почтовый клиент с богатым ui?

    Linux и Unix - лучшая ОС в мире.