mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-27 13:30:52 +00:00
ui/cocoa.m: switch to QKeyCode
This patch removes the pc/xt keycode map and replaces it with the QKeyCode keymap. Signed-off-by: John Arbuckle <programmingkidx@gmail.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
a35412782d
commit
aaac714f31
315
ui/cocoa.m
315
ui/cocoa.m
@ -33,6 +33,7 @@
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "qmp-commands.h"
|
||||
#include "sysemu/blockdev.h"
|
||||
#include <Carbon/Carbon.h>
|
||||
|
||||
#ifndef MAC_OS_X_VERSION_10_5
|
||||
#define MAC_OS_X_VERSION_10_5 1050
|
||||
@ -72,178 +73,139 @@ bool stretch_video;
|
||||
NSTextField *pauseLabel;
|
||||
NSArray * supportedImageFileTypes;
|
||||
|
||||
// keymap conversion
|
||||
int keymap[] =
|
||||
{
|
||||
// SdlI macI macH SdlH 104xtH 104xtC sdl
|
||||
30, // 0 0x00 0x1e A QZ_a
|
||||
31, // 1 0x01 0x1f S QZ_s
|
||||
32, // 2 0x02 0x20 D QZ_d
|
||||
33, // 3 0x03 0x21 F QZ_f
|
||||
35, // 4 0x04 0x23 H QZ_h
|
||||
34, // 5 0x05 0x22 G QZ_g
|
||||
44, // 6 0x06 0x2c Z QZ_z
|
||||
45, // 7 0x07 0x2d X QZ_x
|
||||
46, // 8 0x08 0x2e C QZ_c
|
||||
47, // 9 0x09 0x2f V QZ_v
|
||||
0, // 10 0x0A Undefined
|
||||
48, // 11 0x0B 0x30 B QZ_b
|
||||
16, // 12 0x0C 0x10 Q QZ_q
|
||||
17, // 13 0x0D 0x11 W QZ_w
|
||||
18, // 14 0x0E 0x12 E QZ_e
|
||||
19, // 15 0x0F 0x13 R QZ_r
|
||||
21, // 16 0x10 0x15 Y QZ_y
|
||||
20, // 17 0x11 0x14 T QZ_t
|
||||
2, // 18 0x12 0x02 1 QZ_1
|
||||
3, // 19 0x13 0x03 2 QZ_2
|
||||
4, // 20 0x14 0x04 3 QZ_3
|
||||
5, // 21 0x15 0x05 4 QZ_4
|
||||
7, // 22 0x16 0x07 6 QZ_6
|
||||
6, // 23 0x17 0x06 5 QZ_5
|
||||
13, // 24 0x18 0x0d = QZ_EQUALS
|
||||
10, // 25 0x19 0x0a 9 QZ_9
|
||||
8, // 26 0x1A 0x08 7 QZ_7
|
||||
12, // 27 0x1B 0x0c - QZ_MINUS
|
||||
9, // 28 0x1C 0x09 8 QZ_8
|
||||
11, // 29 0x1D 0x0b 0 QZ_0
|
||||
27, // 30 0x1E 0x1b ] QZ_RIGHTBRACKET
|
||||
24, // 31 0x1F 0x18 O QZ_o
|
||||
22, // 32 0x20 0x16 U QZ_u
|
||||
26, // 33 0x21 0x1a [ QZ_LEFTBRACKET
|
||||
23, // 34 0x22 0x17 I QZ_i
|
||||
25, // 35 0x23 0x19 P QZ_p
|
||||
28, // 36 0x24 0x1c ENTER QZ_RETURN
|
||||
38, // 37 0x25 0x26 L QZ_l
|
||||
36, // 38 0x26 0x24 J QZ_j
|
||||
40, // 39 0x27 0x28 ' QZ_QUOTE
|
||||
37, // 40 0x28 0x25 K QZ_k
|
||||
39, // 41 0x29 0x27 ; QZ_SEMICOLON
|
||||
43, // 42 0x2A 0x2b \ QZ_BACKSLASH
|
||||
51, // 43 0x2B 0x33 , QZ_COMMA
|
||||
53, // 44 0x2C 0x35 / QZ_SLASH
|
||||
49, // 45 0x2D 0x31 N QZ_n
|
||||
50, // 46 0x2E 0x32 M QZ_m
|
||||
52, // 47 0x2F 0x34 . QZ_PERIOD
|
||||
15, // 48 0x30 0x0f TAB QZ_TAB
|
||||
57, // 49 0x31 0x39 SPACE QZ_SPACE
|
||||
41, // 50 0x32 0x29 ` QZ_BACKQUOTE
|
||||
14, // 51 0x33 0x0e BKSP QZ_BACKSPACE
|
||||
0, // 52 0x34 Undefined
|
||||
1, // 53 0x35 0x01 ESC QZ_ESCAPE
|
||||
220, // 54 0x36 0xdc E0,5C R GUI QZ_RMETA
|
||||
219, // 55 0x37 0xdb E0,5B L GUI QZ_LMETA
|
||||
42, // 56 0x38 0x2a L SHFT QZ_LSHIFT
|
||||
58, // 57 0x39 0x3a CAPS QZ_CAPSLOCK
|
||||
56, // 58 0x3A 0x38 L ALT QZ_LALT
|
||||
29, // 59 0x3B 0x1d L CTRL QZ_LCTRL
|
||||
54, // 60 0x3C 0x36 R SHFT QZ_RSHIFT
|
||||
184,// 61 0x3D 0xb8 E0,38 R ALT QZ_RALT
|
||||
157,// 62 0x3E 0x9d E0,1D R CTRL QZ_RCTRL
|
||||
0, // 63 0x3F Undefined
|
||||
0, // 64 0x40 Undefined
|
||||
0, // 65 0x41 Undefined
|
||||
0, // 66 0x42 Undefined
|
||||
55, // 67 0x43 0x37 KP * QZ_KP_MULTIPLY
|
||||
0, // 68 0x44 Undefined
|
||||
78, // 69 0x45 0x4e KP + QZ_KP_PLUS
|
||||
0, // 70 0x46 Undefined
|
||||
69, // 71 0x47 0x45 NUM QZ_NUMLOCK
|
||||
0, // 72 0x48 Undefined
|
||||
0, // 73 0x49 Undefined
|
||||
0, // 74 0x4A Undefined
|
||||
181,// 75 0x4B 0xb5 E0,35 KP / QZ_KP_DIVIDE
|
||||
152,// 76 0x4C 0x9c E0,1C KP EN QZ_KP_ENTER
|
||||
0, // 77 0x4D undefined
|
||||
74, // 78 0x4E 0x4a KP - QZ_KP_MINUS
|
||||
0, // 79 0x4F Undefined
|
||||
0, // 80 0x50 Undefined
|
||||
0, // 81 0x51 QZ_KP_EQUALS
|
||||
82, // 82 0x52 0x52 KP 0 QZ_KP0
|
||||
79, // 83 0x53 0x4f KP 1 QZ_KP1
|
||||
80, // 84 0x54 0x50 KP 2 QZ_KP2
|
||||
81, // 85 0x55 0x51 KP 3 QZ_KP3
|
||||
75, // 86 0x56 0x4b KP 4 QZ_KP4
|
||||
76, // 87 0x57 0x4c KP 5 QZ_KP5
|
||||
77, // 88 0x58 0x4d KP 6 QZ_KP6
|
||||
71, // 89 0x59 0x47 KP 7 QZ_KP7
|
||||
0, // 90 0x5A Undefined
|
||||
72, // 91 0x5B 0x48 KP 8 QZ_KP8
|
||||
73, // 92 0x5C 0x49 KP 9 QZ_KP9
|
||||
0, // 93 0x5D Undefined
|
||||
0, // 94 0x5E Undefined
|
||||
0, // 95 0x5F Undefined
|
||||
63, // 96 0x60 0x3f F5 QZ_F5
|
||||
64, // 97 0x61 0x40 F6 QZ_F6
|
||||
65, // 98 0x62 0x41 F7 QZ_F7
|
||||
61, // 99 0x63 0x3d F3 QZ_F3
|
||||
66, // 100 0x64 0x42 F8 QZ_F8
|
||||
67, // 101 0x65 0x43 F9 QZ_F9
|
||||
0, // 102 0x66 Undefined
|
||||
87, // 103 0x67 0x57 F11 QZ_F11
|
||||
0, // 104 0x68 Undefined
|
||||
183,// 105 0x69 0xb7 QZ_PRINT
|
||||
0, // 106 0x6A Undefined
|
||||
70, // 107 0x6B 0x46 SCROLL QZ_SCROLLOCK
|
||||
0, // 108 0x6C Undefined
|
||||
68, // 109 0x6D 0x44 F10 QZ_F10
|
||||
0, // 110 0x6E Undefined
|
||||
88, // 111 0x6F 0x58 F12 QZ_F12
|
||||
0, // 112 0x70 Undefined
|
||||
110,// 113 0x71 0x0 QZ_PAUSE
|
||||
210,// 114 0x72 0xd2 E0,52 INSERT QZ_INSERT
|
||||
199,// 115 0x73 0xc7 E0,47 HOME QZ_HOME
|
||||
201,// 116 0x74 0xc9 E0,49 PG UP QZ_PAGEUP
|
||||
211,// 117 0x75 0xd3 E0,53 DELETE QZ_DELETE
|
||||
62, // 118 0x76 0x3e F4 QZ_F4
|
||||
207,// 119 0x77 0xcf E0,4f END QZ_END
|
||||
60, // 120 0x78 0x3c F2 QZ_F2
|
||||
209,// 121 0x79 0xd1 E0,51 PG DN QZ_PAGEDOWN
|
||||
59, // 122 0x7A 0x3b F1 QZ_F1
|
||||
203,// 123 0x7B 0xcb e0,4B L ARROW QZ_LEFT
|
||||
205,// 124 0x7C 0xcd e0,4D R ARROW QZ_RIGHT
|
||||
208,// 125 0x7D 0xd0 E0,50 D ARROW QZ_DOWN
|
||||
200,// 126 0x7E 0xc8 E0,48 U ARROW QZ_UP
|
||||
/* completed according to http://www.libsdl.org/cgi/cvsweb.cgi/SDL12/src/video/quartz/SDL_QuartzKeys.h?rev=1.6&content-type=text/x-cvsweb-markup */
|
||||
// Mac to QKeyCode conversion
|
||||
const int mac_to_qkeycode_map[] = {
|
||||
[kVK_ANSI_A] = Q_KEY_CODE_A,
|
||||
[kVK_ANSI_B] = Q_KEY_CODE_B,
|
||||
[kVK_ANSI_C] = Q_KEY_CODE_C,
|
||||
[kVK_ANSI_D] = Q_KEY_CODE_D,
|
||||
[kVK_ANSI_E] = Q_KEY_CODE_E,
|
||||
[kVK_ANSI_F] = Q_KEY_CODE_F,
|
||||
[kVK_ANSI_G] = Q_KEY_CODE_G,
|
||||
[kVK_ANSI_H] = Q_KEY_CODE_H,
|
||||
[kVK_ANSI_I] = Q_KEY_CODE_I,
|
||||
[kVK_ANSI_J] = Q_KEY_CODE_J,
|
||||
[kVK_ANSI_K] = Q_KEY_CODE_K,
|
||||
[kVK_ANSI_L] = Q_KEY_CODE_L,
|
||||
[kVK_ANSI_M] = Q_KEY_CODE_M,
|
||||
[kVK_ANSI_N] = Q_KEY_CODE_N,
|
||||
[kVK_ANSI_O] = Q_KEY_CODE_O,
|
||||
[kVK_ANSI_P] = Q_KEY_CODE_P,
|
||||
[kVK_ANSI_Q] = Q_KEY_CODE_Q,
|
||||
[kVK_ANSI_R] = Q_KEY_CODE_R,
|
||||
[kVK_ANSI_S] = Q_KEY_CODE_S,
|
||||
[kVK_ANSI_T] = Q_KEY_CODE_T,
|
||||
[kVK_ANSI_U] = Q_KEY_CODE_U,
|
||||
[kVK_ANSI_V] = Q_KEY_CODE_V,
|
||||
[kVK_ANSI_W] = Q_KEY_CODE_W,
|
||||
[kVK_ANSI_X] = Q_KEY_CODE_X,
|
||||
[kVK_ANSI_Y] = Q_KEY_CODE_Y,
|
||||
[kVK_ANSI_Z] = Q_KEY_CODE_Z,
|
||||
|
||||
/* Additional 104 Key XP-Keyboard Scancodes from http://www.computer-engineering.org/ps2keyboard/scancodes1.html */
|
||||
/*
|
||||
221 // 0xdd e0,5d APPS
|
||||
// E0,2A,E0,37 PRNT SCRN
|
||||
// E1,1D,45,E1,9D,C5 PAUSE
|
||||
83 // 0x53 0x53 KP .
|
||||
// ACPI Scan Codes
|
||||
222 // 0xde E0, 5E Power
|
||||
223 // 0xdf E0, 5F Sleep
|
||||
227 // 0xe3 E0, 63 Wake
|
||||
// Windows Multimedia Scan Codes
|
||||
153 // 0x99 E0, 19 Next Track
|
||||
144 // 0x90 E0, 10 Previous Track
|
||||
164 // 0xa4 E0, 24 Stop
|
||||
162 // 0xa2 E0, 22 Play/Pause
|
||||
160 // 0xa0 E0, 20 Mute
|
||||
176 // 0xb0 E0, 30 Volume Up
|
||||
174 // 0xae E0, 2E Volume Down
|
||||
237 // 0xed E0, 6D Media Select
|
||||
236 // 0xec E0, 6C E-Mail
|
||||
161 // 0xa1 E0, 21 Calculator
|
||||
235 // 0xeb E0, 6B My Computer
|
||||
229 // 0xe5 E0, 65 WWW Search
|
||||
178 // 0xb2 E0, 32 WWW Home
|
||||
234 // 0xea E0, 6A WWW Back
|
||||
233 // 0xe9 E0, 69 WWW Forward
|
||||
232 // 0xe8 E0, 68 WWW Stop
|
||||
231 // 0xe7 E0, 67 WWW Refresh
|
||||
230 // 0xe6 E0, 66 WWW Favorites
|
||||
*/
|
||||
[kVK_ANSI_0] = Q_KEY_CODE_0,
|
||||
[kVK_ANSI_1] = Q_KEY_CODE_1,
|
||||
[kVK_ANSI_2] = Q_KEY_CODE_2,
|
||||
[kVK_ANSI_3] = Q_KEY_CODE_3,
|
||||
[kVK_ANSI_4] = Q_KEY_CODE_4,
|
||||
[kVK_ANSI_5] = Q_KEY_CODE_5,
|
||||
[kVK_ANSI_6] = Q_KEY_CODE_6,
|
||||
[kVK_ANSI_7] = Q_KEY_CODE_7,
|
||||
[kVK_ANSI_8] = Q_KEY_CODE_8,
|
||||
[kVK_ANSI_9] = Q_KEY_CODE_9,
|
||||
|
||||
[kVK_ANSI_Grave] = Q_KEY_CODE_GRAVE_ACCENT,
|
||||
[kVK_ANSI_Minus] = Q_KEY_CODE_MINUS,
|
||||
[kVK_ANSI_Equal] = Q_KEY_CODE_EQUAL,
|
||||
[kVK_Delete] = Q_KEY_CODE_BACKSPACE,
|
||||
[kVK_CapsLock] = Q_KEY_CODE_CAPS_LOCK,
|
||||
[kVK_Tab] = Q_KEY_CODE_TAB,
|
||||
[kVK_Return] = Q_KEY_CODE_RET,
|
||||
[kVK_ANSI_LeftBracket] = Q_KEY_CODE_BRACKET_LEFT,
|
||||
[kVK_ANSI_RightBracket] = Q_KEY_CODE_BRACKET_RIGHT,
|
||||
[kVK_ANSI_Backslash] = Q_KEY_CODE_BACKSLASH,
|
||||
[kVK_ANSI_Semicolon] = Q_KEY_CODE_SEMICOLON,
|
||||
[kVK_ANSI_Quote] = Q_KEY_CODE_APOSTROPHE,
|
||||
[kVK_ANSI_Comma] = Q_KEY_CODE_COMMA,
|
||||
[kVK_ANSI_Period] = Q_KEY_CODE_DOT,
|
||||
[kVK_ANSI_Slash] = Q_KEY_CODE_SLASH,
|
||||
[kVK_Shift] = Q_KEY_CODE_SHIFT,
|
||||
[kVK_RightShift] = Q_KEY_CODE_SHIFT_R,
|
||||
[kVK_Control] = Q_KEY_CODE_CTRL,
|
||||
[kVK_RightControl] = Q_KEY_CODE_CTRL_R,
|
||||
[kVK_Option] = Q_KEY_CODE_ALT,
|
||||
[kVK_RightOption] = Q_KEY_CODE_ALT_R,
|
||||
[kVK_Command] = Q_KEY_CODE_META_L,
|
||||
[0x36] = Q_KEY_CODE_META_R, /* There is no kVK_RightCommand */
|
||||
[kVK_Space] = Q_KEY_CODE_SPC,
|
||||
|
||||
[kVK_ANSI_Keypad0] = Q_KEY_CODE_KP_0,
|
||||
[kVK_ANSI_Keypad1] = Q_KEY_CODE_KP_1,
|
||||
[kVK_ANSI_Keypad2] = Q_KEY_CODE_KP_2,
|
||||
[kVK_ANSI_Keypad3] = Q_KEY_CODE_KP_3,
|
||||
[kVK_ANSI_Keypad4] = Q_KEY_CODE_KP_4,
|
||||
[kVK_ANSI_Keypad5] = Q_KEY_CODE_KP_5,
|
||||
[kVK_ANSI_Keypad6] = Q_KEY_CODE_KP_6,
|
||||
[kVK_ANSI_Keypad7] = Q_KEY_CODE_KP_7,
|
||||
[kVK_ANSI_Keypad8] = Q_KEY_CODE_KP_8,
|
||||
[kVK_ANSI_Keypad9] = Q_KEY_CODE_KP_9,
|
||||
[kVK_ANSI_KeypadDecimal] = Q_KEY_CODE_KP_DECIMAL,
|
||||
[kVK_ANSI_KeypadEnter] = Q_KEY_CODE_KP_ENTER,
|
||||
[kVK_ANSI_KeypadPlus] = Q_KEY_CODE_KP_ADD,
|
||||
[kVK_ANSI_KeypadMinus] = Q_KEY_CODE_KP_SUBTRACT,
|
||||
[kVK_ANSI_KeypadMultiply] = Q_KEY_CODE_KP_MULTIPLY,
|
||||
[kVK_ANSI_KeypadDivide] = Q_KEY_CODE_KP_DIVIDE,
|
||||
[kVK_ANSI_KeypadEquals] = Q_KEY_CODE_KP_EQUALS,
|
||||
[kVK_ANSI_KeypadClear] = Q_KEY_CODE_NUM_LOCK,
|
||||
|
||||
[kVK_UpArrow] = Q_KEY_CODE_UP,
|
||||
[kVK_DownArrow] = Q_KEY_CODE_DOWN,
|
||||
[kVK_LeftArrow] = Q_KEY_CODE_LEFT,
|
||||
[kVK_RightArrow] = Q_KEY_CODE_RIGHT,
|
||||
|
||||
[kVK_Help] = Q_KEY_CODE_INSERT,
|
||||
[kVK_Home] = Q_KEY_CODE_HOME,
|
||||
[kVK_PageUp] = Q_KEY_CODE_PGUP,
|
||||
[kVK_PageDown] = Q_KEY_CODE_PGDN,
|
||||
[kVK_End] = Q_KEY_CODE_END,
|
||||
[kVK_ForwardDelete] = Q_KEY_CODE_DELETE,
|
||||
|
||||
[kVK_Escape] = Q_KEY_CODE_ESC,
|
||||
|
||||
/* The Power key can't be used directly because the operating system uses
|
||||
* it. This key can be emulated by using it in place of another key such as
|
||||
* F1. Don't forget to disable the real key binding.
|
||||
*/
|
||||
/* [kVK_F1] = Q_KEY_CODE_POWER, */
|
||||
|
||||
[kVK_F1] = Q_KEY_CODE_F1,
|
||||
[kVK_F2] = Q_KEY_CODE_F2,
|
||||
[kVK_F3] = Q_KEY_CODE_F3,
|
||||
[kVK_F4] = Q_KEY_CODE_F4,
|
||||
[kVK_F5] = Q_KEY_CODE_F5,
|
||||
[kVK_F6] = Q_KEY_CODE_F6,
|
||||
[kVK_F7] = Q_KEY_CODE_F7,
|
||||
[kVK_F8] = Q_KEY_CODE_F8,
|
||||
[kVK_F9] = Q_KEY_CODE_F9,
|
||||
[kVK_F10] = Q_KEY_CODE_F10,
|
||||
[kVK_F11] = Q_KEY_CODE_F11,
|
||||
[kVK_F12] = Q_KEY_CODE_F12,
|
||||
[kVK_F13] = Q_KEY_CODE_PRINT,
|
||||
[kVK_F14] = Q_KEY_CODE_SCROLL_LOCK,
|
||||
[kVK_F15] = Q_KEY_CODE_PAUSE,
|
||||
|
||||
/*
|
||||
* The eject and volume keys can't be used here because they are handled at
|
||||
* a lower level than what an Application can see.
|
||||
*/
|
||||
};
|
||||
|
||||
static int cocoa_keycode_to_qemu(int keycode)
|
||||
{
|
||||
if (ARRAY_SIZE(keymap) <= keycode) {
|
||||
if (ARRAY_SIZE(mac_to_qkeycode_map) <= keycode) {
|
||||
fprintf(stderr, "(cocoa) warning unknown keycode 0x%x\n", keycode);
|
||||
return 0;
|
||||
}
|
||||
return keymap[keycode];
|
||||
return mac_to_qkeycode_map[keycode];
|
||||
}
|
||||
|
||||
/* Displays an alert dialog box with the specified message */
|
||||
@ -557,21 +519,24 @@ QemuCocoaView *cocoaView;
|
||||
case NSFlagsChanged:
|
||||
keycode = cocoa_keycode_to_qemu([event keyCode]);
|
||||
|
||||
if ((keycode == 219 || keycode == 220) && !isMouseGrabbed) {
|
||||
if ((keycode == Q_KEY_CODE_META_L || keycode == Q_KEY_CODE_META_R)
|
||||
&& !isMouseGrabbed) {
|
||||
/* Don't pass command key changes to guest unless mouse is grabbed */
|
||||
keycode = 0;
|
||||
}
|
||||
|
||||
if (keycode) {
|
||||
if (keycode == 58 || keycode == 69) { // emulate caps lock and num lock keydown and keyup
|
||||
qemu_input_event_send_key_number(dcl->con, keycode, true);
|
||||
qemu_input_event_send_key_number(dcl->con, keycode, false);
|
||||
// emulate caps lock and num lock keydown and keyup
|
||||
if (keycode == Q_KEY_CODE_CAPS_LOCK ||
|
||||
keycode == Q_KEY_CODE_NUM_LOCK) {
|
||||
qemu_input_event_send_key_qcode(dcl->con, keycode, true);
|
||||
qemu_input_event_send_key_qcode(dcl->con, keycode, false);
|
||||
} else if (qemu_console_is_graphic(NULL)) {
|
||||
if (modifiers_state[keycode] == 0) { // keydown
|
||||
qemu_input_event_send_key_number(dcl->con, keycode, true);
|
||||
qemu_input_event_send_key_qcode(dcl->con, keycode, true);
|
||||
modifiers_state[keycode] = 1;
|
||||
} else { // keyup
|
||||
qemu_input_event_send_key_number(dcl->con, keycode, false);
|
||||
qemu_input_event_send_key_qcode(dcl->con, keycode, false);
|
||||
modifiers_state[keycode] = 0;
|
||||
}
|
||||
}
|
||||
@ -598,14 +563,14 @@ QemuCocoaView *cocoaView;
|
||||
switch (keycode) {
|
||||
|
||||
// enable graphic console
|
||||
case 0x02 ... 0x0a: // '1' to '9' keys
|
||||
console_select(keycode - 0x02);
|
||||
case Q_KEY_CODE_1 ... Q_KEY_CODE_9: // '1' to '9' keys
|
||||
console_select(keycode - 11);
|
||||
break;
|
||||
}
|
||||
|
||||
// handle keys for graphic console
|
||||
} else if (qemu_console_is_graphic(NULL)) {
|
||||
qemu_input_event_send_key_number(dcl->con, keycode, true);
|
||||
qemu_input_event_send_key_qcode(dcl->con, keycode, true);
|
||||
|
||||
// handlekeys for Monitor
|
||||
} else {
|
||||
@ -653,7 +618,7 @@ QemuCocoaView *cocoaView;
|
||||
}
|
||||
|
||||
if (qemu_console_is_graphic(NULL)) {
|
||||
qemu_input_event_send_key_number(dcl->con, keycode, false);
|
||||
qemu_input_event_send_key_qcode(dcl->con, keycode, false);
|
||||
}
|
||||
break;
|
||||
case NSMouseMoved:
|
||||
@ -823,7 +788,7 @@ QemuCocoaView *cocoaView;
|
||||
for (index = 0; index < max_index; index++) {
|
||||
if (modifiers_state[index]) {
|
||||
modifiers_state[index] = 0;
|
||||
qemu_input_event_send_key_number(dcl->con, index, false);
|
||||
qemu_input_event_send_key_qcode(dcl->con, index, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user