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 | } | ... | ... |