fix(scroll): enable pixel-scroll-precision-mode for smooth macOS trackpad scrolling
Replace mwheel.el fallback with pixel-scroll-precision-mode (Emacs 29+). Works on NS/Cocoa builds — previous comment was wrong. - ns-use-mwheel-momentum t: pass through macOS kinetic scroll events - pixel-scroll-precision-use-momentum nil: avoid double-momentum (macOS already handles inertia; Emacs simulation would stack on top) - pixel-scroll-precision-large-scroll-height 40.0: reasonable page-jump size - Removed global-set-key mwheel-scroll overrides (were blocking precision mode) - Kept mouse-wheel-follow-mouse + mouse-wheel-tilt-scroll for horizontal
This commit is contained in:
31
config.el
31
config.el
@@ -180,22 +180,23 @@ Bound to cmd+v in org-mode and markdown-mode."
|
|||||||
(global-set-key key #'ignore))
|
(global-set-key key #'ignore))
|
||||||
(setq mouse-highlight nil))
|
(setq mouse-highlight nil))
|
||||||
|
|
||||||
;; macOS scroll wheel best practice (NS/Cocoa build):
|
;; macOS smooth scrolling — pixel-scroll-precision-mode (Emacs 29+, works on NS/Cocoa)
|
||||||
;; - pixel-scroll-precision-mode is NOT used: it targets X11/Haiku and breaks
|
;; pixel-scroll-precision-mode handles [wheel-up/down] → pixel-scroll-precision.
|
||||||
;; NS/Cocoa scroll event delivery (rebinds [wheel-up/down] to non-working handlers)
|
;; ns-use-mwheel-momentum: macOS sends momentum-phase events after finger lift;
|
||||||
;; - Standard mwheel.el with conservative settings is reliable on macOS
|
;; setting t passes them through so kinetic/inertial scrolling works.
|
||||||
;; - NS backend converts trackpad + physical wheel to [wheel-up]/[wheel-down] events
|
;; pixel-scroll-precision-use-momentum nil: let macOS handle momentum (Emacs
|
||||||
|
;; momentum simulation would double-apply on top of NS momentum events).
|
||||||
(when (display-graphic-p)
|
(when (display-graphic-p)
|
||||||
(require 'mwheel)
|
;; NS/macOS: honour trackpad kinetic (inertial) scrolling
|
||||||
;; 3 lines per scroll tick; shift = 1 line; no progressive acceleration
|
(setq ns-use-mwheel-momentum t)
|
||||||
(setq mouse-wheel-scroll-amount '(3 ((shift) . 1) ((meta) . 0) ((control) . text-scale))
|
;; Horizontal scroll + follow-mouse still go through mwheel.el
|
||||||
mouse-wheel-progressive-speed nil ; constant speed, no acceleration
|
(setq mouse-wheel-follow-mouse t
|
||||||
mouse-wheel-follow-mouse t ; scroll window under cursor
|
mouse-wheel-tilt-scroll t)
|
||||||
mouse-wheel-tilt-scroll t ; horizontal scroll with tilt/two-finger
|
;; Pixel-precise vertical scrolling (Emacs 29+)
|
||||||
mouse-wheel-flip-direction nil) ; standard direction (not natural)
|
(when (fboundp 'pixel-scroll-precision-mode)
|
||||||
;; Ensure mwheel-scroll is bound (Doom may remap these)
|
(setq pixel-scroll-precision-use-momentum nil ; macOS provides its own momentum
|
||||||
(global-set-key [wheel-up] #'mwheel-scroll)
|
pixel-scroll-precision-large-scroll-height 40.0)
|
||||||
(global-set-key [wheel-down] #'mwheel-scroll))
|
(pixel-scroll-precision-mode 1)))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user