2012-01-23 14 views
4

Emacsの欠点の1つは、「慣性スクロール」OSX上の奇妙な壊れたスクロールメカニズムです。たくさんの掘り出した後、実際の問題は、マウスホイールのスクロールのキーをwheel-up|down,double-wheel-up|downtriple-wheel-up|downという1,2,3のインクリメントでしか登録できないということです。Emacsでトリプルホイールダウンよりも速いスクロールを定義する方法は?

しかし、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) 
... 
+0

これは私だけですが、Emacsを使用しているのであれば、なぜトラックパッドを使用しても気になりません。私は実際にはMacPorts Emacsのビルドとは逆の効果を見ます。イナーシャスクロールをしようとすると、スクロールしてバッファーの末尾にメッセージが届きます。 Aquamacs、プリコンパイルされたバイナリを使用していますか? –

+0

あなたは知っています、みんな変わります。編集中は、マウス/トラックパッドに触れない傾向があります。読んでいる間、私はトラックパッドがスクロールのより便利な方法を見つける。 – bastibe

答えて

0

OSXのように、Emacsがスクロールイベントを処理していないようです。 double-triple-修飾子とevent-click-countファンクションStefanmentionedは、高速スクロールの単一イベントを意味するのではなく、複数のスクロールイベントが連続して発生することを意味します。だからあなたがスクロールを始めると、あなたは1、次に2、そして3というような「クリック数」を得ます。

OSXでは、トラックパッドはマウスホイールのように個々のスクロールイベントを発行しません。代わりに、各イベントには、最後のイベント以降にカーソルがどのくらい移動したかのピクセル増分が含まれます。プログラムはスクロールビューをその増分に比例した距離だけ移動する必要があります。しかし、私の知る限り、Emacsのスクロールイベントにはその増分が含まれていません。したがって、現在の形式のEmacsは慣性スクロールを実装することができません。

私が間違っている場合は、私を修正してください!

1

私はあなたが望むものを明確に理解していませんが、Emacsは唯一の明確な持ちながら、 1回/ 2回/ 3回クリックのイベント名は、実際には9回のクリックまで区別されます。 event-click-countは、イベントからこの情報を抽出するために使用できます。

+1

どうして私があなたの答えを受け入れなかったのか、私の答えを見てください。 – bastibe

関連する問題