From nobody Tue Aug 25 13:46:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779364869; cv=none; d=zohomail.com; s=zohoarc; b=Gy5FPu+ADzvkk42F+hWEEh0qcsKVajfi+zTRtm2SuiZpT5ua8StDzrJuMywiaDbyJdIrGfYYxyKBQxjZWX4YcZhVBJpMyojBD9dPM1pqOPmnQXlw86FtX+89UjFdypJgwd0MBsMOCSy3m4c16edLORfkbl47XDtfL70TkmD4370= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779364869; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=i9poQTDTaxKmyym8x3VBqC5ljx/O722hhW1bSKyHHpE=; b=Mqkm5LF4pckssGeGtOTc3qRvr7MWCw2FYeENiL83yOia0p35D53pefeep+GTCICJztraWynE75fqkF1BO1vFNPcHXVCK+Jl4s9Qf9UdO+C1RJ2P4SE+/oGTF3fuIsfrPLaL/ZS0xqqtmwIZVIzHWs59SSejeXGkfxsrA05535ek= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779364869758536.0977731583167; Thu, 21 May 2026 05:01:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ25C-0000tT-KV; Thu, 21 May 2026 08:01:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ24J-0000BA-Ei for qemu-devel@nongnu.org; Thu, 21 May 2026 08:00:08 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ24E-00051O-0Z for qemu-devel@nongnu.org; Thu, 21 May 2026 08:00:00 -0400 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-211-Yxj3nnFGMcSj3Ve4k1_WFw-1; Thu, 21 May 2026 07:59:51 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id B19DC180060D; Thu, 21 May 2026 11:59:50 +0000 (UTC) Received: from localhost (unknown [10.44.24.26]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C7467300019F; Thu, 21 May 2026 11:59:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779364797; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=i9poQTDTaxKmyym8x3VBqC5ljx/O722hhW1bSKyHHpE=; b=JDtpSHU9ubi3L81Z++UQvy82QhSVu3FQQNT3KJJ/IHIlZjYZhpwSKEgmzjyAmVPC9f2zUO vLY4drj9JyGaKz0mQ+rfCeZD3zA0fwEorbNxr7bLFuKot0xbgqy/tY9YZf3tTsnj0Y/Ojq +bFnQ7rRKGrWVTFc/GIIsJEG2iZ+eY4= X-MC-Unique: Yxj3nnFGMcSj3Ve4k1_WFw-1 X-Mimecast-MFC-AGG-ID: Yxj3nnFGMcSj3Ve4k1_WFw_1779364790 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: stefanha@gmail.com, Akihiko Odaki , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 25/38] ui/cocoa: Use Linux key codes Date: Thu, 21 May 2026 15:57:02 +0400 Message-ID: <20260521115717.1701482-26-marcandre.lureau@redhat.com> In-Reply-To: <20260521115717.1701482-1-marcandre.lureau@redhat.com> References: <20260521115717.1701482-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779364871671154100 From: Akihiko Odaki QemuInputEvent now stores Linux key codes for key events. Use those codes directly instead of translating between internal key code representations. Signed-off-by: Akihiko Odaki Reviewed-by: Marc-Andr=C3=A9 Lureau Message-ID: <20260520-input-v3-17-7c9e4c7abe34@rsg.ci.i.u-tokyo.ac.jp> --- ui/cocoa.m | 328 ++++++++++++++++++++++++----------------------------- 1 file changed, 148 insertions(+), 180 deletions(-) diff --git a/ui/cocoa.m b/ui/cocoa.m index ee53e7c72ed..c5e639ab98d 100644 --- a/ui/cocoa.m +++ b/ui/cocoa.m @@ -30,6 +30,7 @@ =20 #include "qemu/help-texts.h" #include "qemu-main.h" +#include "standard-headers/linux/input-event-codes.h" #include "ui/clipboard.h" #include "ui/console.h" #include "ui/input.h" @@ -140,124 +141,124 @@ static bool bool_with_bql(BoolCodeBlock block) return val; } =20 -// Mac to QKeyCode conversion -static const int mac_to_qkeycode_map[] =3D { - [kVK_ANSI_A] =3D Q_KEY_CODE_A, - [kVK_ANSI_B] =3D Q_KEY_CODE_B, - [kVK_ANSI_C] =3D Q_KEY_CODE_C, - [kVK_ANSI_D] =3D Q_KEY_CODE_D, - [kVK_ANSI_E] =3D Q_KEY_CODE_E, - [kVK_ANSI_F] =3D Q_KEY_CODE_F, - [kVK_ANSI_G] =3D Q_KEY_CODE_G, - [kVK_ANSI_H] =3D Q_KEY_CODE_H, - [kVK_ANSI_I] =3D Q_KEY_CODE_I, - [kVK_ANSI_J] =3D Q_KEY_CODE_J, - [kVK_ANSI_K] =3D Q_KEY_CODE_K, - [kVK_ANSI_L] =3D Q_KEY_CODE_L, - [kVK_ANSI_M] =3D Q_KEY_CODE_M, - [kVK_ANSI_N] =3D Q_KEY_CODE_N, - [kVK_ANSI_O] =3D Q_KEY_CODE_O, - [kVK_ANSI_P] =3D Q_KEY_CODE_P, - [kVK_ANSI_Q] =3D Q_KEY_CODE_Q, - [kVK_ANSI_R] =3D Q_KEY_CODE_R, - [kVK_ANSI_S] =3D Q_KEY_CODE_S, - [kVK_ANSI_T] =3D Q_KEY_CODE_T, - [kVK_ANSI_U] =3D Q_KEY_CODE_U, - [kVK_ANSI_V] =3D Q_KEY_CODE_V, - [kVK_ANSI_W] =3D Q_KEY_CODE_W, - [kVK_ANSI_X] =3D Q_KEY_CODE_X, - [kVK_ANSI_Y] =3D Q_KEY_CODE_Y, - [kVK_ANSI_Z] =3D Q_KEY_CODE_Z, - - [kVK_ANSI_0] =3D Q_KEY_CODE_0, - [kVK_ANSI_1] =3D Q_KEY_CODE_1, - [kVK_ANSI_2] =3D Q_KEY_CODE_2, - [kVK_ANSI_3] =3D Q_KEY_CODE_3, - [kVK_ANSI_4] =3D Q_KEY_CODE_4, - [kVK_ANSI_5] =3D Q_KEY_CODE_5, - [kVK_ANSI_6] =3D Q_KEY_CODE_6, - [kVK_ANSI_7] =3D Q_KEY_CODE_7, - [kVK_ANSI_8] =3D Q_KEY_CODE_8, - [kVK_ANSI_9] =3D Q_KEY_CODE_9, - - [kVK_ANSI_Grave] =3D Q_KEY_CODE_GRAVE_ACCENT, - [kVK_ANSI_Minus] =3D Q_KEY_CODE_MINUS, - [kVK_ANSI_Equal] =3D Q_KEY_CODE_EQUAL, - [kVK_Delete] =3D Q_KEY_CODE_BACKSPACE, - [kVK_CapsLock] =3D Q_KEY_CODE_CAPS_LOCK, - [kVK_Tab] =3D Q_KEY_CODE_TAB, - [kVK_Return] =3D Q_KEY_CODE_RET, - [kVK_ANSI_LeftBracket] =3D Q_KEY_CODE_BRACKET_LEFT, - [kVK_ANSI_RightBracket] =3D Q_KEY_CODE_BRACKET_RIGHT, - [kVK_ANSI_Backslash] =3D Q_KEY_CODE_BACKSLASH, - [kVK_ANSI_Semicolon] =3D Q_KEY_CODE_SEMICOLON, - [kVK_ANSI_Quote] =3D Q_KEY_CODE_APOSTROPHE, - [kVK_ANSI_Comma] =3D Q_KEY_CODE_COMMA, - [kVK_ANSI_Period] =3D Q_KEY_CODE_DOT, - [kVK_ANSI_Slash] =3D Q_KEY_CODE_SLASH, - [kVK_Space] =3D Q_KEY_CODE_SPC, - - [kVK_ANSI_Keypad0] =3D Q_KEY_CODE_KP_0, - [kVK_ANSI_Keypad1] =3D Q_KEY_CODE_KP_1, - [kVK_ANSI_Keypad2] =3D Q_KEY_CODE_KP_2, - [kVK_ANSI_Keypad3] =3D Q_KEY_CODE_KP_3, - [kVK_ANSI_Keypad4] =3D Q_KEY_CODE_KP_4, - [kVK_ANSI_Keypad5] =3D Q_KEY_CODE_KP_5, - [kVK_ANSI_Keypad6] =3D Q_KEY_CODE_KP_6, - [kVK_ANSI_Keypad7] =3D Q_KEY_CODE_KP_7, - [kVK_ANSI_Keypad8] =3D Q_KEY_CODE_KP_8, - [kVK_ANSI_Keypad9] =3D Q_KEY_CODE_KP_9, - [kVK_ANSI_KeypadDecimal] =3D Q_KEY_CODE_KP_DECIMAL, - [kVK_ANSI_KeypadEnter] =3D Q_KEY_CODE_KP_ENTER, - [kVK_ANSI_KeypadPlus] =3D Q_KEY_CODE_KP_ADD, - [kVK_ANSI_KeypadMinus] =3D Q_KEY_CODE_KP_SUBTRACT, - [kVK_ANSI_KeypadMultiply] =3D Q_KEY_CODE_KP_MULTIPLY, - [kVK_ANSI_KeypadDivide] =3D Q_KEY_CODE_KP_DIVIDE, - [kVK_ANSI_KeypadEquals] =3D Q_KEY_CODE_KP_EQUALS, - [kVK_ANSI_KeypadClear] =3D Q_KEY_CODE_NUM_LOCK, - - [kVK_UpArrow] =3D Q_KEY_CODE_UP, - [kVK_DownArrow] =3D Q_KEY_CODE_DOWN, - [kVK_LeftArrow] =3D Q_KEY_CODE_LEFT, - [kVK_RightArrow] =3D Q_KEY_CODE_RIGHT, - - [kVK_Help] =3D Q_KEY_CODE_INSERT, - [kVK_Home] =3D Q_KEY_CODE_HOME, - [kVK_PageUp] =3D Q_KEY_CODE_PGUP, - [kVK_PageDown] =3D Q_KEY_CODE_PGDN, - [kVK_End] =3D Q_KEY_CODE_END, - [kVK_ForwardDelete] =3D Q_KEY_CODE_DELETE, - - [kVK_Escape] =3D Q_KEY_CODE_ESC, +// Mac to Linux conversion +static const unsigned int mac_to_linux_map[] =3D { + [kVK_ANSI_A] =3D KEY_A, + [kVK_ANSI_B] =3D KEY_B, + [kVK_ANSI_C] =3D KEY_C, + [kVK_ANSI_D] =3D KEY_D, + [kVK_ANSI_E] =3D KEY_E, + [kVK_ANSI_F] =3D KEY_F, + [kVK_ANSI_G] =3D KEY_G, + [kVK_ANSI_H] =3D KEY_H, + [kVK_ANSI_I] =3D KEY_I, + [kVK_ANSI_J] =3D KEY_J, + [kVK_ANSI_K] =3D KEY_K, + [kVK_ANSI_L] =3D KEY_L, + [kVK_ANSI_M] =3D KEY_M, + [kVK_ANSI_N] =3D KEY_N, + [kVK_ANSI_O] =3D KEY_O, + [kVK_ANSI_P] =3D KEY_P, + [kVK_ANSI_Q] =3D KEY_Q, + [kVK_ANSI_R] =3D KEY_R, + [kVK_ANSI_S] =3D KEY_S, + [kVK_ANSI_T] =3D KEY_T, + [kVK_ANSI_U] =3D KEY_U, + [kVK_ANSI_V] =3D KEY_V, + [kVK_ANSI_W] =3D KEY_W, + [kVK_ANSI_X] =3D KEY_X, + [kVK_ANSI_Y] =3D KEY_Y, + [kVK_ANSI_Z] =3D KEY_Z, + + [kVK_ANSI_0] =3D KEY_0, + [kVK_ANSI_1] =3D KEY_1, + [kVK_ANSI_2] =3D KEY_2, + [kVK_ANSI_3] =3D KEY_3, + [kVK_ANSI_4] =3D KEY_4, + [kVK_ANSI_5] =3D KEY_5, + [kVK_ANSI_6] =3D KEY_6, + [kVK_ANSI_7] =3D KEY_7, + [kVK_ANSI_8] =3D KEY_8, + [kVK_ANSI_9] =3D KEY_9, + + [kVK_ANSI_Grave] =3D KEY_GRAVE, + [kVK_ANSI_Minus] =3D KEY_MINUS, + [kVK_ANSI_Equal] =3D KEY_EQUAL, + [kVK_Delete] =3D KEY_BACKSPACE, + [kVK_CapsLock] =3D KEY_CAPSLOCK, + [kVK_Tab] =3D KEY_TAB, + [kVK_Return] =3D KEY_ENTER, + [kVK_ANSI_LeftBracket] =3D KEY_LEFTBRACE, + [kVK_ANSI_RightBracket] =3D KEY_RIGHTBRACE, + [kVK_ANSI_Backslash] =3D KEY_BACKSLASH, + [kVK_ANSI_Semicolon] =3D KEY_SEMICOLON, + [kVK_ANSI_Quote] =3D KEY_APOSTROPHE, + [kVK_ANSI_Comma] =3D KEY_COMMA, + [kVK_ANSI_Period] =3D KEY_DOT, + [kVK_ANSI_Slash] =3D KEY_SLASH, + [kVK_Space] =3D KEY_SPACE, + + [kVK_ANSI_Keypad0] =3D KEY_KP0, + [kVK_ANSI_Keypad1] =3D KEY_KP1, + [kVK_ANSI_Keypad2] =3D KEY_KP2, + [kVK_ANSI_Keypad3] =3D KEY_KP3, + [kVK_ANSI_Keypad4] =3D KEY_KP4, + [kVK_ANSI_Keypad5] =3D KEY_KP5, + [kVK_ANSI_Keypad6] =3D KEY_KP6, + [kVK_ANSI_Keypad7] =3D KEY_KP7, + [kVK_ANSI_Keypad8] =3D KEY_KP8, + [kVK_ANSI_Keypad9] =3D KEY_KP9, + [kVK_ANSI_KeypadDecimal] =3D KEY_KPDOT, + [kVK_ANSI_KeypadEnter] =3D KEY_KPENTER, + [kVK_ANSI_KeypadPlus] =3D KEY_KPPLUS, + [kVK_ANSI_KeypadMinus] =3D KEY_KPMINUS, + [kVK_ANSI_KeypadMultiply] =3D KEY_KPASTERISK, + [kVK_ANSI_KeypadDivide] =3D KEY_KPSLASH, + [kVK_ANSI_KeypadEquals] =3D KEY_KPEQUAL, + [kVK_ANSI_KeypadClear] =3D KEY_NUMLOCK, + + [kVK_UpArrow] =3D KEY_UP, + [kVK_DownArrow] =3D KEY_DOWN, + [kVK_LeftArrow] =3D KEY_LEFT, + [kVK_RightArrow] =3D KEY_RIGHT, + + [kVK_Help] =3D KEY_INSERT, + [kVK_Home] =3D KEY_HOME, + [kVK_PageUp] =3D KEY_PAGEUP, + [kVK_PageDown] =3D KEY_PAGEDOWN, + [kVK_End] =3D KEY_END, + [kVK_ForwardDelete] =3D KEY_DELETE, + + [kVK_Escape] =3D KEY_ESC, =20 /* The Power key can't be used directly because the operating system u= ses * it. This key can be emulated by using it in place of another key su= ch as * F1. Don't forget to disable the real key binding. */ - /* [kVK_F1] =3D Q_KEY_CODE_POWER, */ - - [kVK_F1] =3D Q_KEY_CODE_F1, - [kVK_F2] =3D Q_KEY_CODE_F2, - [kVK_F3] =3D Q_KEY_CODE_F3, - [kVK_F4] =3D Q_KEY_CODE_F4, - [kVK_F5] =3D Q_KEY_CODE_F5, - [kVK_F6] =3D Q_KEY_CODE_F6, - [kVK_F7] =3D Q_KEY_CODE_F7, - [kVK_F8] =3D Q_KEY_CODE_F8, - [kVK_F9] =3D Q_KEY_CODE_F9, - [kVK_F10] =3D Q_KEY_CODE_F10, - [kVK_F11] =3D Q_KEY_CODE_F11, - [kVK_F12] =3D Q_KEY_CODE_F12, - [kVK_F13] =3D Q_KEY_CODE_PRINT, - [kVK_F14] =3D Q_KEY_CODE_SCROLL_LOCK, - [kVK_F15] =3D Q_KEY_CODE_PAUSE, + /* [kVK_F1] =3D KEY_POWER, */ + + [kVK_F1] =3D KEY_F1, + [kVK_F2] =3D KEY_F2, + [kVK_F3] =3D KEY_F3, + [kVK_F4] =3D KEY_F4, + [kVK_F5] =3D KEY_F5, + [kVK_F6] =3D KEY_F6, + [kVK_F7] =3D KEY_F7, + [kVK_F8] =3D KEY_F8, + [kVK_F9] =3D KEY_F9, + [kVK_F10] =3D KEY_F10, + [kVK_F11] =3D KEY_F11, + [kVK_F12] =3D KEY_F12, + [kVK_F13] =3D KEY_SYSRQ, + [kVK_F14] =3D KEY_SCROLLLOCK, + [kVK_F15] =3D KEY_PAUSE, =20 // JIS keyboards only - [kVK_JIS_Yen] =3D Q_KEY_CODE_YEN, - [kVK_JIS_Underscore] =3D Q_KEY_CODE_RO, - [kVK_JIS_KeypadComma] =3D Q_KEY_CODE_KP_COMMA, - [kVK_JIS_Eisu] =3D Q_KEY_CODE_MUHENKAN, - [kVK_JIS_Kana] =3D Q_KEY_CODE_HENKAN, + [kVK_JIS_Yen] =3D KEY_YEN, + [kVK_JIS_Underscore] =3D KEY_RO, + [kVK_JIS_KeypadComma] =3D KEY_KPCOMMA, + [kVK_JIS_Eisu] =3D KEY_MUHENKAN, + [kVK_JIS_Kana] =3D KEY_HENKAN, =20 /* * The eject and volume keys can't be used here because they are handl= ed at @@ -265,13 +266,13 @@ static bool bool_with_bql(BoolCodeBlock block) */ }; =20 -static int cocoa_keycode_to_qemu(int keycode) +static unsigned int cocoa_keycode_to_linux(int keycode) { - if (ARRAY_SIZE(mac_to_qkeycode_map) <=3D keycode) { + if (ARRAY_SIZE(mac_to_linux_map) <=3D keycode) { error_report("(cocoa) warning unknown keycode 0x%x", keycode); return 0; } - return mac_to_qkeycode_map[keycode]; + return mac_to_linux_map[keycode]; } =20 /* Displays an alert dialog box with the specified message */ @@ -766,9 +767,8 @@ - (void) setFullGrab:(id)sender CFRelease(tapEventsSrc); } =20 -- (void) toggleKey: (int)keycode { - unsigned int lnx =3D qemu_input_map_qcode_to_linux[keycode]; - qkbd_state_key_event(kbd, lnx, !qkbd_state_key_get(kbd, lnx)); +- (void) toggleKey: (unsigned int)keycode { + qkbd_state_key_event(kbd, keycode, !qkbd_state_key_get(kbd, keycode)); } =20 // Does the work of sending input to the monitor @@ -848,7 +848,7 @@ - (bool) handleEventLocked:(NSEvent *)event /* Return true if we handled the event, false if it should be given to= OSX */ COCOA_DEBUG("QemuCocoaView: handleEvent\n"); InputButton button; - int keycode =3D 0; + unsigned int keycode; NSUInteger modifiers =3D [event modifierFlags]; =20 /* @@ -890,62 +890,34 @@ - (bool) handleEventLocked:(NSEvent *)event */ if (!!(modifiers & NSEventModifierFlagCapsLock) !=3D qkbd_state_modifier_get(kbd, QKBD_MOD_CAPSLOCK)) { - qkbd_state_key_event(kbd, - qemu_input_map_qcode_to_linux[Q_KEY_CODE_CAPS= _LOCK], - true); - qkbd_state_key_event(kbd, - qemu_input_map_qcode_to_linux[Q_KEY_CODE_CAPS= _LOCK], - false); + qkbd_state_key_event(kbd, KEY_CAPSLOCK, true); + qkbd_state_key_event(kbd, KEY_CAPSLOCK, false); } =20 if (!(modifiers & NSEventModifierFlagShift)) { - qkbd_state_key_event(kbd, - qemu_input_map_qcode_to_linux[Q_KEY_CODE_SHIF= T], - false); - qkbd_state_key_event(kbd, - qemu_input_map_qcode_to_linux[Q_KEY_CODE_SHIF= T_R], - false); + qkbd_state_key_event(kbd, KEY_LEFTSHIFT, false); + qkbd_state_key_event(kbd, KEY_RIGHTSHIFT, false); } if (!(modifiers & NSEventModifierFlagControl)) { - qkbd_state_key_event(kbd, - qemu_input_map_qcode_to_linux[Q_KEY_CODE_CTRL= ], - false); - qkbd_state_key_event(kbd, - qemu_input_map_qcode_to_linux[Q_KEY_CODE_CTRL= _R], - false); + qkbd_state_key_event(kbd, KEY_LEFTCTRL, false); + qkbd_state_key_event(kbd, KEY_RIGHTCTRL, false); } if (!(modifiers & NSEventModifierFlagOption)) { if (swap_opt_cmd) { - qkbd_state_key_event(kbd, - qemu_input_map_qcode_to_linux[Q_KEY_CODE_= META_L], - false); - qkbd_state_key_event(kbd, - qemu_input_map_qcode_to_linux[Q_KEY_CODE_= META_R], - false); + qkbd_state_key_event(kbd, KEY_LEFTMETA, false); + qkbd_state_key_event(kbd, KEY_RIGHTMETA, false); } else { - qkbd_state_key_event(kbd, - qemu_input_map_qcode_to_linux[Q_KEY_CODE_= ALT], - false); - qkbd_state_key_event(kbd, - qemu_input_map_qcode_to_linux[Q_KEY_CODE_= ALT_R], - false); + qkbd_state_key_event(kbd, KEY_LEFTALT, false); + qkbd_state_key_event(kbd, KEY_RIGHTALT, false); } } if (!(modifiers & NSEventModifierFlagCommand)) { if (swap_opt_cmd) { - qkbd_state_key_event(kbd, - qemu_input_map_qcode_to_linux[Q_KEY_CODE_= ALT], - false); - qkbd_state_key_event(kbd, - qemu_input_map_qcode_to_linux[Q_KEY_CODE_= ALT_R], - false); + qkbd_state_key_event(kbd, KEY_LEFTALT, false); + qkbd_state_key_event(kbd, KEY_RIGHTALT, false); } else { - qkbd_state_key_event(kbd, - qemu_input_map_qcode_to_linux[Q_KEY_CODE_= META_L], - false); - qkbd_state_key_event(kbd, - qemu_input_map_qcode_to_linux[Q_KEY_CODE_= META_R], - false); + qkbd_state_key_event(kbd, KEY_LEFTMETA, false); + qkbd_state_key_event(kbd, KEY_RIGHTMETA, false); } } =20 @@ -954,34 +926,34 @@ - (bool) handleEventLocked:(NSEvent *)event switch ([event keyCode]) { case kVK_Shift: if (!!(modifiers & NSEventModifierFlagShift)) { - [self toggleKey:Q_KEY_CODE_SHIFT]; + [self toggleKey:KEY_LEFTSHIFT]; } break; =20 case kVK_RightShift: if (!!(modifiers & NSEventModifierFlagShift)) { - [self toggleKey:Q_KEY_CODE_SHIFT_R]; + [self toggleKey:KEY_RIGHTSHIFT]; } break; =20 case kVK_Control: if (!!(modifiers & NSEventModifierFlagControl)) { - [self toggleKey:Q_KEY_CODE_CTRL]; + [self toggleKey:KEY_LEFTCTRL]; } break; =20 case kVK_RightControl: if (!!(modifiers & NSEventModifierFlagControl)) { - [self toggleKey:Q_KEY_CODE_CTRL_R]; + [self toggleKey:KEY_RIGHTCTRL]; } break; =20 case kVK_Option: if (!!(modifiers & NSEventModifierFlagOption)) { if (swap_opt_cmd) { - [self toggleKey:Q_KEY_CODE_META_L]; + [self toggleKey:KEY_LEFTMETA]; } else { - [self toggleKey:Q_KEY_CODE_ALT]; + [self toggleKey:KEY_LEFTALT]; } } break; @@ -989,9 +961,9 @@ - (bool) handleEventLocked:(NSEvent *)event case kVK_RightOption: if (!!(modifiers & NSEventModifierFlagOption)) { if (swap_opt_cmd) { - [self toggleKey:Q_KEY_CODE_META_R]; + [self toggleKey:KEY_RIGHTMETA]; } else { - [self toggleKey:Q_KEY_CODE_ALT_R]; + [self toggleKey:KEY_RIGHTALT]; } } break; @@ -1002,9 +974,9 @@ - (bool) handleEventLocked:(NSEvent *)event !!(modifiers & NSEventModifierFlagCommand) && left_command_key_enabled) { if (swap_opt_cmd) { - [self toggleKey:Q_KEY_CODE_ALT]; + [self toggleKey:KEY_LEFTALT]; } else { - [self toggleKey:Q_KEY_CODE_META_L]; + [self toggleKey:KEY_LEFTMETA]; } } break; @@ -1013,16 +985,16 @@ - (bool) handleEventLocked:(NSEvent *)event if (isMouseGrabbed && !!(modifiers & NSEventModifierFlagCommand)) { if (swap_opt_cmd) { - [self toggleKey:Q_KEY_CODE_ALT_R]; + [self toggleKey:KEY_RIGHTALT]; } else { - [self toggleKey:Q_KEY_CODE_META_R]; + [self toggleKey:KEY_RIGHTMETA]; } } break; } return true; case NSEventTypeKeyDown: - keycode =3D cocoa_keycode_to_qemu([event keyCode]); + keycode =3D cocoa_keycode_to_linux([event keyCode]); =20 // forward command key combos to the host UI unless the mouse = is grabbed if (!isMouseGrabbed && ([event modifierFlags] & NSEventModifie= rFlagCommand)) { @@ -1052,15 +1024,13 @@ - (bool) handleEventLocked:(NSEvent *)event } =20 if (qemu_console_is_graphic(dcl.con)) { - qkbd_state_key_event(kbd, - qemu_input_map_qcode_to_linux[keycode= ], - true); + qkbd_state_key_event(kbd, keycode, true); } else { [self handleMonitorInput: event]; } return true; case NSEventTypeKeyUp: - keycode =3D cocoa_keycode_to_qemu([event keyCode]); + keycode =3D cocoa_keycode_to_linux([event keyCode]); =20 // don't pass the guest a spurious key-up if we treated this // command-key combo as a host UI action @@ -1069,9 +1039,7 @@ - (bool) handleEventLocked:(NSEvent *)event } =20 if (qemu_console_is_graphic(dcl.con)) { - qkbd_state_key_event(kbd, - qemu_input_map_qcode_to_linux[keycode= ], - false); + qkbd_state_key_event(kbd, keycode, false); } return true; case NSEventTypeScrollWheel: --=20 2.54.0