diff -r 4f06c06b6d19 src/events/SDL_mouse.c --- a/src/events/SDL_mouse.c Wed Aug 05 15:28:51 2020 +0200 +++ b/src/events/SDL_mouse.c Tue Nov 10 12:16:06 2020 +0200 @@ -642,8 +642,8 @@ event.wheel.preciseX = x; event.wheel.preciseY = y; #endif - event.wheel.x = integral_x; - event.wheel.y = integral_y; + event.wheel.x = x; //integral_x; + event.wheel.y = y; //integral_y; event.wheel.direction = (Uint32)direction; posted = (SDL_PushEvent(&event) > 0); } diff -r 4f06c06b6d19 src/video/cocoa/SDL_cocoamouse.m --- a/src/video/cocoa/SDL_cocoamouse.m Wed Aug 05 15:28:51 2020 +0200 +++ b/src/video/cocoa/SDL_cocoamouse.m Tue Nov 10 12:16:06 2020 +0200 @@ -424,10 +424,16 @@ } SDL_MouseID mouseID = mouse->mouseID; - CGFloat x = -[event deltaX]; - CGFloat y = [event deltaY]; + CGFloat x = -[event scrollingDeltaX]; + CGFloat y = [event scrollingDeltaY]; SDL_MouseWheelDirection direction = SDL_MOUSEWHEEL_NORMAL; + /* HACK: Make a distinction between precise and imprecise scrolling. + Trackpad seems to be mouseID 0. */ + if (![event hasPreciseScrollingDeltas]) { + mouseID = 1; + } + if ([event respondsToSelector:@selector(isDirectionInvertedFromDevice)]) { if ([event isDirectionInvertedFromDevice] == YES) { direction = SDL_MOUSEWHEEL_FLIPPED;