Thanks for this summary! But I remain puzzled... As I understand it, `wheel-scale` ends up being 4 on your machine. So removing the multiplication by `wheel-scale` means that `amt` is 1/4 of what it used to be. But `amt` is effectively always divided by `WHEEL_DELTA`, which you've also divided by 4 in switching to `WHEEL_DELTA_S`.
It seems like those factors of 1/4 would cancel out. Do the numbers passed to `do-key` end up being different in some way that I'm missing? Matthew At Mon, 12 Apr 2021 04:13:16 -0700 (PDT), Dexter Lagan wrote: > I started a new thread as the original topic no longer matched. > I installed 8.1.0.2 x64 CS and enabled logging in gen-wheels. Matt was > right: wheel-steps-mode is indeed set to 'integer while gen-wheels runs in > DrRacket's editor. The only two changes required to get smooth/accurate > scrolling on touchpad gestures and trackpoint are therefore: > > In share\pkgs\gui-lib\mred\private\wx\win32\window.rkt's gen-wheels private > method: > > (let loop ([amt (* wheel-scale amt)]) > to > (let loop ([amt amt]) > > and reduce WHEEL_DELTA by a factor of 4, such as gen-wheels looks like: > > (define/private (gen-wheels w msg lParam amt down up) > (define WHEEL_DELTA_S (/ WHEEL_DELTA 4)) > (let loop ([amt amt]) > (cond > [((abs amt) . < . WHEEL_DELTA_S) > (case wheel-steps-mode > [(one integer) amt] > [(fraction) > (unless (zero? amt) > (do-key w msg down lParam #f #f void (/ amt (exact->inexact > WHEEL_DELTA_S)))) > 0.0])] > [(negative? amt) > (case wheel-steps-mode > [(one) > (do-key w msg down lParam #f #f void 1.0) > (loop (+ amt WHEEL_DELTA_S))] > [(integer) > (define steps (quotient (- amt) WHEEL_DELTA_S)) > (do-key w msg down lParam #f #f void (exact->inexact steps)) > (loop (+ amt (* steps WHEEL_DELTA_S)))] > [else > (do-key w msg down lParam #f #f void (/ (- amt) (exact->inexact > WHEEL_DELTA_S))) > 0.0])] > [else > (case wheel-steps-mode > [(one) > (do-key w msg up lParam #f #f void 1.0) > (loop (- amt WHEEL_DELTA_S))] > [(integer) > (define steps (quotient amt WHEEL_DELTA_S)) > (do-key w msg up lParam #f #f void (exact->inexact steps)) > (loop (- amt (* steps WHEEL_DELTA_S)))] > [else > (do-key w msg up lParam #f #f void (/ amt (exact->inexact > WHEEL_DELTA_S))) > 0.0])]))) > > Happy Monday, > > Dex > > -- > You received this message because you are subscribed to the Google Groups > "Racket Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email > to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/racket-users/28e13460-c86d-4967-aa25-5527d672e > 711n%40googlegroups.com. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/20210415054949.249%40sirmail.smtps.cs.utah.edu.

