Commit 5cbfcd00b0822d9a1a69a65a2d6927f6c4142787
1 parent
ec3757de
cocoa monitor fix regarding the handling of dead keys (Joachim Henke)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1975 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
32 additions
and
15 deletions
cocoa.m
... | ... | @@ -439,23 +439,40 @@ static void cocoa_refresh(DisplayState *ds) |
439 | 439 | kbd_put_keycode(keycode & 0x7f); //remove e0 bit in front |
440 | 440 | /* handle monitor key events */ |
441 | 441 | } else { |
442 | + int keysym = 0; | |
443 | + | |
442 | 444 | switch([event keyCode]) { |
443 | - case 123: | |
444 | - kbd_put_keysym(QEMU_KEY_LEFT); | |
445 | - break; | |
446 | - case 124: | |
447 | - kbd_put_keysym(QEMU_KEY_RIGHT); | |
448 | - break; | |
449 | - case 125: | |
450 | - kbd_put_keysym(QEMU_KEY_DOWN); | |
451 | - break; | |
452 | - case 126: | |
453 | - kbd_put_keysym(QEMU_KEY_UP); | |
454 | - break; | |
455 | - default: | |
456 | - kbd_put_keysym([[event characters] characterAtIndex:0]); | |
457 | - break; | |
445 | + case 115: | |
446 | + keysym = QEMU_KEY_HOME; | |
447 | + break; | |
448 | + case 117: | |
449 | + keysym = QEMU_KEY_DELETE; | |
450 | + break; | |
451 | + case 119: | |
452 | + keysym = QEMU_KEY_END; | |
453 | + break; | |
454 | + case 123: | |
455 | + keysym = QEMU_KEY_LEFT; | |
456 | + break; | |
457 | + case 124: | |
458 | + keysym = QEMU_KEY_RIGHT; | |
459 | + break; | |
460 | + case 125: | |
461 | + keysym = QEMU_KEY_DOWN; | |
462 | + break; | |
463 | + case 126: | |
464 | + keysym = QEMU_KEY_UP; | |
465 | + break; | |
466 | + default: | |
467 | + { | |
468 | + NSString *ks = [event characters]; | |
469 | + | |
470 | + if ([ks length] > 0) | |
471 | + keysym = [ks characterAtIndex:0]; | |
472 | + } | |
458 | 473 | } |
474 | + if (keysym) | |
475 | + kbd_put_keysym(keysym); | |
459 | 476 | } |
460 | 477 | } |
461 | 478 | } | ... | ... |