macos: fix scroll capture (#350)

This commit is contained in:
Ferdinand Schober
2025-11-03 18:04:09 +01:00
committed by GitHub
parent 3f13714d8a
commit bdafaa07e5

View File

@@ -318,21 +318,47 @@ fn get_events(
}))) })))
} }
CGEventType::ScrollWheel => { CGEventType::ScrollWheel => {
let v = ev.get_integer_value_field(EventField::SCROLL_WHEEL_EVENT_POINT_DELTA_AXIS_1); if ev.get_integer_value_field(EventField::SCROLL_WHEEL_EVENT_IS_CONTINUOUS) != 0 {
let h = ev.get_integer_value_field(EventField::SCROLL_WHEEL_EVENT_POINT_DELTA_AXIS_2); let v =
if v != 0 { ev.get_integer_value_field(EventField::SCROLL_WHEEL_EVENT_POINT_DELTA_AXIS_1);
result.push(CaptureEvent::Input(Event::Pointer(PointerEvent::Axis { let h =
time: 0, ev.get_integer_value_field(EventField::SCROLL_WHEEL_EVENT_POINT_DELTA_AXIS_2);
axis: 0, // Vertical if v != 0 {
value: v as f64, result.push(CaptureEvent::Input(Event::Pointer(PointerEvent::Axis {
}))); time: 0,
} axis: 0, // Vertical
if h != 0 { value: v as f64,
result.push(CaptureEvent::Input(Event::Pointer(PointerEvent::Axis { })));
time: 0, }
axis: 1, // Horizontal if h != 0 {
value: h as f64, result.push(CaptureEvent::Input(Event::Pointer(PointerEvent::Axis {
}))); time: 0,
axis: 1, // Horizontal
value: h as f64,
})));
}
} else {
// line based scrolling
const LINES_PER_STEP: i32 = 3;
const V120_STEPS_PER_LINE: i32 = 120 / LINES_PER_STEP;
let v = ev.get_integer_value_field(EventField::SCROLL_WHEEL_EVENT_DELTA_AXIS_1);
let h = ev.get_integer_value_field(EventField::SCROLL_WHEEL_EVENT_DELTA_AXIS_2);
if v != 0 {
result.push(CaptureEvent::Input(Event::Pointer(
PointerEvent::AxisDiscrete120 {
axis: 0, // Vertical
value: V120_STEPS_PER_LINE * v as i32,
},
)));
}
if h != 0 {
result.push(CaptureEvent::Input(Event::Pointer(
PointerEvent::AxisDiscrete120 {
axis: 1, // Horizontal
value: V120_STEPS_PER_LINE * h as i32,
},
)));
}
} }
} }
_ => (), _ => (),