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,23 +439,40 @@ static void cocoa_refresh(DisplayState *ds) | ||
| 439 | kbd_put_keycode(keycode & 0x7f); //remove e0 bit in front | 439 | kbd_put_keycode(keycode & 0x7f); //remove e0 bit in front |
| 440 | /* handle monitor key events */ | 440 | /* handle monitor key events */ |
| 441 | } else { | 441 | } else { |
| 442 | + int keysym = 0; | ||
| 443 | + | ||
| 442 | switch([event keyCode]) { | 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 | } |