如何在Emacs中定义比三轮向下滚动更快的滚动?

如何在Emacs中定义比三轮向下滚动更快的滚动?,emacs,scroll,elisp,Emacs,Scroll,Elisp,Emacs的一个诱人的缺点是它在“惯性滚动”OSX上的古怪的滚动机制。经过大量的挖掘,真正的问题似乎是Emacs只为鼠标滚轮滚动注册一个、两个或三个增量的键,即滚轮向上|向下,双轮向上|向下和三轮向上|向下 然而,当快速滚动时,Mac触摸板似乎会产生更大的滚动增量。那么,有没有一种方法可以生成更准确的滚动消息,以实际反映触摸板的滚动量 我正在从运行Emacs 24.0.92 相关.emacs设置: (setq redisplay-dont-pause t) (setq mouse-wheel-p

Emacs的一个诱人的缺点是它在“惯性滚动”OSX上的古怪的滚动机制。经过大量的挖掘,真正的问题似乎是Emacs只为鼠标滚轮滚动注册一个、两个或三个增量的键,即
滚轮向上|向下
双轮向上|向下
三轮向上|向下

然而,当快速滚动时,Mac触摸板似乎会产生更大的滚动增量。那么,有没有一种方法可以生成更准确的滚动消息,以实际反映触摸板的滚动量

我正在从运行Emacs 24.0.92

相关
.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)
...

我不清楚您想要什么,但尽管Emacs对于单次/两次/三次单击只有不同的事件名称,但它实际上可以区分多达9次单击的序列。
事件单击计数可用于从事件中提取此信息。

似乎Emacs不像OSX那样处理滚动事件。
double-
triple-
修饰符和
事件点击计数
功能并不表示快速滚动的单个事件,而只是表示几个滚动事件连续发生。所以当你开始滚动时,你会得到一个“点击次数”为1,然后是2,然后是3,依此类推

在OSX上,轨迹板不像鼠标滚轮那样发出单个滚动事件。相反,每个事件都包含自上次事件以来光标移动距离的像素增量。程序应按与增量成比例的距离移动滚动视图。但是,据我所知,Emacs滚动事件不包含该增量。因此,当前形式的Emacs无法实现惯性滚动


如果我错了,请纠正我

这只是我的问题,但如果你在使用Emacs,为什么还要费心使用触控板:)。实际上,我在MacPorts Emacs build中看到了相反的效果,如果我尝试惯性滚动,它会一直滚动到底,并大量发送消息说它是缓冲区的末尾。你使用的是Aquamacs,预编译二进制文件吗?你知道,每个人的工作方式都不一样。编辑时,我倾向于从不触摸鼠标/触控板。阅读时,我发现触控板是一种更方便的滚动方式。查看我的答案,了解为什么我不接受你的答案,尽管它绝对正确。