Hi, > +/* Sends any keys that were delayed because they were part of the ungrab set > */ > +static void send_key_if_delayed(Set *the_set, int keycode) > +{ > + if (contains_number(the_set, keycode)) { > + qemu_input_event_send_key_qcode(dcl->con, keycode, true); > + qemu_input_event_send_key_qcode(dcl->con, keycode, false); > + } > +}
> case NSEventTypeKeyUp: > keycode = cocoa_keycode_to_qemu([event keyCode]); > > + if (are_sets_equal(ungrab_set, key_set)) { > + [self ungrabMouse]; > + clear_set(key_set); > + return; > + } > + send_key_if_delayed(key_set, keycode); > + remove_number(key_set, keycode); This doesn't maintain the event ordering. cheers, Gerd