Commit 5cbfcd00b0822d9a1a69a65a2d6927f6c4142787

Authored by bellard
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
... ... @@ -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 }
... ...