ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
8 мая
1365015
starter48 (25.10.2023 08:32, просмотров: 5233)
Прошу помощи в поиске мыши с безглючной реализацией колеса горизонтальной прокрутки. 

Предлагаю провести тестирование кривизны работы колеса горизонтальной прокрутки у современных мышей. На это действо меня сподвигли лютые баги в реализации горизонтального колеса мышей Logitech: их драйвер мыши использует корявую логику переключения в режим эмуляции горизонтальной прокрутки через управление полосами прокрутки (scroll bar), вместо отправки сообщений WM_MOUSEHWHEEL.

Для участия надо иметь мышь с горизонтальной прокруткой и нормальную винду (эмулятор не годится) с установленным драйвером для этой мыши (т.е. горизонтальная прокрутка вашей мышью должна, как будто бы, работать в программах САПР).

Качаем, распаковываем, запускаем тестирующую утилиту (ссылка на исходники утилиты в конце сообщения):

https://drive.google.com/uc?export=download&id=1ugtJ1dqx1tDI-ufqZ9RGszmgwom4dhCQ

При запуске появится окно выбора режима теста с такими опциями:

return 0 from WM_MOUSE*WHEEL handler - возвращать 0 из обработчика событий колёс.

Add 200ms pause into WM_MOUSE*WHEEL handler - тормозить обработчик событий колёс.

Надо выполнить три теста:

1. с выключенными обеими опциями;

2. с включенной первой;

3. с включенной второй.

Т.о. для первого теста не включаем опции, а просто кликаем Start. Должно появиться большое окно с нарисованной вертикальной и горизонтальной полосами градиента.

Крутим сначала вертикальное, потом горизонтальное колесо на мыши: соответствующий градиент (а не окно) должен прокручиваться, а в строке состояния окна должна появиться строка Good: WM_MOUSEWHEEL - тест пройден. Ожидаю, что вертикальное колесо у всех мышей всегда нормально работает.

Если же вместо прокрутки градиента не происходит ничего, или же сдвигается полоса прокрутки окна (Scroll Bar), и в строке состояния окна появляется строка Bad: WM_HSCROLL - это означает, что драйвер мыши пытается управлять окном напрямую и т.о. тест считается проваленным.

Проведя тест, закрываем окно, и вернувшись в изначальное окно выбора режима включаем первую галочку и повторяем тест. Затем повторяем тест со второй галочкой. Одновременно обе галочки включать не нужно 🙂

Пишем отчёт, где сообщаем название модели мыши и номер проваленных тестов. Например, для моей мыши:

Logitech MX Master 3S

в тестах 2 и 3 (т.е. с любой включенной опцией) горизонтальное колесо глючит.


Мыши Logitech наименее интересны, ибо у меня их три разных и все глючат одинаково т.к. используют унифицированный драйвер.

Исходники утилиты (Delphi7):

https://drive.google.com/uc?export=download&id=1vCnvtbDcgH9oxAZ1zb2-tk-5BSXzWIdH