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