@@ -623,32 +623,46 @@ bool dispatch_mouse_wheel(uint64_t timestamp, CGEventRef event_ref) {
623623 CGEventSourceRef source = CGEventCreateSourceFromEvent (event_ref );
624624 double ppl = CGEventSourceGetPixelsPerLine (source );
625625
626+ unsigned int wheel_amount = 10 ;
626627 if (CGEventGetIntegerValueField (event_ref , kCGScrollWheelEventIsContinuous ) != 0 ) {
627628 // continuous device (trackpad)
628- ppl *= 1 ;
629+ wheel_amount = 1 ;
630+
631+ ppl *= wheel_amount ;
629632 uio_event .data .wheel .type = WHEEL_BLOCK_SCROLL ;
630633
631634 if (CGEventGetIntegerValueField (event_ref , kCGScrollWheelEventDeltaAxis1 ) != 0 ) {
632635 uio_event .data .wheel .direction = WHEEL_VERTICAL_DIRECTION ;
633- uio_event .data .wheel .rotation = (int16_t ) (CGEventGetIntegerValueField (event_ref , kCGScrollWheelEventPointDeltaAxis1 ) * ppl * 1 );
636+ uio_event .data .wheel .rotation = (int16_t ) (
637+ CGEventGetIntegerValueField (event_ref , kCGScrollWheelEventPointDeltaAxis1 ) * ppl * wheel_amount
638+ );
634639 } else if (CGEventGetIntegerValueField (event_ref , kCGScrollWheelEventDeltaAxis2 ) != 0 ) {
635640 uio_event .data .wheel .direction = WHEEL_HORIZONTAL_DIRECTION ;
636- uio_event .data .wheel .rotation = (int16_t ) (CGEventGetIntegerValueField (event_ref , kCGScrollWheelEventPointDeltaAxis2 ) * ppl * 1 );
641+ uio_event .data .wheel .rotation = (int16_t ) (
642+ CGEventGetIntegerValueField (event_ref , kCGScrollWheelEventPointDeltaAxis2 ) * ppl * wheel_amount
643+ );
637644 }
638645 } else {
639646 // non-continuous device (wheel mice)
640- ppl *= 10 ;
647+ wheel_amount = 10 ;
648+
649+ ppl *= wheel_amount ;
641650 uio_event .data .wheel .type = WHEEL_UNIT_SCROLL ;
642651
643652 if (CGEventGetIntegerValueField (event_ref , kCGScrollWheelEventDeltaAxis1 ) != 0 ) {
644653 uio_event .data .wheel .direction = WHEEL_VERTICAL_DIRECTION ;
645- uio_event .data .wheel .rotation = (int16_t ) (CGEventGetDoubleValueField (event_ref , kCGScrollWheelEventFixedPtDeltaAxis1 ) * ppl * 10 );
654+ uio_event .data .wheel .rotation = (int16_t ) (
655+ CGEventGetDoubleValueField (event_ref , kCGScrollWheelEventFixedPtDeltaAxis1 ) * ppl * wheel_amount
656+ );
646657 } else if (CGEventGetIntegerValueField (event_ref , kCGScrollWheelEventDeltaAxis2 ) != 0 ) {
647658 uio_event .data .wheel .direction = WHEEL_HORIZONTAL_DIRECTION ;
648- uio_event .data .wheel .rotation = (int16_t ) (CGEventGetDoubleValueField (event_ref , kCGScrollWheelEventFixedPtDeltaAxis2 ) * ppl * 10 );
659+ uio_event .data .wheel .rotation = (int16_t ) (
660+ CGEventGetDoubleValueField (event_ref , kCGScrollWheelEventFixedPtDeltaAxis2 ) * ppl * wheel_amount
661+ );
649662 }
650663 }
651664
665+ uio_event .data .wheel .amount = (uint8_t ) wheel_amount ;
652666 uio_event .data .wheel .delta = (uint16_t ) ppl ;
653667
654668 if (source ) {
@@ -657,12 +671,9 @@ bool dispatch_mouse_wheel(uint64_t timestamp, CGEventRef event_ref) {
657671
658672 logger (LOG_LEVEL_DEBUG , "%s [%u]: Mouse wheel %i / %u of type %u in the %u direction at %u, %u.\n" ,
659673 __FUNCTION__ , __LINE__ ,
660- uio_event .data .wheel .rotation ,
661- uio_event .data .wheel .delta ,
662- uio_event .data .wheel .type ,
663- uio_event .data .wheel .direction ,
664- uio_event .data .wheel .x ,
665- uio_event .data .wheel .y );
674+ uio_event .data .wheel .rotation , uio_event .data .wheel .delta ,
675+ uio_event .data .wheel .type , uio_event .data .wheel .direction ,
676+ uio_event .data .wheel .x , uio_event .data .wheel .y );
666677
667678 // Fire mouse wheel event.
668679 dispatch_event (& uio_event );
0 commit comments