> On Feb 16, 2018, at 8:15 AM, Gerd Hoffmann <kra...@redhat.com> wrote: > > On Sat, Feb 03, 2018 at 12:17:43PM -0500, John Arbuckle wrote: >> Currently the ungrab keys for the Cocoa and GTK interface are Control-Alt-g. >> This combination may not be very fun for the user to have to enter, so we >> now enable the user to specify their own key(s) as the ungrab key(s). The >> list of keys that can be used is found in the file qapi/ui.json under >> QKeyCode. >> The max number of keys that can be used is three. >> >> Syntax: -display cocoa,hotkey-grab=<key-key-key> >> >> Example usage: -display cocoa,hotkey-grab=home >> -display cocoa,hotkey-grab=shift-ctrl >> -display cocoa,hotkey-grab=ctrl-x >> -display cocoa,hotkey-grab=pgup-pgdn >> -display cocoa,hotkey-grab=kp_5-kp_6 >> -display cocoa,hotkey-grab=kp_4-kp_5-kp_6 >> -display cocoa,hotkey-grab=ctrl-alt > > Finally found the time for a closer look and some testing. > > Problem is the hotkeys are all forwarded to the guest. > So when using -- for example -- the pgup-pgdn hotkey > and you press the combination the guest will see it. > > I see basically two options to deal with that: > > (a) Make the code more clever. On pgup keydown event > the code has to figure this might be part of a hotkey > sequence, hold back the event to see what comes next. > - If the next event is pgup keyup -> ok, normal pgup > keypress, forward both keydown and keyup to the guest. > - If the next event is pgdn keydown -> hotkey found. > So do hotkey action, don't forward keydown (and > following keyup) events to the guest.
Ok. I think this should be doable. > > (b) Restrict allowed hotkeys to modifier key(s) plus one > non-modifier key. Forwarding modifier keydown+keyup > to the guest has typically effects inside the guest, > so we only have to hold back that single non-modifier > key. That is alot easier to implement. Sorry but I was using this patch to make my ungrab key F15. This key is not used by anything and makes things so simple for me. Requiring a modifier key in the sequence seems unnecessary. Thank you.