Compare commits

..

1 Commits

Author SHA1 Message Date
Ferdinand Schober
feb8461527 macos: reset double click when mouse is moved 2025-10-30 00:16:49 +01:00

View File

@@ -40,7 +40,6 @@ struct InputCaptureState {
active_clients: Lazy<HashSet<Position>>,
current_pos: Option<Position>,
bounds: Bounds,
modifier_state: XMods,
}
#[derive(Debug)]
@@ -58,7 +57,6 @@ impl InputCaptureState {
active_clients: Lazy::new(HashSet::new),
current_pos: None,
bounds: Bounds::default(),
modifier_state: Default::default(),
};
res.update_bounds()?;
Ok(res)
@@ -182,7 +180,6 @@ fn get_events(
ev_type: &CGEventType,
ev: &CGEvent,
result: &mut Vec<CaptureEvent>,
modifier_state: &mut XMods,
) -> Result<(), CaptureError> {
fn map_pointer_event(ev: &CGEvent) -> PointerEvent {
PointerEvent::Motion {
@@ -218,42 +215,29 @@ fn get_events(
})));
}
CGEventType::FlagsChanged => {
let mut depressed = XMods::empty();
let mut mods = XMods::empty();
let mut mods_locked = XMods::empty();
let cg_flags = ev.get_flags();
if cg_flags.contains(CGEventFlags::CGEventFlagShift) {
depressed |= XMods::ShiftMask;
mods |= XMods::ShiftMask;
}
if cg_flags.contains(CGEventFlags::CGEventFlagControl) {
depressed |= XMods::ControlMask;
mods |= XMods::ControlMask;
}
if cg_flags.contains(CGEventFlags::CGEventFlagAlternate) {
depressed |= XMods::Mod1Mask;
mods |= XMods::Mod1Mask;
}
if cg_flags.contains(CGEventFlags::CGEventFlagCommand) {
depressed |= XMods::Mod4Mask;
mods |= XMods::Mod4Mask;
}
if cg_flags.contains(CGEventFlags::CGEventFlagAlphaShift) {
depressed |= XMods::LockMask;
mods |= XMods::LockMask;
mods_locked |= XMods::LockMask;
}
// check if pressed or released
let state = if depressed > *modifier_state { 1 } else { 0 };
*modifier_state = depressed;
if let Ok(key) = map_key(ev) {
let key_event = CaptureEvent::Input(Event::Keyboard(KeyboardEvent::Key {
time: 0,
key,
state,
}));
result.push(key_event);
}
let modifier_event = KeyboardEvent::Modifiers {
depressed: depressed.bits(),
depressed: mods.bits(),
latched: 0,
locked: mods_locked.bits(),
group: 0,
@@ -382,13 +366,7 @@ fn create_event_tap<'a>(
// Are we in a client?
if let Some(current_pos) = state.current_pos {
pos = Some(current_pos);
get_events(
&event_type,
cg_ev,
&mut res_events,
&mut state.modifier_state,
)
.unwrap_or_else(|e| {
get_events(&event_type, cg_ev, &mut res_events).unwrap_or_else(|e| {
log::error!("Failed to get events: {e}");
});