Как определить более быструю прокрутку, чем тройное колесико в Emacs? - PullRequest
4 голосов
/ 23 января 2012

Одним из неприятных недостатков Emacs является его странно сломанный механизм прокрутки на OSX с «прокруткой по инерции». Похоже, что после многих копаний настоящая проблема заключается в том, что Emacs регистрирует ключи для прокрутки колесика мыши только с одним, двумя или тремя приращениями, то есть wheel-up|down, double-wheel-up|down и triple-wheel-up|down.

Однако трекпад Mac, по-видимому, генерирует гораздо большие приращения прокрутки при быстрой прокрутке. Итак, есть ли способ генерировать более точные сообщения прокрутки, которые фактически отражают количество прокрутки трекпада?

Я использую Emacs 24.0.92 из http://emacsformacosx.com/.

Соответствующие .emacs настройки:

(setq redisplay-dont-pause t)
(setq mouse-wheel-progressive-speed nil)

В конечном итоге, я бы хотел получить что-то вроде этого:

(defun up-single () (interactive) (scroll-up 1))
(defun up-double () (interactive) (scroll-up 2))
(defun up-triple () (interactive) (scroll-up 3))
...

(global-set-key [wheel-down] 'up-single)
(global-set-key [double-wheel-down] 'up-double)
(global-set-key [triple-wheel-down] 'up-triple)
...

Ответы [ 2 ]

1 голос
/ 05 апреля 2012

Я не совсем понимаю, что вы хотите, но, хотя Emacs имеет отдельные имена событий только для одного / двойного / тройного щелчка, на самом деле он различает до 9 последовательных щелчков. event-click-count может использоваться для извлечения этой информации из события.

0 голосов
/ 10 апреля 2012

Кажется, что Emacs не обрабатывает события прокрутки, как OSX. Модификаторы double- и triple- и функция event-click-count Стефан , упомянутые , не означают единичные события быстрой прокрутки, а лишь то, что несколько событий прокрутки происходят в тесной последовательности. Поэтому, когда вы начинаете прокручивать, вы получаете «количество кликов» 1, затем 2, затем 3 и т. Д.

В OSX трекпад не выдает отдельные события прокрутки, как колесо мыши. Вместо этого каждое событие содержит приращение в пикселях того, насколько далеко курсор переместился с момента последнего события. Программы должны перемещать свои прокрутки на расстояние, пропорциональное этому приращению. Однако, насколько мне известно, события прокрутки Emacs не содержат этого приращения. Поэтому Emacs в его текущей форме не может реализовать инерционную прокрутку.

ПОЖАЛУЙСТА, поправьте меня, если я ошибаюсь!

...