I’ll log the values at different spots and let you know what I find. Clearly, 
multiplying amt by wheel-scale affects the scrolling behaviour. Somehow this 
does not affect mouse wheel scrolling une same way. Either the scrolling 
changes when a different device is used, or the device driver itself changes 
the values and/or behaviour.

Dex

________________________________
From: Matthew Flatt <[email protected]>
Sent: Thursday, April 15, 2021 1:49:49 PM
To: Dexter Lagan <[email protected]>
Cc: Racket Users <[email protected]>
Subject: Re: [racket-users] Wheel / touchpad / trackpoint accuracy/speed 
scrolling fix for DrRacket

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/DM6PR08MB39467A9EDDE20FDD3161A7EEFC4D9%40DM6PR08MB3946.namprd08.prod.outlook.com.

Reply via email to