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
This commit is contained in:
bellard 2006-06-14 15:53:24 +00:00
parent ec3757de32
commit 5cbfcd00b0
1 changed files with 32 additions and 15 deletions

47
cocoa.m
View File

@ -439,23 +439,40 @@ static void cocoa_refresh(DisplayState *ds)
kbd_put_keycode(keycode & 0x7f); //remove e0 bit in front kbd_put_keycode(keycode & 0x7f); //remove e0 bit in front
/* handle monitor key events */ /* handle monitor key events */
} else { } else {
int keysym = 0;
switch([event keyCode]) { switch([event keyCode]) {
case 123: case 115:
kbd_put_keysym(QEMU_KEY_LEFT); keysym = QEMU_KEY_HOME;
break; break;
case 124: case 117:
kbd_put_keysym(QEMU_KEY_RIGHT); keysym = QEMU_KEY_DELETE;
break; break;
case 125: case 119:
kbd_put_keysym(QEMU_KEY_DOWN); keysym = QEMU_KEY_END;
break; break;
case 126: case 123:
kbd_put_keysym(QEMU_KEY_UP); keysym = QEMU_KEY_LEFT;
break; break;
default: case 124:
kbd_put_keysym([[event characters] characterAtIndex:0]); keysym = QEMU_KEY_RIGHT;
break; break;
case 125:
keysym = QEMU_KEY_DOWN;
break;
case 126:
keysym = QEMU_KEY_UP;
break;
default:
{
NSString *ks = [event characters];
if ([ks length] > 0)
keysym = [ks characterAtIndex:0];
}
} }
if (keysym)
kbd_put_keysym(keysym);
} }
} }
} }