ui/cocoa.m: move ungrab to ctrl-alt-g
PATCH v3 1/2 ui/cocoa.m: move ungrab to ctrl-alt-g
Currently the cocoa user interface relys on the user pushing control-alt to ungrab the mouse. This is patch changes the key combination to control-alt-g to be in line with the GTK user interface.
---
v3 changes
- Code is now keyboard layout aware.
ui/cocoa.m | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-)
ui/cocoa.m +18 -13
@@ -609,10 +609,6 @@ - (void) handleEvent:(NSEvent *)event } } - // release Mouse grab when pressing ctrl+alt - if (([event modifierFlags] & NSEventModifierFlagControl) && ([event modifierFlags] & NSEventModifierFlagOption)) { - [self ungrabMouse]; - } break; case NSEventTypeKeyDown: keycode = cocoa_keycode_to_qemu([event keyCode]);
@@ -625,14 +621,23 @@ - (void) handleEvent:(NSEvent *)event // default - // handle control + alt Key Combos (ctrl+alt is reserved for QEMU) + // handle control + alt Key Combos (ctrl+alt+[1..9,g] is reserved for QEMU) if (([event modifierFlags] & NSEventModifierFlagControl) && ([event modifierFlags] & NSEventModifierFlagOption)) { - switch (keycode) { - - // enable graphic console - case Q_KEY_CODE_1 ... Q_KEY_CODE_9: // '1' to '9' keys - console_select(keycode - Q_KEY_CODE_1); - break; + NSString *keychar = [event charactersIgnoringModifiers]; + if ([keychar length] == 1) { + char key = [keychar characterAtIndex:0]; + switch (key) { + + // enable graphic console + case '1' ... '9': + console_select(key - '0' - 1); /* ascii math */ + return; + + // release the mouse grab + case 'g': + [self ungrabMouse]; + return; + } } // handle keys for graphic console
@@ -806,9 +811,9 @@ - (void) grabMouse if (!isFullscreen) { if (qemu_name) - [normalWindow setTitle:[NSString stringWithFormat:@"QEMU %s - (Press ctrl + alt to release Mouse)", qemu_name]]; + [normalWindow setTitle:[NSString stringWithFormat:@"QEMU %s - (Press ctrl + alt + g to release Mouse)", qemu_name]]; else - [normalWindow setTitle:@"QEMU - (Press ctrl + alt to release Mouse)"]; + [normalWindow setTitle:@"QEMU - (Press ctrl + alt + g to release Mouse)"]; } [self hideCursor]; if (!isAbsoluteEnabled) {
Signature · 1 line
2.13.5 (Apple Git-94)
PATCH v3 2/2 ui/cocoa.m: send ctrl-alt key combinations to guest if not used by QEMU
Send control-alt key combinations to the guest if not used by the user interface.
---
v3 changes:
- Code is now keyboard layout aware
v2 changes:
- changed logic to use existing if case
ui/cocoa.m | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-)
ui/cocoa.m +20 -21
@@ -619,29 +619,28 @@ - (void) handleEvent:(NSEvent *)event return; } - // default - - // handle control + alt Key Combos (ctrl+alt+[1..9,g] is reserved for QEMU) - if (([event modifierFlags] & NSEventModifierFlagControl) && ([event modifierFlags] & NSEventModifierFlagOption)) { + // console selection + if (([event modifierFlags] & NSEventModifierFlagControl) && + ([event modifierFlags] & NSEventModifierFlagOption) && + ([[event charactersIgnoringModifiers] length] == 1) && + (isdigit([[event charactersIgnoringModifiers] characterAtIndex: 0]))) { NSString *keychar = [event charactersIgnoringModifiers]; - if ([keychar length] == 1) { - char key = [keychar characterAtIndex:0]; - switch (key) { - - // enable graphic console - case '1' ... '9': - console_select(key - '0' - 1); /* ascii math */ - return; - - // release the mouse grab - case 'g': - [self ungrabMouse]; - return; - } - } + char key = [keychar characterAtIndex:0]; + console_select(key - '0' - 1); /* ascii math */ + return; + } + + // mouse ungrab + else if (([event modifierFlags] & NSEventModifierFlagControl) && + ([event modifierFlags] & NSEventModifierFlagOption) && + ([[event charactersIgnoringModifiers] length] == 1) && + ([[event charactersIgnoringModifiers] characterAtIndex: 0] == 'g')) { + [self ungrabMouse]; + return; + } - // handle keys for graphic console - } else if (qemu_console_is_graphic(NULL)) { + // send to guest + else if (qemu_console_is_graphic(NULL)) { qemu_input_event_send_key_qcode(dcl->con, keycode, true); // handlekeys for Monitor
Signature · 1 line
2.13.5 (Apple Git-94)
Quoted 1 line · John Arbuckle
Currently the cocoa user interface relys on the user pushing control-alt to ungrab the mouse. This is patch changes the key combination to control-alt-g to be in line with the GTK user interface.
Hi; I've applied this to cocoa.next.
This commit message needed line-wrapping.
It also looks like you forgot the cover letter
for this patchset.
thanks
-- PMM
Re: [Qemu-devel] [PATCH v3 2/2] ui/cocoa.m: send ctrl-alt key combinations to guest if not used by QEMU
In reply to John ArbuckleQuoted 68 lines · John Arbuckle
Send control-alt key combinations to the guest if not used by the user interface.
Signed-off-by John Arbuckle <[email protected]>---
v3 changes:
- Code is now keyboard layout awarev2 changes:
- changed logic to use existing if caseui/cocoa.m | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-)ui/cocoa.m +20
-22@@ -619,29 +619,28 @@ - (void) handleEvent:(NSEvent *)event return; } - // default - - // handle control + alt Key Combos (ctrl+alt+[1..9,g] is reserved for QEMU) - if (([event modifierFlags] & NSEventModifierFlagControl) && ([event modifierFlags] & NSEventModifierFlagOption)) { + // console selection + if (([event modifierFlags] & NSEventModifierFlagControl) && + ([event modifierFlags] & NSEventModifierFlagOption) && + ([[event charactersIgnoringModifiers] length] == 1) && + (isdigit([[event charactersIgnoringModifiers] characterAtIndex: 0]))) { NSString *keychar = [event charactersIgnoringModifiers]; - if ([keychar length] == 1) { - char key = [keychar characterAtIndex:0]; - switch (key) { - - // enable graphic console - case '1' ... '9': - console_select(key - '0' - 1); /* ascii math */ - return; - - // release the mouse grab - case 'g': - [self ungrabMouse]; - return; - } - } + char key = [keychar characterAtIndex:0]; + console_select(key - '0' - 1); /* ascii math */ + return; + } + + // mouse ungrab + else if (([event modifierFlags] & NSEventModifierFlagControl) && + ([event modifierFlags] & NSEventModifierFlagOption) && + ([[event charactersIgnoringModifiers] length] == 1) && + ([[event charactersIgnoringModifiers] characterAtIndex: 0] == 'g')) { + [self ungrabMouse]; + return; + } - // handle keys for graphic console - } else if (qemu_console_is_graphic(NULL)) { + // send to guest + else if (qemu_console_is_graphic(NULL)) { qemu_input_event_send_key_qcode(dcl->con, keycode, true); // handlekeys for Monitor --
Quoted 1 line
2.13.5 (Apple Git-94)
This is an awful lot of entirely unnecessary code change.
Any time you find yourself repeating a big long
conditional like
ui/cocoa.m - (void) handleEvent:(NSEvent *)event · line 625
Quoted 3 lines
ui/cocoa.m +3
-0+ if (([event modifierFlags] & NSEventModifierFlagControl) && + ([event modifierFlags] & NSEventModifierFlagOption) && + ([[event charactersIgnoringModifiers] length] == 1) &&
you should take a step back and say "how can I
avoid repeating this?".
In this case, all you need to do is delete the "else" from the start of
} else if (qemu_console_is_graphic(NULL)) {
All the specially-handled ctrl-alt combos finish with "return", so all the rest will then just fall through as required.
I've put a patch which does that into cocoa.next.
thanks
-- PMM