Commit 5cbfcd00 authored by Fabrice Bellard's avatar Fabrice Bellard
Browse files

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
parent ec3757de
Loading
Loading
Loading
Loading
+32 −15
Original line number Diff line number Diff line
@@ -439,23 +439,40 @@ static void cocoa_refresh(DisplayState *ds)
                                kbd_put_keycode(keycode & 0x7f); //remove e0 bit in front
                            /* handle monitor key events */
                            } else {
                                int keysym = 0;

                                switch([event keyCode]) {
                                case 115:
                                    keysym = QEMU_KEY_HOME;
                                    break;
                                case 117:
                                    keysym = QEMU_KEY_DELETE;
                                    break;
                                case 119:
                                    keysym = QEMU_KEY_END;
                                    break;
                                case 123:
                                        kbd_put_keysym(QEMU_KEY_LEFT);
                                    keysym = QEMU_KEY_LEFT;
                                    break;
                                case 124:
                                        kbd_put_keysym(QEMU_KEY_RIGHT);
                                    keysym = QEMU_KEY_RIGHT;
                                    break;
                                case 125:
                                        kbd_put_keysym(QEMU_KEY_DOWN);
                                    keysym = QEMU_KEY_DOWN;
                                    break;
                                case 126:
                                        kbd_put_keysym(QEMU_KEY_UP);
                                    keysym = QEMU_KEY_UP;
                                    break;
                                default:
                                        kbd_put_keysym([[event characters] characterAtIndex:0]);
                                        break;
                                    {
                                        NSString *ks = [event characters];

                                        if ([ks length] > 0)
                                            keysym = [ks characterAtIndex:0];
                                    }
                                }
                                if (keysym)
                                    kbd_put_keysym(keysym);
                            }
                        }
                    }