2012-01-23 20 views
4

Emacs的一個引人入勝的缺點就是它在'inertia-scrolling'OSX上奇怪的破壞了滾動機制。經過大量挖掘,真正的問題似乎是Emacs只以一,二或三個增量註冊鼠標滾輪滾動鍵,即wheel-up|down,double-wheel-up|downtriple-wheel-up|down如何在Emacs中定義比三重輪更快的滾動?

但是,當滾動速度很快時,Mac觸控板似乎會產生更大的滾動增量。那麼,是否有一種方法可以生成更精確的滾動消息,這些消息實際上反映了滾動條的滾動量?

我從http://emacsformacosx.com/運行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) 
... 
+0

這只是我,但如果你使用Emacs,爲什麼你甚至不打擾使用觸控板:)。我實際上在MacPorts Emacs構建中看到了相反的效果,如果我嘗試慣性滾動,它會一直滾動到底部,並將消息傳遞給緩衝區的末尾。你正在使用Aquamacs,預編譯二進制文件,...? –

+0

你知道,每個人的工作方式都不一樣。在編輯時,我傾向於不觸摸鼠標/觸控板。雖然閱讀,但我發現觸控板更方便的滾動方式。 – bastibe

回答

0

Emacs好像不像OSX那樣處理滾動事件。 double-triple-修飾符和event-click-count函數Stefanmentioned不表示快速滾動的單個事件,而僅僅是幾個滾動事件緊接着發生。所以當你開始滾動時,你會得到1的點擊次數,然後是2,然後是3,依此類推。

在OSX上,觸控板不會像鼠標輪那樣發出單獨的滾動事件。相反,每個事件都包含自上次事件以來光標移動的距離的像素增量。程序應該按照與該增量成比例的距離移動它們的滾動視圖。但是,就我所知,Emacs滾動事件不包含該增量。因此,Emacs目前的形式不能實現慣性滾動。

如果我錯了,請糾正我!

1

我不清楚地瞭解自己想要什麼,但在Emacs的只具有鮮明單擊/雙擊/三擊的事件名稱,它實際上可以區分9次點擊。 event-click-count可用於從事件中提取此信息。

+1

查看我的答案,爲什麼我不接受你的答案,即使它是絕對正確的。 – bastibe

相關問題