Skip to content

Commit 6f71f93

Browse files
committed
Adding missing amount to OSX.
1 parent 9e2d33c commit 6f71f93

File tree

2 files changed

+28
-17
lines changed

2 files changed

+28
-17
lines changed

src/darwin/dispatch_event.c

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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);

src/windows/dispatch_event.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -391,11 +391,11 @@ bool dispatch_mouse_wheel(uint64_t timestamp, MSLLHOOKSTRUCT *mshook, uint8_t di
391391
uio_event.data.wheel.x = (int16_t) mshook->pt.x;
392392
uio_event.data.wheel.y = (int16_t) mshook->pt.y;
393393

394-
/* Delta GET_WHEEL_DELTA_WPARAM(mshook->mouseData)
395-
* A positive value indicates that the wheel was rotated
396-
* forward, away from the user; a negative value indicates that
397-
* the wheel was rotated backward, toward the user. One wheel
398-
* click is defined as WHEEL_DELTA, which is 120. */
394+
/* The GET_WHEEL_DELTA_WPARAM(mshook->mouseData) macro returns the high-order word of mouseData which represents
395+
* the wheel delta.
396+
* A positive value indicates that the wheel was rotated forward, away from the user.
397+
* A negative value indicates that the wheel was rotated backward, toward the user.
398+
* One wheel click is defined as WHEEL_DELTA, which is 120. */
399399
uio_event.data.wheel.rotation = (int16_t) GET_WHEEL_DELTA_WPARAM(mshook->mouseData);
400400
uio_event.data.wheel.delta = WHEEL_DELTA;
401401

0 commit comments

Comments
 (0)