ds->depth = device_bpp;
ds->width = w;
ds->height = h;
-
+#ifdef __LITTLE_ENDIAN__
+ ds->bgr = 1;
+#else
+ ds->bgr = 0;
+#endif
+
current_ds = *ds;
}
pool = [ [ NSAutoreleasePool alloc ] init ];
distantPast = [ NSDate distantPast ];
- if (is_active_console(vga_console))
- vga_update_display();
+ vga_hw_update();
+
do {
event = [ NSApp nextEventMatchingMask:NSAnyEventMask untilDate:distantPast
inMode: NSDefaultRunLoopMode dequeue:YES ];
case NSFlagsChanged:
{
int keycode = cocoa_keycode_to_qemu([event keyCode]);
- modifiers_state[keycode] = (modifiers_state[keycode] == 0) ? 1 : 0;
-
- if ( modifiers_state[keycode] ) { /* Keydown */
- if (keycode & 0x80)
- kbd_put_keycode(0xe0);
- kbd_put_keycode(keycode & 0x7f);
- } else { /* Keyup */
- if (keycode & 0x80)
- kbd_put_keycode(0xe0);
- kbd_put_keycode(keycode | 0x80);
- }
-
- /* emulate caps lock and num lock keyup */
- if ((keycode == 58) || (keycode == 69))
+
+ if (keycode)
{
- modifiers_state[keycode] = 0;
- if (keycode & 0x80)
- kbd_put_keycode(0xe0);
- kbd_put_keycode(keycode | 0x80);
+ if (keycode == 58 || keycode == 69) {
+ /* emulate caps lock and num lock keydown and keyup */
+ kbd_put_keycode(keycode);
+ kbd_put_keycode(keycode | 0x80);
+ } else if (is_graphic_console()) {
+ if (keycode & 0x80)
+ kbd_put_keycode(0xe0);
+ if (modifiers_state[keycode] == 0) {
+ /* keydown */
+ kbd_put_keycode(keycode & 0x7f);
+ modifiers_state[keycode] = 1;
+ } else {
+ /* keyup */
+ kbd_put_keycode(keycode | 0x80);
+ modifiers_state[keycode] = 0;
+ }
+ }
}
-
+
/* release Mouse grab when pressing ctrl+alt */
if (([event modifierFlags] & NSControlKeyMask) && ([event modifierFlags] & NSAlternateKeyMask))
+ {
[window setTitle: @"QEMU"];
[NSCursor unhide];
CGAssociateMouseAndMouseCursorPosition ( TRUE );
grab = 0;
+ }
}
break;
-
+
case NSKeyDown:
{
int keycode = cocoa_keycode_to_qemu([event keyCode]);
/* toggle Monitor */
case 0x02 ... 0x0a: /* '1' to '9' keys */
console_select(keycode - 0x02);
- if (is_active_console(vga_console)) {
- /* tell the vga console to redisplay itself */
- vga_invalidate_display();
break;
- }
}
} else {
/* handle standard key events */
- if (is_active_console(vga_console)) {
+ if (is_graphic_console()) {
if (keycode & 0x80) //check bit for e0 in front
kbd_put_keycode(0xe0);
kbd_put_keycode(keycode & 0x7f); //remove e0 bit in front
/* handle monitor key events */
} else {
+ int keysym = 0;
+
switch([event keyCode]) {
- case 123:
- kbd_put_keysym(QEMU_KEY_LEFT);
- break;
- case 124:
- kbd_put_keysym(QEMU_KEY_RIGHT);
- break;
- case 125:
- kbd_put_keysym(QEMU_KEY_DOWN);
- break;
- case 126:
- kbd_put_keysym(QEMU_KEY_UP);
- break;
- default:
- kbd_put_keysym([[event characters] characterAtIndex:0]);
- break;
+ case 115:
+ keysym = QEMU_KEY_HOME;
+ break;
+ case 117:
+ keysym = QEMU_KEY_DELETE;
+ break;
+ case 119:
+ keysym = QEMU_KEY_END;
+ break;
+ case 123:
+ keysym = QEMU_KEY_LEFT;
+ break;
+ case 124:
+ keysym = QEMU_KEY_RIGHT;
+ 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);
}
}
}
case NSKeyUp:
{
int keycode = cocoa_keycode_to_qemu([event keyCode]);
- if (is_active_console(vga_console)) {
+ if (is_graphic_console()) {
if (keycode & 0x80)
kbd_put_keycode(0xe0);
kbd_put_keycode(keycode | 0x80); //add 128 to signal release of key
/* Finally give up our references to the objects */
[windowMenu release];
[windowMenuItem release];
-
}
-static void CustomApplicationMain (argc, argv)
+static void CustomApplicationMain(void)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
QemuCocoaGUIController *gui_controller;
{
gArgc = argc;
gArgv = argv;
-
- CustomApplicationMain (argc, argv);
-
+
+ CustomApplicationMain();
+
return 0;
}