Прокрутка мышью на Mac идёт рывками — измерьте сами
Прокрутите в каждой рамке ниже. Инструмент записывает именно то, что macOS передаёт программам при каждом событии прокрутки, и рисует оба устройства на одной шкале. Почему колесо ощущается хуже, становится видно примерно за две секунды.
Трекпад
ожиданиеПрокрутите двумя пальцами внутри рамки. Сделайте рывок и отпустите, чтобы записалась и инерция.
- Различных величин шага
- —
- События
- —
- События / секунда
- —
- Медианный шаг
- —
- Наибольший шаг
- —
- Затухающий хвост
- —
Колесо мыши
ожиданиеПокрутите колесо внутри рамки примерно на то же расстояние, что и только что.
- Различных величин шага
- —
- События
- —
- События / секунда
- —
- Медианный шаг
- —
- Наибольший шаг
- —
- Затухающий хвост
- —
Что вы видите
Каждая вертикальная линия — одно событие прокрутки: положение по горизонтали означает момент его прихода, высота — запрошенное расстояние сдвига страницы. Обе панели используют одинаковую ширину полос и одинаковую вертикальную шкалу, поэтому формы можно сравнивать напрямую.
Главное число — количество различных величин шага
Трекпад в каждом событии сообщает непрерывно меняющееся расстояние и продолжает присылать события после того, как пальцы покинули поверхность. Колесо снова и снова сообщает один и тот же фиксированный щелчок. Трекпады обычно выдают десятки различных значений, колёса — часто ровно одно.
Это одно число объясняет всё. Когда колесо каждый раз присылает одинаковый скачок, macOS нечего интерполировать и страница двигается жёсткими ступенями. Ничего не сломано, и более дорогая мышь этого не изменит — так сообщает само оборудование.
Метод и ограничения
Запись использует стандартное DOM-событие «wheel». Каждая панель начинается с вашего первого события и останавливается после 500 мс покоя. Значения — это то, что раскрывает браузер, то есть уровень выше самого устройства: macOS уже применила собственную обработку прокрутки, а браузер под нагрузкой может объединять события. Сравнивайте два своих устройства на одной машине, а не абсолютные числа между машинами.
Частые вопросы
Почему на Mac прокрутка мышью идёт рывками, а трекпадом — плавно?
Потому что эти устройства присылают принципиально разные сигналы. Трекпад много раз в секунду сообщает непрерывно меняющееся расстояние и продолжает сообщать после того, как пальцы поднялись, — это затухание и есть инерция, которую вы чувствуете. Колесо на каждом щелчке сообщает одно и то же фиксированное значение, а между ними — ничего. macOS применяет значение колеса напрямую, поэтому страница двигается ступенями. Тест на этой странице показывает оба сигнала на одной шкале.
Решит ли более дорогая мышь проблему рывков прокрутки в macOS?
Обычно нет. Величина шага — свойство энкодера колеса, а не цены. Некоторые высокоточные колёса действительно сообщают более мелкие шаги, и тест покажет это как большее количество различных величин шага. Но большинство мышей, включая премиальные, сообщают одно повторяющееся значение, и никакие затраты не изменят способ интерполяции в macOS, поскольку интерполировать нечего.
Что означает «различных величин шага»?
Это количество разных расстояний прокрутки, которые устройство сообщило за одну запись, после округления до двух знаков для отсечения шума вычислений с плавающей точкой. Трекпад обычно выдаёт десятки, потому что каждое событие немного отличается. Колесо часто выдаёт ровно одно. Это число точнее всего объясняет разницу в ощущениях.
Инструмент читает оборудование напрямую?
Нет. Он читает стандартные события «wheel», которые получает браузер, — это уровень выше устройства: macOS уже применила собственную обработку прокрутки, а браузер под нагрузкой может объединять события. Поэтому абсолютные значения различаются между браузерами и версиями macOS. Осмысленный результат — сравнение двух ваших устройств на одной машине, а не сами величины.
В каких браузерах это работает?
Во всех, включая Safari и Firefox. Тест использует только стандартное DOM-событие «wheel», поэтому WebHID не нужен и запрос доступа к устройству не появляется. Ничего не отправляется и не сохраняется — перезагрузите страницу, и записи исчезнут.
Можно ли действительно избавиться от рывков при прокрутке колесом?
Да, программно. Промежуточные кадры, которые колесо никогда не присылает, можно сгенерировать: каждый щелчок превращается в короткую плавную анимацию вместо мгновенного скачка. LinguaX делает это для любой USB- или Bluetooth-мыши начиная с macOS 13, с настраиваемыми Min Step, Speed Gain и Duration, с переключателем для каждого приложения и без вмешательства в работу трекпада.