From nobody Tue Jun 9 23:08:21 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=1781015735; cv=none; d=zohomail.com; s=zohoarc; b=d+VVTo23fALxNoFYJnnPe7U2FTlEG7h5MUrHusnzl4MUEJPVJQwSNzxRAaIIUx+nYpdTA/fb8SjTWBqK3qYTALt9m8J9MdEdEyE0fdQsDrdOkZTyZ2hpo/Bet8npNH51g9lsp/R5LMtNO0biwNI196Wt0wQv/59gzvTKtDH1w/s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781015735; 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=J05f+bE9SwoDxfDDfEZA9+fpURVNCN5SQ3H6FwQT3Os=; b=V/Q5tqsKEGobAgSzgSbAITcfpe6qQJ9Bp6PuDG8eTr/owtjbSkLlIquAmodS/ENcaXm4EW2N+u3ENSHZqqIceA2rY0jJLpad0tUX9ZuV/rwhJd7QtAnAeoXFNODHdKJIEcQNUOKxz/RvqSwanrLmHbQKK6ehrdM/xwQp3RJQH+w= 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 1781015735522101.9211840114167; Tue, 9 Jun 2026 07:35:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWxXa-0000un-BN; Tue, 09 Jun 2026 10:34:54 -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 1wWxXY-0000u0-LS for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:34:52 -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 1wWxXX-0006f8-2T for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:34:52 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-49-Ti1uM9bhOWuZxux6vL-2VA-1; Tue, 09 Jun 2026 10:34:49 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 9F0DD195DE70; Tue, 9 Jun 2026 14:34:47 +0000 (UTC) Received: from localhost (unknown [10.44.24.21]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B7CB81954102; Tue, 9 Jun 2026 14:34:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781015690; 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=J05f+bE9SwoDxfDDfEZA9+fpURVNCN5SQ3H6FwQT3Os=; b=CdvgKH4O1fvEGtKvhIrEgVXhLdFUqRtcrj6z+GcCMsK5PP+PzyESJNtG4yLEIdkATkp7Z5 mMiueqC6EZW6uYOzuvMOPhVPE45dl5PUh13JmlNs47fcze8i3wzf5MLtrBg7rhxIBXUHwC +FcLWvPhF9BW+6Gsao5sOSWdF+KJvJQ= X-MC-Unique: Ti1uM9bhOWuZxux6vL-2VA-1 X-Mimecast-MFC-AGG-ID: Ti1uM9bhOWuZxux6vL-2VA_1781015688 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Tue, 09 Jun 2026 18:34:20 +0400 Subject: [PATCH 01/17] hmp-commands.hx: fix button_state doc MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-ui-input-v1-1-42615deb818e@redhat.com> References: <20260609-ui-input-v1-0-42615deb818e@redhat.com> In-Reply-To: <20260609-ui-input-v1-0-42615deb818e@redhat.com> To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Paolo Bonzini , Richard Henderson , "Michael S. Tsirkin" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=872; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=V64EOjBSOTAn1sUIaQNU77xWo/UlHxIn8zY8KgAhomk=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqKCR2amQct5/efasTzGej1QRa5b4WZDxG1dbB/ ztIGnIJ8vmJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCaigkdgAKCRDa6OEJdZac 5aJ7EACKpNV/ne7Rye1CsvbWOZPih1ag/hzCA4BlXcoJrifRiStCD7Kuh3ouclQyauaeZO+YDXw arET5rItSIenr5nh7JUkyVFyncl/hqhcfTVVOqRjmUzb//5MkNpzmZ4LSecZ+hthp6dSYmPETR5 vKPNy7WAWJpOQf+2B2vIpbE2GcSMANi9ytNAh64hdFDpcFJzAW4tPszLrzov4nhs5mxkBav0Mwr DU6cIcRXi5tl1fBudk7HC1dThpZxB+Ci76VhLq72CBAMD+I6wNvuiQrKJEzZc+gIQv8cS1Q308Z 6zkN8uJ30BD4lh8bOnDt8bxCxz/3H0YVxWdv0sBNqG9JRUtffl2nQm9vXp46yVSnASc9kh6U5sX 3kVJMQ60L2KcPczE6FxXSCL94KIFtRfCS7ewycun6wzqrrd6srDI90pMDcbxePzx5i0SZRWwGxw yzVeOp8r23Ye7ehw3rOQEGcQ+D+VODmA5RILgO+cr4sMVPqBKUgzsHZgeWeHqBC8VW9DaoQb6Jh 63NpKDhQrL0RR0mteLNoH2MGajXwA+GVaq4weXS1JNksYG39v4diZL4vvy8FrDXEXIOT1+2EFSE SacgpPAudd+JI+gkklHa8G6NoYdm5zxaOVrWeRD0CspYBRpzGnY+WSyxzJuQxKeGiAncdr3Q8p3 Wl8ikmEU80I8XAw== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 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_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1781015737683154100 Right & middle buttons are inverted (see hmp_mouse_button) Signed-off-by: Marc-Andr=C3=A9 Lureau Acked-by: Dr. David Alan Gilbert --- hmp-commands.hx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hmp-commands.hx b/hmp-commands.hx index 0d780e6da30..7ae2468a3d9 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -752,13 +752,13 @@ ERST .name =3D "mouse_button", .args_type =3D "button_state:i", .params =3D "state", - .help =3D "change mouse button state (1=3DL, 2=3DM, 4=3DR)", + .help =3D "change mouse button state (1=3DL, 2=3DR, 4=3DM)", .cmd =3D hmp_mouse_button, }, =20 SRST ``mouse_button`` *val* - Change the active mouse button state *val* (1=3DL, 2=3DM, 4=3DR). + Change the active mouse button state *val* (1=3DL, 2=3DR, 4=3DM). ERST =20 { --=20 2.54.0 From nobody Tue Jun 9 23:08:21 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=1781015705; cv=none; d=zohomail.com; s=zohoarc; b=fgr19a88DA+yg4+sZQQYoQRvQWVPDd1Y2WQ4UwnnNn65vAE6NYGE3BoNq8bqqGRgX2gw//U0kY+mVpa5g43ewYQPiT/20ic3O2FLv6zW8rUIh0X+BOILfTncXr+LYas8PP0RvV2RChgSNDEvVHtGXGZSfPE5RATeC/LpUZ9J4zc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781015705; 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=2RgpOrSIaQ2GujtwJ46SCAP+lsYwP7kQWmaAHhskacc=; b=WpOqUjqOQkyU880LEGF/c7IlkbH3WXmRGfGT+8LdZFFySfTWEdl/ZShWtMFgOS1HfaUb5RRsiguUDZkJbWvjsj4UBtkit25e2INEUWatDM8B3G0D6VV3ZnMevGEoDEycwq91NtyJ8x7zVa9nk1G64RCIM+68qw/JYCMuM9YuWeg= 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 1781015705328159.57732028442626; Tue, 9 Jun 2026 07:35:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWxXf-0000xH-Pn; Tue, 09 Jun 2026 10:34:59 -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 1wWxXe-0000wn-1B for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:34:58 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wWxXc-0006gL-5H for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:34:57 -0400 Received: from mx-prod-mc-08.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-364-p0EqGKzePOeExApkm5JoKQ-1; Tue, 09 Jun 2026 10:34:53 -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-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 99890184EB40; Tue, 9 Jun 2026 14:34:52 +0000 (UTC) Received: from localhost (unknown [10.44.24.21]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 577E13008B39; Tue, 9 Jun 2026 14:34:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781015695; 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=2RgpOrSIaQ2GujtwJ46SCAP+lsYwP7kQWmaAHhskacc=; b=NQuXWhmrPqT5Z1p/8oHyeVbHaYtDY7zxbP938FmK58bcYf2k6ojluHRBpZQbMsJgEe8SVU +wHl4W1uxMyg/rh9sV72mY91b3k647COIQGHYBTw189bau/rv5hT5WVQWFqdGDclI6oz6R SwTHbObvROUpUvVWJ2Kbp0PBI39JeXQ= X-MC-Unique: p0EqGKzePOeExApkm5JoKQ-1 X-Mimecast-MFC-AGG-ID: p0EqGKzePOeExApkm5JoKQ_1781015693 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Tue, 09 Jun 2026 18:34:21 +0400 Subject: [PATCH 02/17] ui/hmp: move index_from_key() where it is used MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-ui-input-v1-2-42615deb818e@redhat.com> References: <20260609-ui-input-v1-0-42615deb818e@redhat.com> In-Reply-To: <20260609-ui-input-v1-0-42615deb818e@redhat.com> To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Paolo Bonzini , Richard Henderson , "Michael S. Tsirkin" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=2217; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=OeOwBzwyTq5PuLrEDwVvJdQKifbzG3kPTNXrjSBdoTE=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqKCR3vBtqyY8nmMAtLJwPb5uucUVOU0pjczg2m zcRg68C7PWJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCaigkdwAKCRDa6OEJdZac 5djVD/sF6X9+Z5pxMaShW8qwHFkvdDKdGpnuDDuU925AtZtVLlsQsrn/9nGtSflBPypIM3+OQ7Z QLMnO9yoGYzFHG5+G9wPX6959+pu4FCVXs9N1Q8Eo/uwBcuMooMUnu5ohIOZXed6RPXtnzVXFfx qXSskPCKlIIRlUTH9r3PpWpBFcgKc5VZNX++mr2Mj/NEDSftHbi3XbHEfZyJkmLp9gDYUiCPLiF SyLcochnP6xAbrYINeTtWHNUFjBGwUQGcT1mw+xcVApEtindXoVRkOj1ulINDMvXEG90/Z98sPJ DF0g3dqSuiFmAcv3sQAuD8ZYlPddTWOiPPf4jEtUYy+HEFi5qX1lpJ9TavlZ5/4nZd53NtrOTKa 61eriFVHlOTnIdkZYfptsewgTdASj0PbsrM2U+kgCop+yObPN4QPnivl8YuPQhXiNSlx0jH6jsg OSZdUA58dJcrCu1qH2DLH/xf0J1M7/J/30vs2v+WtfehAsro2DpizA9vYJ0jD5PTRF01GGs8F/p 5zE2UVysnjsg8vJeVo4ZQ1nXTcoYJ41M/B2lbZZ6M7UB+KUhO7VKASIKFaSS1Gnc7NgA3yyYD71 fsljS8fp0oXBsLQ6bZCzDvin8mPHwd9pnlZWy887qdRoYFLOTPBDKnlRqKxdTDCQk5rDDlzGPBO t/lYlAJ80YzISZA== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 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.133.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_H5=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: 1781015707431154100 Signed-off-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/ui/console.h | 3 --- ui/input-legacy.c | 15 --------------- ui/ui-hmp-cmds.c | 15 +++++++++++++++ 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/include/ui/console.h b/include/ui/console.h index a31c5a4995c..3cb78989cd2 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -450,9 +450,6 @@ bool vnc_display_reload_certs(const char *id, Error **= errp); bool vnc_display_update(DisplayUpdateOptionsVNC *arg, Error **errp); void vnc_cleanup(void); =20 -/* input.c */ -int index_from_key(const char *key, size_t key_length); - #ifdef CONFIG_LINUX /* udmabuf.c */ int udmabuf_fd(void); diff --git a/ui/input-legacy.c b/ui/input-legacy.c index 193c9ae2ef9..71b17a3cfc7 100644 --- a/ui/input-legacy.c +++ b/ui/input-legacy.c @@ -56,21 +56,6 @@ struct QEMUPutLEDEntry { static QTAILQ_HEAD(, QEMUPutLEDEntry) led_handlers =3D QTAILQ_HEAD_INITIALIZER(led_handlers); =20 -int index_from_key(const char *key, size_t key_length) -{ - int i; - - for (i =3D 0; i < Q_KEY_CODE__MAX; i++) { - if (!strncmp(key, QKeyCode_str(i), key_length) && - !QKeyCode_str(i)[key_length]) { - break; - } - } - - /* Return Q_KEY_CODE__MAX if the key is invalid */ - return i; -} - void qmp_send_key(KeyValueList *keys, bool has_hold_time, int64_t hold_tim= e, Error **errp) { diff --git a/ui/ui-hmp-cmds.c b/ui/ui-hmp-cmds.c index 1e9bc77bd80..76f5181de43 100644 --- a/ui/ui-hmp-cmds.c +++ b/ui/ui-hmp-cmds.c @@ -350,6 +350,21 @@ void hmp_change_vnc(Monitor *mon, const char *device, = const char *target, } #endif =20 +static int index_from_key(const char *key, size_t key_length) +{ + int i; + + for (i =3D 0; i < Q_KEY_CODE__MAX; i++) { + if (!strncmp(key, QKeyCode_str(i), key_length) && + !QKeyCode_str(i)[key_length]) { + break; + } + } + + /* Return Q_KEY_CODE__MAX if the key is invalid */ + return i; +} + void hmp_sendkey(Monitor *mon, const QDict *qdict) { const char *keys =3D qdict_get_str(qdict, "keys"); --=20 2.54.0 From nobody Tue Jun 9 23:08:21 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=1781015739; cv=none; d=zohomail.com; s=zohoarc; b=ZgU+nqtWyIkZzIOuE+2OELOd8oRBMvNGBWSyR7df0v4YQ9NlQ+WAHLBO96wws2MQSB7BY4WpmMgc2VWR0RVyRhJE9znGuXDSqMpGjtL5Mey0J96qWLgBnkwh8343FKbZWOeBQxiP+GD6TiLjz5tpiPna3cSGA06utrzJYuLyb9M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781015739; 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=iigtK5jQySpzmNZYscoufMj5Qgow6LaU8KkOX7BSx7I=; b=GDq45kFzEMjnrLkWsVgwyDSLBvJNmq+8eUdxZR+XDMOEiqIZvpP5BG5Ps7nJRE0CzuHKHhKA3ydmK8qbmWkY7hjMSjqjR3N+wH4xjGL5RY/R+OkNAksjAvJZKI+wPelNsMcknXW+tF+7J2sAsGvvmbH+No3BdpbM9yY9J6Z0WB8= 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 1781015739957220.97724378468843; Tue, 9 Jun 2026 07:35:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWxXo-00015J-Sq; Tue, 09 Jun 2026 10:35:09 -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 1wWxXn-000148-GF for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:07 -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 1wWxXk-0006s6-K0 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:07 -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-711-f0jT0PENMEiZJcukJSCTJg-1; Tue, 09 Jun 2026 10:34:59 -0400 Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95]) (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 6067F180130F; Tue, 9 Jun 2026 14:34:58 +0000 (UTC) Received: from localhost (unknown [10.44.24.21]) by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 5263436919; Tue, 9 Jun 2026 14:34:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781015703; 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=iigtK5jQySpzmNZYscoufMj5Qgow6LaU8KkOX7BSx7I=; b=YMA1Yc4JEFMhZ4c/129+KFuwCsKIYSepQIsVHQ7qRW9Fl2XCNQIIYq/TxEXSNWzeFWOIrD oznptH418hnr/qDXflQWsjPSUyC1Wzzdo2AQhPxX+W43jdLMG7yTLsY+QdfA2uel8vX55C clHb2GTcMOvwaifcyhCwxYvG7f4RjyU= X-MC-Unique: f0jT0PENMEiZJcukJSCTJg-1 X-Mimecast-MFC-AGG-ID: f0jT0PENMEiZJcukJSCTJg_1781015698 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Tue, 09 Jun 2026 18:34:22 +0400 Subject: [PATCH 03/17] hw/i386/vmmouse: convert to QemuInputHandler API MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-ui-input-v1-3-42615deb818e@redhat.com> References: <20260609-ui-input-v1-0-42615deb818e@redhat.com> In-Reply-To: <20260609-ui-input-v1-0-42615deb818e@redhat.com> To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Paolo Bonzini , Richard Henderson , "Michael S. Tsirkin" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=6661; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=ok6DMbp8gZxQxXT21UM+2t0aNckeLotDFTlxwjH+kCQ=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqKCR3wsgrCWkrYjvW4uZu2su94QsgR+0dOVSNO dSkDsbE06CJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCaigkdwAKCRDa6OEJdZac 5dP+EACgkw2KTgUu79YcMBECaZSLN6ilvKP/YruCXZ0Ki/60iRi4K6atmhJK5Blc1I7wh2RfCVC Ty4XJJCTL/dgk/OPlPeORnsGorDqHg7urcbGbiYXRYZc8xroEKIwaH8Tig6dQ+QEZCJsk54v/A3 ZNuAX//LHejRZ9f+aFvweuzwpS4CmnC1yCASTZhQFQ3lU2xxhs7NnuyZJx89kdTRP8ATb0Qae7d /x5uswq6yio5MHSP6Zo6/KQIgJ+cXnVFDQKYKXtrSiIaKJm/PhzJoYW2jIV9o6L4afv5cKMTmiG X5pcaRSoBUOZwTd96Du5KIb9Bf7QH9hsvLOZM7DYiVkuHWCUOO2Ru3yLFjUQb9TN2MumbsRJRod 2y00nHtBczXWBynK9jwzQmz2sUI8lxwyGotw6E3I3XvCcrlNKLSLv6TTipZYx7/H/JHF4wg4JDM N9kONM+k/McHC3g6olXCpbL3BFlNQf7QpVz1lDdSeemNQJ8KaVCi0+A3iIGhn+yQMBPv1rky+VI /V9iy0eDE8Rq4QEQwWsZz7tgWja3u+zlghc01BBoCExMc+y1HXNtP6d/g12mQxh7+9xNeAbo4f/ cmkHlrMUL2B0lFY+B0mwIV50uQSh+YccR1MEQIck8i6wR5mbhrs+BQsfcCn3HbIZQSLxuRf7rH4 I8oKfoDEZXjXgtg== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95 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_H3=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: 1781015740971158500 Replace the legacy QEMUPutMouseEvent callback with a proper QemuInputHandler registration. This eliminates one of the two remaining users of the legacy input adapter in ui/input-legacy.c. Signed-off-by: Marc-Andr=C3=A9 Lureau --- hw/i386/vmmouse.c | 115 +++++++++++++++++++++++++++++++++++++----------= ---- hw/i386/trace-events | 2 +- 2 files changed, 85 insertions(+), 32 deletions(-) diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c index d54adb34a88..e289bce8e2e 100644 --- a/hw/i386/vmmouse.c +++ b/hw/i386/vmmouse.c @@ -68,7 +68,10 @@ struct VMMouseState { uint16_t nb_queue; uint16_t status; uint8_t absolute; - QEMUPutMouseEntry *entry; + QemuInputHandlerState *hs; + int axis[INPUT_AXIS__MAX]; + int dz; + bool btns[INPUT_BUTTON__MAX]; ISAKBDState *i8042; }; =20 @@ -99,39 +102,78 @@ static uint32_t vmmouse_get_status(VMMouseState *s) return (s->status << 16) | s->nb_queue; } =20 -static void vmmouse_mouse_event(void *opaque, int x, int y, int dz, int bu= ttons_state) +static void vmmouse_input_event(DeviceState *dev, QemuConsole *src, + QemuInputEvent *evt) { - VMMouseState *s =3D opaque; + VMMouseState *s =3D VMMOUSE(dev); + + switch (evt->type) { + case INPUT_EVENT_KIND_BTN: + if (evt->btn.down) { + if (evt->btn.button =3D=3D INPUT_BUTTON_WHEEL_UP) { + s->dz--; + } else if (evt->btn.button =3D=3D INPUT_BUTTON_WHEEL_DOWN) { + s->dz++; + } + } + s->btns[evt->btn.button] =3D evt->btn.down; + break; + case INPUT_EVENT_KIND_ABS: + if (evt->abs.axis =3D=3D INPUT_AXIS_X) { + s->axis[INPUT_AXIS_X] =3D + qemu_input_scale_axis(evt->abs.value, + INPUT_EVENT_ABS_MIN, INPUT_EVENT_ABS= _MAX, + VMMOUSE_MIN_X, VMMOUSE_MAX_X); + } else if (evt->abs.axis =3D=3D INPUT_AXIS_Y) { + s->axis[INPUT_AXIS_Y] =3D + qemu_input_scale_axis(evt->abs.value, + INPUT_EVENT_ABS_MIN, INPUT_EVENT_ABS= _MAX, + VMMOUSE_MIN_Y, VMMOUSE_MAX_Y); + } + break; + case INPUT_EVENT_KIND_REL: + s->axis[evt->rel.axis] +=3D evt->rel.value; + break; + default: + break; + } +} + +static void vmmouse_input_sync(DeviceState *dev) +{ + VMMouseState *s =3D VMMOUSE(dev); int buttons =3D 0; =20 - if (s->nb_queue > (VMMOUSE_QUEUE_SIZE - 4)) + if (s->nb_queue > (VMMOUSE_QUEUE_SIZE - 4)) { return; + } =20 - trace_vmmouse_mouse_event(x, y, dz, buttons_state); - - if ((buttons_state & MOUSE_EVENT_LBUTTON)) + if (s->btns[INPUT_BUTTON_LEFT]) { buttons |=3D VMMOUSE_LEFT_BUTTON; - if ((buttons_state & MOUSE_EVENT_RBUTTON)) + } + if (s->btns[INPUT_BUTTON_RIGHT]) { buttons |=3D VMMOUSE_RIGHT_BUTTON; - if ((buttons_state & MOUSE_EVENT_MBUTTON)) + } + if (s->btns[INPUT_BUTTON_MIDDLE]) { buttons |=3D VMMOUSE_MIDDLE_BUTTON; - - if (s->absolute) { - x =3D qemu_input_scale_axis(x, - INPUT_EVENT_ABS_MIN, INPUT_EVENT_ABS_MAX, - VMMOUSE_MIN_X, VMMOUSE_MAX_X); - y =3D qemu_input_scale_axis(y, - INPUT_EVENT_ABS_MIN, INPUT_EVENT_ABS_MAX, - VMMOUSE_MIN_Y, VMMOUSE_MAX_Y); - } else{ - /* add for guest vmmouse driver to judge this is a relative packet= . */ + } + if (!s->absolute) { buttons |=3D VMMOUSE_RELATIVE_PACKET; } =20 + trace_vmmouse_queue_event(s->axis[INPUT_AXIS_X], s->axis[INPUT_AXIS_Y], + s->dz, buttons); + s->queue[s->nb_queue++] =3D buttons; - s->queue[s->nb_queue++] =3D x; - s->queue[s->nb_queue++] =3D y; - s->queue[s->nb_queue++] =3D dz; + s->queue[s->nb_queue++] =3D s->axis[INPUT_AXIS_X]; + s->queue[s->nb_queue++] =3D s->axis[INPUT_AXIS_Y]; + s->queue[s->nb_queue++] =3D s->dz; + s->dz =3D 0; + + if (!s->absolute) { + s->axis[INPUT_AXIS_X] =3D 0; + s->axis[INPUT_AXIS_Y] =3D 0; + } =20 /* need to still generate PS2 events to notify driver to read from queue */ @@ -140,14 +182,25 @@ static void vmmouse_mouse_event(void *opaque, int x, = int y, int dz, int buttons_ =20 static void vmmouse_remove_handler(VMMouseState *s) { - if (s->entry) { - qemu_remove_mouse_event_handler(s->entry); - s->entry =3D NULL; - } + g_clear_pointer(&s->hs, qemu_input_handler_unregister); } =20 static void vmmouse_update_handler(VMMouseState *s, int absolute) { + static const QemuInputHandler vmmouse_abs_handler =3D { + .name =3D "vmmouse", + .mask =3D INPUT_EVENT_MASK_BTN | INPUT_EVENT_MASK_ABS, + .event =3D vmmouse_input_event, + .sync =3D vmmouse_input_sync, + }; + + static const QemuInputHandler vmmouse_rel_handler =3D { + .name =3D "vmmouse", + .mask =3D INPUT_EVENT_MASK_BTN | INPUT_EVENT_MASK_REL, + .event =3D vmmouse_input_event, + .sync =3D vmmouse_input_sync, + }; + if (s->status !=3D 0) { return; } @@ -155,11 +208,11 @@ static void vmmouse_update_handler(VMMouseState *s, i= nt absolute) s->absolute =3D absolute; vmmouse_remove_handler(s); } - if (s->entry =3D=3D NULL) { - s->entry =3D qemu_add_mouse_event_handler(vmmouse_mouse_event, - s, s->absolute, - "vmmouse"); - qemu_activate_mouse_event_handler(s->entry); + if (s->hs =3D=3D NULL) { + const QemuInputHandler *h =3D s->absolute ? + &vmmouse_abs_handler : &vmmouse_rel_handler; + s->hs =3D qemu_input_handler_register(DEVICE(s), h); + qemu_input_handler_activate(s->hs); } } =20 diff --git a/hw/i386/trace-events b/hw/i386/trace-events index 5fa5e93b68d..1920212332a 100644 --- a/hw/i386/trace-events +++ b/hw/i386/trace-events @@ -133,7 +133,7 @@ port92_write(uint8_t val) "port92: write 0x%02x" =20 # vmmouse.c vmmouse_get_status(void) "" -vmmouse_mouse_event(int x, int y, int dz, int buttons_state) "event: x=3D%= d y=3D%d dz=3D%d state=3D%d" +vmmouse_queue_event(int x, int y, int dz, int buttons_state) "event: x=3D%= d y=3D%d dz=3D%d state=3D%d" vmmouse_init(void) "" vmmouse_read_id(void) "" vmmouse_request_relative(void) "" --=20 2.54.0 From nobody Tue Jun 9 23:08:21 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=1781015755; cv=none; d=zohomail.com; s=zohoarc; b=e3vhprJWGkOOQiP81QczvjukHLOqA61BULVPVM+U8UpG8D816bRKX+FRlEmuv43DOS0/uM8Y3UKe0gHAfmeuzigTauGOG7KW6ll7AVQmlXbrShYucf0x802P4xoCu+ZZmxkl2LcDAGP61e0bk3/V1Eo978XCLksW0LdIQtZjKRc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781015755; 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=FAwULspIvzALTW+4Bmpz5id6tDC+ZD0VsNa3K0DQrco=; b=Yntx4qIRCsDkt/l6tMGwrEJRjSWdfi+ON31GpyGtqkaxOuwtY/12hTewUx7Zb3dWU3dk5BUGzXH0QhazvwCKBUEBZRjX7k19Qmj8w2cFXPnCGO8vclbuZ12iofJ5eGvbVhDIDpjWf48IeuawuremLycufLY7TdPND8rzkd0pVBs= 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 1781015755010462.22370035032; Tue, 9 Jun 2026 07:35:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWxXs-0001Cg-Ds; Tue, 09 Jun 2026 10:35:12 -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 1wWxXo-00014y-CB for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35: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 1wWxXm-0006sh-IR for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:08 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-549-jod4WBAvPsKR8qr2klDvlw-1; Tue, 09 Jun 2026 10:35:04 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 633A71955F17; Tue, 9 Jun 2026 14:35:03 +0000 (UTC) Received: from localhost (unknown [10.44.24.21]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 1A77519560AB; Tue, 9 Jun 2026 14:35:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781015705; 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=FAwULspIvzALTW+4Bmpz5id6tDC+ZD0VsNa3K0DQrco=; b=W2hJ1aYBvUo0HgPJ41tlSfJ7dAJ4JlintacnoTitb2sjY+0MGd+UzgQujhCxN/YzFo8H7z +x+qCft9uYQxoGOEp0/Mxbd10svG9065C+UI/+iTzBnBXF6D7ONIsmSL5xu1rMH0nBLxF0 4tXiDSbLETxDp+j/BirnLBFPv3cEw9A= X-MC-Unique: jod4WBAvPsKR8qr2klDvlw-1 X-Mimecast-MFC-AGG-ID: jod4WBAvPsKR8qr2klDvlw_1781015703 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Tue, 09 Jun 2026 18:34:23 +0400 Subject: [PATCH 04/17] hw/usb/dev-wacom: convert to modern QemuInputHandler API MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-ui-input-v1-4-42615deb818e@redhat.com> References: <20260609-ui-input-v1-0-42615deb818e@redhat.com> In-Reply-To: <20260609-ui-input-v1-0-42615deb818e@redhat.com> To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Paolo Bonzini , Richard Henderson , "Michael S. Tsirkin" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=7904; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=1v9X3RjtBH40kWO7TrlJJLMEL1/840D/jNHs/b0Kp3k=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqKCR3/HpnL9imUicj9EXx8R0wcySj+GYN2aVuM y6fWMuElv2JAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCaigkdwAKCRDa6OEJdZac 5d9dEACWt48QMVd32YZdm2WYSaw/eVYGk+AB+DdXmYEGWM4AljnpqaKGRQA53dA9JNzqs/tcR58 pkztf2iBJ1z65N/BBGiHCga8Q8I04634uUmeJXbQAQebblZ1QM4AvqIhied9z09a22gne7BtlpE LYp8jGyoc4ij6dFpaeMcMCbUONZT70Ow1IvChnMitjzWvn4EH44m/lltFvcjqgqOe8khkX23/LF xj/RHUppyDLMtSbYdRwQHCJlPATjHZwOmCLvMOZlvE9P0pjUiZT6hauq0+zEZFNEe1Y6EUPbCxD PJfuADtpjkBNAY5kK82lDuCOZyRK7VHqzQltSoWijB1mS7yEthqv53krU9C5ZuqegOn3X0fnObx R5zdXNVLbk6Nx2MDjUVbHJWShhLdYmLyHKMg8rnTJsakTNC6fIPQS2PzT9m2slbmSR94syDn2FY bqNmtYrjVakXhRiUmweUmxTqZj5hP/QmLxQmUrj8CppRiDC4gt/E2PPYhSd3NKdG1yhkQNPyesx 1BZAZRDphm2ls9JSKgK3AjFOoLepGzBNxiOGJ51SreoIzyhcv4TYAYrIlf1KXlztRYwCudkMERM eNuYQUW1/R6RZnCyJwOOGuqjlzDDhjld5UhS6kfVhcwQB/bXR02ErLOU1l7v2ve27qt522AHeRK aG0FzVLCPmnQH3A== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 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: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 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_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1781015757005158500 Replace the legacy QEMUPutMouseEvent callbacks with a proper QemuInputHandler registration. The device now receives typed input events (BTN/ABS/REL) directly. Signed-off-by: Marc-Andr=C3=A9 Lureau --- hw/usb/dev-wacom.c | 155 ++++++++++++++++++++++++++++++++-----------------= ---- 1 file changed, 94 insertions(+), 61 deletions(-) diff --git a/hw/usb/dev-wacom.c b/hw/usb/dev-wacom.c index 14d07e81281..c69e247f7b7 100644 --- a/hw/usb/dev-wacom.c +++ b/hw/usb/dev-wacom.c @@ -42,10 +42,10 @@ struct USBWacomState { USBDevice dev; USBEndpoint *intr; - QEMUPutMouseEntry *eh_entry; - int dx, dy, dz, buttons_state; - int x, y; - int mouse_grabbed; + QemuInputHandlerState *hs; + int axis[INPUT_AXIS__MAX]; + int dz; + bool btns[INPUT_BUTTON__MAX]; enum { WACOM_MODE_HID =3D 1, WACOM_MODE_WACOM =3D 2, @@ -188,29 +188,37 @@ static const USBDesc desc_wacom =3D { .str =3D desc_strings, }; =20 -static void usb_mouse_event(void *opaque, - int dx1, int dy1, int dz1, int buttons_state) +static void usb_wacom_input_event(DeviceState *dev, QemuConsole *src, + QemuInputEvent *evt) { - USBWacomState *s =3D opaque; + USBWacomState *s =3D USB_WACOM(dev); =20 - s->dx +=3D dx1; - s->dy +=3D dy1; - s->dz +=3D dz1; - s->buttons_state =3D buttons_state; - s->changed =3D 1; - usb_wakeup(s->intr, 0); + switch (evt->type) { + case INPUT_EVENT_KIND_BTN: + if (evt->btn.down) { + if (evt->btn.button =3D=3D INPUT_BUTTON_WHEEL_UP) { + s->dz--; + } else if (evt->btn.button =3D=3D INPUT_BUTTON_WHEEL_DOWN) { + s->dz++; + } + } + s->btns[evt->btn.button] =3D evt->btn.down; + break; + case INPUT_EVENT_KIND_ABS: + s->axis[evt->abs.axis] =3D evt->abs.value; + break; + case INPUT_EVENT_KIND_REL: + s->axis[evt->rel.axis] +=3D evt->rel.value; + break; + default: + break; + } } =20 -static void usb_wacom_event(void *opaque, - int x, int y, int dz, int buttons_state) +static void usb_wacom_input_sync(DeviceState *dev) { - USBWacomState *s =3D opaque; + USBWacomState *s =3D USB_WACOM(dev); =20 - /* scale to Penpartner resolution */ - s->x =3D (x * 5040 / 0x7FFF); - s->y =3D (y * 3780 / 0x7FFF); - s->dz +=3D dz; - s->buttons_state =3D buttons_state; s->changed =3D 1; usb_wakeup(s->intr, 0); } @@ -225,32 +233,57 @@ static inline int int_clamp(int val, int vmin, int vm= ax) return val; } =20 +static void usb_wacom_register_input_handler(USBWacomState *s, bool absolu= te) +{ + static const QemuInputHandler usb_wacom_abs_handler =3D { + .name =3D "QEMU PenPartner tablet", + .mask =3D INPUT_EVENT_MASK_BTN | INPUT_EVENT_MASK_ABS, + .event =3D usb_wacom_input_event, + .sync =3D usb_wacom_input_sync, + }; + + static const QemuInputHandler usb_wacom_rel_handler =3D { + .name =3D "QEMU PenPartner tablet", + .mask =3D INPUT_EVENT_MASK_BTN | INPUT_EVENT_MASK_REL, + .event =3D usb_wacom_input_event, + .sync =3D usb_wacom_input_sync, + }; + + const QemuInputHandler *h =3D absolute ? + &usb_wacom_abs_handler : &usb_wacom_rel_handler; + + g_clear_pointer(&s->hs, qemu_input_handler_unregister); + + s->hs =3D qemu_input_handler_register(DEVICE(s), h); + qemu_input_handler_activate(s->hs); +} + static int usb_mouse_poll(USBWacomState *s, uint8_t *buf, int len) { int dx, dy, dz, b, l; =20 - if (!s->mouse_grabbed) { - s->eh_entry =3D qemu_add_mouse_event_handler(usb_mouse_event, s, 0, - "QEMU PenPartner tablet"); - qemu_activate_mouse_event_handler(s->eh_entry); - s->mouse_grabbed =3D 1; + if (!s->hs) { + usb_wacom_register_input_handler(s, false); } =20 - dx =3D int_clamp(s->dx, -128, 127); - dy =3D int_clamp(s->dy, -128, 127); + dx =3D int_clamp(s->axis[INPUT_AXIS_X], -128, 127); + dy =3D int_clamp(s->axis[INPUT_AXIS_Y], -128, 127); dz =3D int_clamp(s->dz, -128, 127); =20 - s->dx -=3D dx; - s->dy -=3D dy; + s->axis[INPUT_AXIS_X] -=3D dx; + s->axis[INPUT_AXIS_Y] -=3D dy; s->dz -=3D dz; =20 b =3D 0; - if (s->buttons_state & MOUSE_EVENT_LBUTTON) + if (s->btns[INPUT_BUTTON_LEFT]) { b |=3D 0x01; - if (s->buttons_state & MOUSE_EVENT_RBUTTON) + } + if (s->btns[INPUT_BUTTON_RIGHT]) { b |=3D 0x02; - if (s->buttons_state & MOUSE_EVENT_MBUTTON) + } + if (s->btns[INPUT_BUTTON_MIDDLE]) { b |=3D 0x04; + } =20 buf[0] =3D b; buf[1] =3D dx; @@ -265,32 +298,40 @@ static int usb_mouse_poll(USBWacomState *s, uint8_t *= buf, int len) =20 static int usb_wacom_poll(USBWacomState *s, uint8_t *buf, int len) { - int b; + int b, x, y; =20 - if (!s->mouse_grabbed) { - s->eh_entry =3D qemu_add_mouse_event_handler(usb_wacom_event, s, 1, - "QEMU PenPartner tablet"); - qemu_activate_mouse_event_handler(s->eh_entry); - s->mouse_grabbed =3D 1; + if (!s->hs) { + usb_wacom_register_input_handler(s, true); } =20 b =3D 0; - if (s->buttons_state & MOUSE_EVENT_LBUTTON) + if (s->btns[INPUT_BUTTON_LEFT]) { b |=3D 0x01; - if (s->buttons_state & MOUSE_EVENT_RBUTTON) + } + if (s->btns[INPUT_BUTTON_RIGHT]) { b |=3D 0x40; - if (s->buttons_state & MOUSE_EVENT_MBUTTON) + } + if (s->btns[INPUT_BUTTON_MIDDLE]) { b |=3D 0x20; /* eraser */ + } =20 - if (len < 7) + if (len < 7) { return 0; + } + + x =3D qemu_input_scale_axis(s->axis[INPUT_AXIS_X], + INPUT_EVENT_ABS_MIN, INPUT_EVENT_ABS_MAX, + 0, 5040); + y =3D qemu_input_scale_axis(s->axis[INPUT_AXIS_Y], + INPUT_EVENT_ABS_MIN, INPUT_EVENT_ABS_MAX, + 0, 3780); =20 buf[0] =3D s->mode; buf[5] =3D 0x00 | (b & 0xf0); - buf[1] =3D s->x & 0xff; - buf[2] =3D s->x >> 8; - buf[3] =3D s->y & 0xff; - buf[4] =3D s->y >> 8; + buf[1] =3D x & 0xff; + buf[2] =3D x >> 8; + buf[3] =3D y & 0xff; + buf[4] =3D y >> 8; if (b & 0x3f) { buf[6] =3D 0; } else { @@ -302,15 +343,13 @@ static int usb_wacom_poll(USBWacomState *s, uint8_t *= buf, int len) =20 static void usb_wacom_handle_reset(USBDevice *dev) { - USBWacomState *s =3D (USBWacomState *) dev; + USBWacomState *s =3D USB_WACOM(dev); =20 - s->dx =3D 0; - s->dy =3D 0; + memset(s->axis, 0, sizeof(s->axis)); + memset(s->btns, 0, sizeof(s->btns)); s->dz =3D 0; - s->x =3D 0; - s->y =3D 0; - s->buttons_state =3D 0; s->mode =3D WACOM_MODE_HID; + g_clear_pointer(&s->hs, qemu_input_handler_unregister); } =20 static void usb_wacom_handle_control(USBDevice *dev, USBPacket *p, @@ -337,10 +376,7 @@ static void usb_wacom_handle_control(USBDevice *dev, U= SBPacket *p, } break; case WACOM_SET_REPORT: - if (s->mouse_grabbed) { - qemu_remove_mouse_event_handler(s->eh_entry); - s->mouse_grabbed =3D 0; - } + g_clear_pointer(&s->hs, qemu_input_handler_unregister); s->mode =3D data[0]; break; case WACOM_GET_REPORT: @@ -400,10 +436,7 @@ static void usb_wacom_unrealize(USBDevice *dev) { USBWacomState *s =3D (USBWacomState *) dev; =20 - if (s->mouse_grabbed) { - qemu_remove_mouse_event_handler(s->eh_entry); - s->mouse_grabbed =3D 0; - } + g_clear_pointer(&s->hs, qemu_input_handler_unregister); } =20 static void usb_wacom_realize(USBDevice *dev, Error **errp) --=20 2.54.0 From nobody Tue Jun 9 23:08:21 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=1781015757; cv=none; d=zohomail.com; s=zohoarc; b=XwdNmJEtyUleGQZVKlbSf4w/RwUOitmlPtZzxjf72KaVMAfYV5kGlGxmNQMunJEVecaCHaMjFHH3GrT1z4xFM5w3RXMyOuoFheBKj9xqlcGnn/KU0q1CzaiMGdHQt6MyndNH0hxf80ygKyBKwjuC2qKECRW9gaXmQiZQjyxUlLc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781015757; 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=Q0bIPb+d1sMe7sgxf+Bqbmw46O11A0ktQSbb40y4zvo=; b=VJC9aiDyOK9mpROASkn8OICaICHx2LMjHoExK4cHa5fS9Whb40l2iDHwaIwOqOrsDHWfZbTTjaV6jDrgn4gSSpeARyhIuwbh8MHBZw8zaEmQd7VXl8w2MyuKsgwOeLPl+gyia6JrWOV2Y8/mbbUuIDZMrGykwVTqPqJrI8+fpdE= 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 1781015757806397.9983665360079; Tue, 9 Jun 2026 07:35:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWxXz-0001Mo-FI; Tue, 09 Jun 2026 10:35:19 -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 1wWxXx-0001Ip-Ns for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:17 -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 1wWxXv-0006uu-HI for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:17 -0400 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-169-KLgyW5jrPkqavxSmfACb9g-1; Tue, 09 Jun 2026 10:35:10 -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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 29B3C1944D23; Tue, 9 Jun 2026 14:35:09 +0000 (UTC) Received: from localhost (unknown [10.44.24.21]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 32D293008B3C; Tue, 9 Jun 2026 14:35:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781015713; 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=Q0bIPb+d1sMe7sgxf+Bqbmw46O11A0ktQSbb40y4zvo=; b=X99C4XLrwfKnP0PbVbIIeKgIYikXXC+5+mPV/XdP0UsdVD/wt2fIa1UtHYoOiUq183OV7c WUL+qVn3Otg9ivLQ1P7PwaWH+PeDMzqqrwIkxxlnaI8hPAqQxzbWbYjMwLhlNh+XeHIkL/ x6C2nfPnmfHptHT5h/d1CGugPuN6M2g= X-MC-Unique: KLgyW5jrPkqavxSmfACb9g-1 X-Mimecast-MFC-AGG-ID: KLgyW5jrPkqavxSmfACb9g_1781015709 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Tue, 09 Jun 2026 18:34:24 +0400 Subject: [PATCH 05/17] ui: move LED and key utilities to input.c, delete input-legacy.c MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-ui-input-v1-5-42615deb818e@redhat.com> References: <20260609-ui-input-v1-0-42615deb818e@redhat.com> In-Reply-To: <20260609-ui-input-v1-0-42615deb818e@redhat.com> To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Paolo Bonzini , Richard Henderson , "Michael S. Tsirkin" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=13254; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=xnZ7Kddj51Zq6hMB1+4tdJkJJhRwpIbKu48YMi1H+h0=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqKCR3YU0YUMZ7A4reHJitgoZf1xOy8Ezj5Uycb WLpF01SMLOJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCaigkdwAKCRDa6OEJdZac 5RcgEACBqEtreYRg3mx7T8uOKs/+DJMpRLroTKDi3vIo673XBv9qYor/IbRb7HK/dvVJnbrrpy9 Q+7ayjJbNnItFiOg6VJDya0S75vyMSMtCzVfZog3LE6A5nqemCil/7HX2WOIEUtQ3kjkrKnGHhy 06tgWTiPKVzpV1eRdsIfLb1cwn8L9SkrVZvHbOS31+ksin0x4VGmVeW0ZF0ER/7s8hdrAAz3Up4 Nobrf3Mq3h8/I7j3kf+caihqsRLCwxoM4pLAY8LbL3Tc78lsUwYGwg1QbEgHiPJBp++KkAK9Xdh KtrqGR3JYK6NOlSA8wugcCp4Yg7MCX1pY97NSg5JFfbgoVxqbnGBeY1PWbBI17rWu7TnBlNoSG7 j0D/os5IXXYHl8urNnb3JsKi30ySlXw+IgcV7uc2Lyfvxue9uMAdrNGMdlBPFMZBXP9S08+h8Vx Gng8csn9+ck6FId3pgYUAlOGrk3q+OKcayXqsgOtg/fZxQhFTO87FreylBpe/yTHgEaA4t1BIqR i/hks7fJNZS6ik2G32Evb6X5I4vb0mfvN/bDBgXUGK/cFR6zmw3+2WK84ZbiFsLYwU0urbQZUK8 iZFUKsw+km9zZ+sqSKbhaqkWxMVmJf7X3bwCHtR6TMAKS01W2VMswahZvrT02RnnwyaN27ROqf8 Q3S+pkN7dig2BtA== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 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: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 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_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1781015759089158500 With both legacy mouse API consumers converted, the remaining code in input-legacy.c (LED broadcast, index_from_key, qmp_send_key) is not legacy-specific. Move it to ui/input.c and delete the file. Clean up include/ui/console.h by removing the now-unused legacy mouse API declarations (QEMUPutMouseEvent, QEMUPutMouseEntry, QEMUPutKBDEvent, QEMUPutKbdEntry) and MOUSE_EVENT_* constants. Signed-off-by: Marc-Andr=C3=A9 Lureau --- include/ui/console.h | 18 ----- ui/input-legacy.c | 221 -----------------------------------------------= ---- ui/input.c | 66 +++++++++++++++ ui/ui-hmp-cmds.c | 7 +- ui/meson.build | 1 - 5 files changed, 70 insertions(+), 243 deletions(-) diff --git a/include/ui/console.h b/include/ui/console.h index 3cb78989cd2..0299ed4b566 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -30,14 +30,6 @@ OBJECT_DECLARE_SIMPLE_TYPE(QemuFixedTextConsole, QEMU_FI= XED_TEXT_CONSOLE) #define QEMU_IS_FIXED_TEXT_CONSOLE(c) \ object_dynamic_cast(OBJECT(c), TYPE_QEMU_FIXED_TEXT_CONSOLE) =20 -/* keyboard/mouse support */ - -#define MOUSE_EVENT_LBUTTON 0x01 -#define MOUSE_EVENT_RBUTTON 0x02 -#define MOUSE_EVENT_MBUTTON 0x04 -#define MOUSE_EVENT_WHEELUP 0x08 -#define MOUSE_EVENT_WHEELDN 0x10 - /* identical to the ps/2 keyboard bits */ #define QEMU_SCROLL_LOCK_LED (1 << 0) #define QEMU_NUM_LOCK_LED (1 << 1) @@ -62,20 +54,10 @@ enum qemu_color_names { #define ATTR2CHTYPE(c, fg, bg, bold) \ ((bold) << 21 | (bg) << 11 | (fg) << 8 | (c)) =20 -typedef void QEMUPutKBDEvent(void *opaque, int keycode); typedef void QEMUPutLEDEvent(void *opaque, int ledstate); -typedef void QEMUPutMouseEvent(void *opaque, int dx, int dy, int dz, int b= uttons_state); =20 -typedef struct QEMUPutMouseEntry QEMUPutMouseEntry; -typedef struct QEMUPutKbdEntry QEMUPutKbdEntry; typedef struct QEMUPutLEDEntry QEMUPutLEDEntry; =20 -QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func, - void *opaque, int absolute, - const char *name); -void qemu_remove_mouse_event_handler(QEMUPutMouseEntry *entry); -void qemu_activate_mouse_event_handler(QEMUPutMouseEntry *entry); - QEMUPutLEDEntry *qemu_add_led_event_handler(QEMUPutLEDEvent *func, void *o= paque); void qemu_remove_led_event_handler(QEMUPutLEDEntry *entry); =20 diff --git a/ui/input-legacy.c b/ui/input-legacy.c deleted file mode 100644 index 71b17a3cfc7..00000000000 --- a/ui/input-legacy.c +++ /dev/null @@ -1,221 +0,0 @@ -/* - * QEMU System Emulator - * - * Copyright (c) 2003-2008 Fabrice Bellard - * - * Permission is hereby granted, free of charge, to any person obtaining a= copy - * of this software and associated documentation files (the "Software"), t= o deal - * in the Software without restriction, including without limitation the r= ights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included= in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN - * THE SOFTWARE. - */ - -#include "qemu/osdep.h" -#include "qemu/log.h" -#include "qapi/qapi-commands-ui.h" -#include "ui/console.h" -#include "keymaps.h" -#include "ui/input.h" - -struct QEMUPutMouseEntry { - QEMUPutMouseEvent *qemu_put_mouse_event; - void *qemu_put_mouse_event_opaque; - int qemu_put_mouse_event_absolute; - - /* new input core */ - QemuInputHandler h; - QemuInputHandlerState *s; - int axis[INPUT_AXIS__MAX]; - int buttons; -}; - -struct QEMUPutKbdEntry { - QEMUPutKBDEvent *put_kbd; - void *opaque; - QemuInputHandlerState *s; -}; - -struct QEMUPutLEDEntry { - QEMUPutLEDEvent *put_led; - void *opaque; - QTAILQ_ENTRY(QEMUPutLEDEntry) next; -}; - -static QTAILQ_HEAD(, QEMUPutLEDEntry) led_handlers =3D - QTAILQ_HEAD_INITIALIZER(led_handlers); - -void qmp_send_key(KeyValueList *keys, bool has_hold_time, int64_t hold_tim= e, - Error **errp) -{ - KeyValueList *p; - unsigned int *up =3D NULL; - int count =3D 0; - - if (!has_hold_time) { - hold_time =3D 0; /* use default */ - } - - for (p =3D keys; p !=3D NULL; p =3D p->next) { - up =3D g_realloc(up, sizeof(*up) * (count+1)); - up[count] =3D qemu_input_key_value_to_linux(p->value); - qemu_input_event_send_key_linux(NULL, up[count], true); - qemu_input_event_send_key_delay(hold_time); - count++; - } - while (count) { - count--; - qemu_input_event_send_key_linux(NULL, up[count], false); - qemu_input_event_send_key_delay(hold_time); - } - g_free(up); -} - -static void legacy_mouse_event(DeviceState *dev, QemuConsole *src, - QemuInputEvent *evt) -{ - static const int bmap[INPUT_BUTTON__MAX] =3D { - [INPUT_BUTTON_LEFT] =3D MOUSE_EVENT_LBUTTON, - [INPUT_BUTTON_MIDDLE] =3D MOUSE_EVENT_MBUTTON, - [INPUT_BUTTON_RIGHT] =3D MOUSE_EVENT_RBUTTON, - }; - QEMUPutMouseEntry *s =3D (QEMUPutMouseEntry *)dev; - - switch (evt->type) { - case INPUT_EVENT_KIND_BTN: - if (evt->btn.down) { - s->buttons |=3D bmap[evt->btn.button]; - } else { - s->buttons &=3D ~bmap[evt->btn.button]; - } - if (evt->btn.down && evt->btn.button =3D=3D INPUT_BUTTON_WHEEL_UP)= { - s->qemu_put_mouse_event(s->qemu_put_mouse_event_opaque, - s->axis[INPUT_AXIS_X], - s->axis[INPUT_AXIS_Y], - -1, - s->buttons); - } - if (evt->btn.down && evt->btn.button =3D=3D INPUT_BUTTON_WHEEL_DOW= N) { - s->qemu_put_mouse_event(s->qemu_put_mouse_event_opaque, - s->axis[INPUT_AXIS_X], - s->axis[INPUT_AXIS_Y], - 1, - s->buttons); - } - if (evt->btn.down && evt->btn.button =3D=3D INPUT_BUTTON_WHEEL_RIG= HT) { - s->qemu_put_mouse_event(s->qemu_put_mouse_event_opaque, - s->axis[INPUT_AXIS_X], - s->axis[INPUT_AXIS_Y], - -2, - s->buttons); - } - if (evt->btn.down && evt->btn.button =3D=3D INPUT_BUTTON_WHEEL_LEF= T) { - s->qemu_put_mouse_event(s->qemu_put_mouse_event_opaque, - s->axis[INPUT_AXIS_X], - s->axis[INPUT_AXIS_Y], - 2, - s->buttons); - } - break; - case INPUT_EVENT_KIND_ABS: - s->axis[evt->abs.axis] =3D evt->abs.value; - break; - case INPUT_EVENT_KIND_REL: - s->axis[evt->rel.axis] +=3D evt->rel.value; - break; - default: - break; - } -} - -static void legacy_mouse_sync(DeviceState *dev) -{ - QEMUPutMouseEntry *s =3D (QEMUPutMouseEntry *)dev; - - s->qemu_put_mouse_event(s->qemu_put_mouse_event_opaque, - s->axis[INPUT_AXIS_X], - s->axis[INPUT_AXIS_Y], - 0, - s->buttons); - - if (!s->qemu_put_mouse_event_absolute) { - s->axis[INPUT_AXIS_X] =3D 0; - s->axis[INPUT_AXIS_Y] =3D 0; - } -} - -QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func, - void *opaque, int absolute, - const char *name) -{ - QEMUPutMouseEntry *s; - - s =3D g_new0(QEMUPutMouseEntry, 1); - - s->qemu_put_mouse_event =3D func; - s->qemu_put_mouse_event_opaque =3D opaque; - s->qemu_put_mouse_event_absolute =3D absolute; - - s->h.name =3D name; - s->h.mask =3D INPUT_EVENT_MASK_BTN | - (absolute ? INPUT_EVENT_MASK_ABS : INPUT_EVENT_MASK_REL); - s->h.event =3D legacy_mouse_event; - s->h.sync =3D legacy_mouse_sync; - s->s =3D qemu_input_handler_register((DeviceState *)s, - &s->h); - - return s; -} - -void qemu_activate_mouse_event_handler(QEMUPutMouseEntry *entry) -{ - qemu_input_handler_activate(entry->s); -} - -void qemu_remove_mouse_event_handler(QEMUPutMouseEntry *entry) -{ - qemu_input_handler_unregister(entry->s); - - g_free(entry); -} - -QEMUPutLEDEntry *qemu_add_led_event_handler(QEMUPutLEDEvent *func, - void *opaque) -{ - QEMUPutLEDEntry *s; - - s =3D g_new0(QEMUPutLEDEntry, 1); - - s->put_led =3D func; - s->opaque =3D opaque; - QTAILQ_INSERT_TAIL(&led_handlers, s, next); - return s; -} - -void qemu_remove_led_event_handler(QEMUPutLEDEntry *entry) -{ - if (entry =3D=3D NULL) - return; - QTAILQ_REMOVE(&led_handlers, entry, next); - g_free(entry); -} - -void kbd_put_ledstate(int ledstate) -{ - QEMUPutLEDEntry *cursor; - - QTAILQ_FOREACH(cursor, &led_handlers, next) { - cursor->put_led(cursor->opaque, ledstate); - } -} diff --git a/ui/input.c b/ui/input.c index c013cd9f7e0..55769c66fcc 100644 --- a/ui/input.c +++ b/ui/input.c @@ -648,3 +648,69 @@ void qemu_input_touch_event(QemuConsole *con, qemu_input_event_sync(); } } + +struct QEMUPutLEDEntry { + QEMUPutLEDEvent *put_led; + void *opaque; + QTAILQ_ENTRY(QEMUPutLEDEntry) next; +}; + +static QTAILQ_HEAD(, QEMUPutLEDEntry) led_handlers =3D + QTAILQ_HEAD_INITIALIZER(led_handlers); + +QEMUPutLEDEntry *qemu_add_led_event_handler(QEMUPutLEDEvent *func, + void *opaque) +{ + QEMUPutLEDEntry *s; + + s =3D g_new0(QEMUPutLEDEntry, 1); + + s->put_led =3D func; + s->opaque =3D opaque; + QTAILQ_INSERT_TAIL(&led_handlers, s, next); + return s; +} + +void qemu_remove_led_event_handler(QEMUPutLEDEntry *entry) +{ + if (entry =3D=3D NULL) { + return; + } + QTAILQ_REMOVE(&led_handlers, entry, next); + g_free(entry); +} + +void kbd_put_ledstate(int ledstate) +{ + QEMUPutLEDEntry *cursor; + + QTAILQ_FOREACH(cursor, &led_handlers, next) { + cursor->put_led(cursor->opaque, ledstate); + } +} + +void qmp_send_key(KeyValueList *keys, bool has_hold_time, int64_t hold_tim= e, + Error **errp) +{ + KeyValueList *p; + unsigned int *up =3D NULL; + int count =3D 0; + + if (!has_hold_time) { + hold_time =3D 0; /* use default */ + } + + for (p =3D keys; p !=3D NULL; p =3D p->next) { + up =3D g_realloc_n(up, count + 1, sizeof(*up)); + up[count] =3D qemu_input_key_value_to_linux(p->value); + qemu_input_event_send_key_linux(NULL, up[count], true); + qemu_input_event_send_key_delay(hold_time); + count++; + } + while (count) { + count--; + qemu_input_event_send_key_linux(NULL, up[count], false); + qemu_input_event_send_key_delay(hold_time); + } + g_free(up); +} diff --git a/ui/ui-hmp-cmds.c b/ui/ui-hmp-cmds.c index 76f5181de43..ee3e731d07e 100644 --- a/ui/ui-hmp-cmds.c +++ b/ui/ui-hmp-cmds.c @@ -55,10 +55,11 @@ void hmp_mouse_move(Monitor *mon, const QDict *qdict) =20 void hmp_mouse_button(Monitor *mon, const QDict *qdict) { + /* HMP mouse_button bitmask: 1=3DL, 2=3DR, 4=3DM */ static uint32_t bmap[INPUT_BUTTON__MAX] =3D { - [INPUT_BUTTON_LEFT] =3D MOUSE_EVENT_LBUTTON, - [INPUT_BUTTON_MIDDLE] =3D MOUSE_EVENT_MBUTTON, - [INPUT_BUTTON_RIGHT] =3D MOUSE_EVENT_RBUTTON, + [INPUT_BUTTON_LEFT] =3D 0x01, + [INPUT_BUTTON_MIDDLE] =3D 0x04, + [INPUT_BUTTON_RIGHT] =3D 0x02, }; int button_state =3D qdict_get_int(qdict, "button_state"); =20 diff --git a/ui/meson.build b/ui/meson.build index bb01f0728e2..0c6a432948c 100644 --- a/ui/meson.build +++ b/ui/meson.build @@ -53,7 +53,6 @@ libui =3D static_library('qemuui', libui_sources + genh, ui =3D declare_dependency(objects: libui.extract_all_objects(recursive: fa= lse), dependencies: [pixman]) system_ss.add(png) system_ss.add(files( - 'input-legacy.c', 'input-barrier.c', 'input.c', 'ui-hmp-cmds.c', --=20 2.54.0 From nobody Tue Jun 9 23:08:21 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=1781015799; cv=none; d=zohomail.com; s=zohoarc; b=fyyx7r6Ab2jpTfdagQhx1pqlIsoM5eK27rOyByQiSVw982KNdn1Ui1e8Xq+T4CyaL88exvZUITlEDdu42wf8wQ8RNaz0R1iTGuQlCvTsMjTHDX+7exaJLMCriCv3yWCkFxCWbVekBz1rN4yspyZpFbzaFXngKPRFYOiaGQfODk0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781015799; 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=3GhlaX9RxVK7BT3mF9ghhLa+4UH1Dr8+DEw6WKys1Uo=; b=GkHsq5ZA7QGOrXd+3HuXzGOp1vvj0QEM+dRrrX/iyWC1HhVd79RURaOmBj66USAzWJPSACk8zmTsKpuqmB5tonMUR9LXGMi2xjKOQtrIcnG4We75lc6+FR3ebNH0S0EFVEU1m6A/K648W0muiQHH6K2e3DX3GsczIlk9K73GQAc= 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 1781015799910107.73636610709286; Tue, 9 Jun 2026 07:36:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWxY3-0001eY-FA; Tue, 09 Jun 2026 10:35:23 -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 1wWxY1-0001VN-K1 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:21 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wWxXz-0006vw-Sb for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:21 -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-662-xuKzh9HRNWqysGAeogetVg-1; Tue, 09 Jun 2026 10:35:15 -0400 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (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 CFB2318501D0; Tue, 9 Jun 2026 14:35:14 +0000 (UTC) Received: from localhost (unknown [10.44.24.21]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 20CCB18005B7; Tue, 9 Jun 2026 14:35:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781015719; 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=3GhlaX9RxVK7BT3mF9ghhLa+4UH1Dr8+DEw6WKys1Uo=; b=ScojNPH4f1GbdwcCs22fISzpI7S1gssXsXivDEr0QD7gD8iaAWvNOP8ASFKr6BGlTfCI+X lDvOTVqkXRTMoxVh3cgxxUVKFsLCyLy9BhTF4WI/INkWSQWuqxDKPmf/QHNhX78Jte+lWz 4lYA5weIV7Xel4z6NALeW/MTDojmAz8= X-MC-Unique: xuKzh9HRNWqysGAeogetVg-1 X-Mimecast-MFC-AGG-ID: xuKzh9HRNWqysGAeogetVg_1781015714 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Tue, 09 Jun 2026 18:34:25 +0400 Subject: [PATCH 06/17] hw/input: replace fprint with LOG_GUEST_ERROR MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-ui-input-v1-6-42615deb818e@redhat.com> References: <20260609-ui-input-v1-0-42615deb818e@redhat.com> In-Reply-To: <20260609-ui-input-v1-0-42615deb818e@redhat.com> To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Paolo Bonzini , Richard Henderson , "Michael S. Tsirkin" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=1563; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=tgtAvJxhRyoqqCQ9RJr2DxYeCbtpurFwon7zQ5eSVls=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqKCR3n/GRFUwn9eu3rUrG8G7XSi4xuSVNM6FZz xS2yHOu16OJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCaigkdwAKCRDa6OEJdZac 5QoMD/9OM5mssAnNmw/21UHkDEo4vdBzUseqJMVbmfcHPZakRmHsTeYsXIh2QtyGdYISCMzHTMt gwVOUjkWdatvO9hT4igq4PDxJWEMfl27SGPwNGxEDwUZ7xqA5PvnJ299iFslM1ZTn+Zle9dyvbd /ko72Dnh6T4pdQHNB7pvp70sJXgubvwVg8r/TplQZ4D3PUXpoRQyO82hCsF8UinRI9zbppLIP7o SVxaDXHAj395vKEB6YB87wxH04IN+KvOzkSsQy8+qVpm7JBl+HD4VDYq+hlAcesR5Ekh6zOrWfu iuuBHvB4TZY6n6xg/PJULLhhcXGjp5p4sVsDoq/RxXKTKue6GEmXlXq+FbHikJjaPsXOlNouKDV cnZJEk1sp7gh520aw3NGtKfe5PXECym94hhjR37of76XjJP6OywJYXIOf1iXp/wXnLxWjDFSjuP lW1NEtBs0XVXooHDCiUT4RBEqKZRLAPSYz1LnAnKMmH4kRbv6yl9MFGtLaEpL902Dcg1nf3e1w8 hqMaxhZ2ULtJFKpYggEpuMJ03KTSUyoziVoTmURdeRwyMUSS3518pGuLV7vvb7UCN2Ef33IeCXA Yd52kS160UAJSfuN3IvCvctMj/DTPibdW/N6xaiXzRDaqRVMduDFzkrcjAYIETeS3A2ZFfUfbs9 sptsEfZ679XGHtQ== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 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.133.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_H5=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: 1781015805372158500 Signed-off-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/input/virtio-input-hid.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/hw/input/virtio-input-hid.c b/hw/input/virtio-input-hid.c index 75fe45d89a2..73423ac0c73 100644 --- a/hw/input/virtio-input-hid.c +++ b/hw/input/virtio-input-hid.c @@ -6,6 +6,7 @@ =20 #include "qemu/osdep.h" #include "qemu/iov.h" +#include "qemu/log.h" #include "qemu/module.h" =20 #include "hw/virtio/virtio.h" @@ -107,9 +108,9 @@ static void virtio_input_handle_event(DeviceState *dev,= QemuConsole *src, virtio_input_send(vinput, &event); } else { if (evt->btn.down) { - fprintf(stderr, "%s: unmapped button: %d [%s]\n", __func__, - evt->btn.button, - InputButton_str(evt->btn.button)); + qemu_log_mask(LOG_GUEST_ERROR, + "%s: unmapped button: %d [%s]\n", __func__, + evt->btn.button, InputButton_str(evt->btn.button)); } } break; @@ -210,8 +211,9 @@ static void virtio_input_hid_handle_status(VirtIOInput = *vinput, kbd_put_ledstate(vhid->ledstate); break; default: - fprintf(stderr, "%s: unknown type %d\n", __func__, - le16_to_cpu(event->type)); + qemu_log_mask(LOG_GUEST_ERROR, + "%s: unknown type %d\n", __func__, + le16_to_cpu(event->type)); break; } } --=20 2.54.0 From nobody Tue Jun 9 23:08:21 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=1781015772; cv=none; d=zohomail.com; s=zohoarc; b=MRyYCLEi01NjlNv3ZIPdPHgCtboRJkm/xkfQ1d30ni85mdgqHJwvLJfTskYlXVmBVK/eA0OEyID+XtK4jFmDqXURvRVn3bS/R2RKEfyFTBCViDJXJhvQiAJy1YqcT613MIctBw/jFzFCHrb8QoQXhczWL5mMkzfB9SORBIefTrE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781015772; 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=bCFdaleLAqFZOybhIPB+08n2Tsh51f2ld96XW2TReag=; b=KFJRe6N+TJFpzYFUyFALY/JQgrGvtMlsvn2RlxZSQtr4NGjWkiUbWcaeuegD6rAlwlLD9Et0dXilZpXpSDGAIaGuGRRW1WsLKA0Nb5xVnEZ1Q0fiagRLF3WBrKULwqgMu6uSdkxq1HZdCsv9suuvzBGwBBomZF9wSOu3/+aIIUo= 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 1781015772513372.6633980433339; Tue, 9 Jun 2026 07:36:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWxY7-0001w0-1A; Tue, 09 Jun 2026 10:35:27 -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 1wWxY5-0001op-Aw for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:25 -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 1wWxY3-0006wy-OA for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:25 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-659-6R9tz2XiMOKb52SludvxSQ-1; Tue, 09 Jun 2026 10:35:21 -0400 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 76B16195DE7D; Tue, 9 Jun 2026 14:35:19 +0000 (UTC) Received: from localhost (unknown [10.44.24.21]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 8A20D18005B7; Tue, 9 Jun 2026 14:35:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781015723; 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=bCFdaleLAqFZOybhIPB+08n2Tsh51f2ld96XW2TReag=; b=IgbSDBqA62bZttnCLdVgnmofy1UfTRj9tN31VTjr0nznVOar+0iJxQK378O5E7tnv5IYWj VplQhuPtIjf20gII0hqGs4a1mKzrF/qc+7UuJK6nLRn6s0h7CXe5mnGBBz/POlnfMAjKky ZGFcWs4FBsPLsac+/Qco1RFxpm9ATwc= X-MC-Unique: 6R9tz2XiMOKb52SludvxSQ-1 X-Mimecast-MFC-AGG-ID: 6R9tz2XiMOKb52SludvxSQ_1781015719 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Tue, 09 Jun 2026 18:34:26 +0400 Subject: [PATCH 07/17] ui/input: remove double-notification on qemu_mouse_set() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-ui-input-v1-7-42615deb818e@redhat.com> References: <20260609-ui-input-v1-0-42615deb818e@redhat.com> In-Reply-To: <20260609-ui-input-v1-0-42615deb818e@redhat.com> To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Paolo Bonzini , Richard Henderson , "Michael S. Tsirkin" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=500; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=QKTfJXkiYTlclQdjxc806Ee/VaUL+ZAjxSUBDEqQqXU=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqKCR3mFtqJcuLcmlomiZ03NnbUcVvRKL7E4tQG WOpdW2SFKeJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCaigkdwAKCRDa6OEJdZac 5YHZD/9usdAuvBf0SHd+QiEFdBIONLZnzC6EXPU3HcQ7yNEiL5jwSiF/i8DTnF08Gkh4Vdm34aQ eWEkXpgmWQbCp/flfJp16vDKb6DP12QB68dTeWKFtwASrblGk4KxhcXx7+FhD8yQNWUsjeF1chS dWfGtLpIbu7QXDn0CUOTVZk5EJYZYnjPQRnRchuq9X75kdPXVAT6+mwvz0/LM+DSOzT86JZvzIg FaQECKhy8ZdrymYnctIBpD9c6ACxQthHqT53Zkt6t8pPrPEeZdEuHw1mZerSNTOYbVtB8Hml1Pn 8FcB4hmXq9doyI1rb2xK33Bj51kd/uI77dVxvx0V+xYuNNeszZ36c0AqtNQh7gU5Vd1/mJz/r+v 7olNfjISHWZB8+vvlzTzZEHm6HvSMG1s9231d+VR7DkS8KC9IUVt4ufmSvSTQ7Ws0RV+HrkUXgC TxV4yGsBt7WHSAFZ+z9C/D+QYWHT/ltCIbINGsomT6MEXnkQS26kd+XQgdhl/BVwio+nzKVSEBt 9fwuJyCr4yDuCWIOmBp11RTqej7HI5XcsGYzR5PtgjiyQbKPIUzkF6/uffYtLbZm6uwrPmBIZj1 oWXWBoYseLFq8sl/mzhWiDBqv5efJNifT9gzWKliF4f0gL0Ra/Kgv5uNo452B6sFxwCIWYUBcIh LAm4i81TqXy4LJg== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 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: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 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_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1781015773060158500 qemu_input_handler_activate() already notifies. Signed-off-by: Marc-Andr=C3=A9 Lureau --- ui/input.c | 1 - 1 file changed, 1 deletion(-) diff --git a/ui/input.c b/ui/input.c index 55769c66fcc..15affeabf44 100644 --- a/ui/input.c +++ b/ui/input.c @@ -580,7 +580,6 @@ bool qemu_mouse_set(int index, Error **errp) } =20 qemu_input_handler_activate(s); - notifier_list_notify(&mouse_mode_notifiers, NULL); return true; } =20 --=20 2.54.0 From nobody Tue Jun 9 23:08:21 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=1781015755; cv=none; d=zohomail.com; s=zohoarc; b=PHbJ/kUAR4V7ApRdVfHoypmS/ZnmgZ8ZfxQa8kJq5999r9G/ADAeIXy454uvf7ewiEcgQb/gh7LW07WL6wn158PigmjbvQWptVlOHYkyWbvnWuZ3Faa5KH1mq5gE8TZZiHjT6KLqhGKHeudF4Cx3Ruq9Y9VHPQJIj6y3oJ/tD9c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781015755; 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=7jB75nkxPFlCexEWq7TsFNXlMkTYiq+stfSkkgb8exY=; b=lWnT3FvdrskSbLUk54vRrEWeewEXWlK9ri6ZB4dTp2yVTjTG4rLhpkqaC+ZYaGZz/h/6matAVvrzbXwx5jJuTCF6QJQB5JkMAJEwI6zlXeC7k88phQCQsgaq70CFQGB9IvRE51C2BDvxRAe5If8ROzwCS2lwAJ8yq+N3lPBIfGw= 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 178101575592722.062413040986144; Tue, 9 Jun 2026 07:35:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWxYG-00029i-QE; Tue, 09 Jun 2026 10:35:36 -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 1wWxYF-00027j-6v for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:35 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wWxYD-0006z8-Tt for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:34 -0400 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-196-zjopIL99OBOn-oPvkwKybg-1; Tue, 09 Jun 2026 10:35:26 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 1F3F71964CF0; Tue, 9 Jun 2026 14:35:25 +0000 (UTC) Received: from localhost (unknown [10.44.24.21]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 53D9519560AB; Tue, 9 Jun 2026 14:35:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781015733; 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=7jB75nkxPFlCexEWq7TsFNXlMkTYiq+stfSkkgb8exY=; b=SERjcCpi/xxRRphLCGNooawPcOQcAX65tfKl2r5BhPFcqjDfNIGJtF5uwNw2CyuTPKf01l hnSVvq79CXSeb9g1p2maHGeE/JCxNWDSK6eWBd+VQUa2J6bWE0gGiJ77clNpnhNpVLeZiC k3i9MePXRXLHPa1R8DdNoSZUZk7Gx8I= X-MC-Unique: zjopIL99OBOn-oPvkwKybg-1 X-Mimecast-MFC-AGG-ID: zjopIL99OBOn-oPvkwKybg_1781015725 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Tue, 09 Jun 2026 18:34:27 +0400 Subject: [PATCH 08/17] ui/input: remove dead declaration MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-ui-input-v1-8-42615deb818e@redhat.com> References: <20260609-ui-input-v1-0-42615deb818e@redhat.com> In-Reply-To: <20260609-ui-input-v1-0-42615deb818e@redhat.com> To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Paolo Bonzini , Richard Henderson , "Michael S. Tsirkin" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=635; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=wvoT4L1d7wC+TPu6ppOr0c6dCY3j0fcg8rXQwzLLTRM=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqKCR4lz6x2aVHNr+BNRs7BTJ+91UfW1WuZXfut /XCnwhXAD6JAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCaigkeAAKCRDa6OEJdZac 5T/mEACl3sphr4xQuj9s8VdZ2UZasPpxhTVcfkd4/t/naKlI+DbkiUhkQLpJNbr+hbQ9yS99x3D o3Qmi96941A+m6OWYT+6RCJ2Tojaw2SWCgdEAbOYxl/7J9ZNhMNDv6rBKVaofwmwtIwFFymwo6W OxzyQnPYAymLIkCeHSA1dxMbpFBpAWl5kIdUWk1fP+hJB5aZvArsZ2xLAvoiCHCwutotP5Rr/cv l1CRDGheLDZj1wLsjKFzoJjMRfnIlDpSNTJh4YB/+CjI8MxBDw3gK51sGeM8HhH3pN8YrO6z2fS soqXPX8FhlFv7I7P2xFxsXw+9qNEq8G4hesJMETlJtaE+P/M9+iKRJNrAce4GStW7vhsl7kM3KI QTGEN+vhMMLcYAOT158+1KEl+TDEGj+MAFqpvYhgieRlEMqBwTGOIbvLe0oy8P8ZuSEtwU4GFwU ffJ/vIaRbtGx9LbNNfMyFFVBgMQvsSDLsWxqDNlW6kzKqJ+98pdi8J3COSP0YTdqgYRgq2+PUcA Z6wdpnJW6g7PEbf1+3ieUQJg1pVyfaQSCi7sI5Yyo9KG14ldLmOmY4yqWasPVfXuyBzvcaLv1x7 5vWfusc9HPt6eXDLnDtIAjb8aP01fuzuno9RqEzKlsPJ3GsdChVvDGgGW4mQKnvM74o0omOJqDu Wv2xL1ctX3euYFQ== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 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.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1781015756904158500 Signed-off-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/ui/input.h | 1 - 1 file changed, 1 deletion(-) diff --git a/include/ui/input.h b/include/ui/input.h index ea2d944a7ed..6df8ae3a8a3 100644 --- a/include/ui/input.h +++ b/include/ui/input.h @@ -100,7 +100,6 @@ void qemu_input_touch_event(QemuConsole *con, InputMultiTouchType type, Error **errp); =20 -void qemu_input_check_mode_change(void); void qemu_add_mouse_mode_change_notifier(Notifier *notify); void qemu_remove_mouse_mode_change_notifier(Notifier *notify); =20 --=20 2.54.0 From nobody Tue Jun 9 23:08:21 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=1781015744; cv=none; d=zohomail.com; s=zohoarc; b=LbRKG4E4nBMth3qd/QnHxBq7nLg5QdUp0hx8x+pwJPoPpKLV2UckkKlj1pKk2LON5QjQ58E6J0s+yLuM5vO5pn0v9KCKGVpbErKVAdHZIPtWN7Wmb08bYMy1eYiLujVMdhA0x7ulKIE+0+oRe+kW5R2Gyl83Y35Wu7q/URmlFS8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781015744; 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=bXpUuOpl0GC2NdoWw2KwznKpIE7Ju+drpUS1Ff4Mj7g=; b=bFffI64QpIeXJ9k4GTsqduELrNARcHtaXPXzZM7peAOswb7VZGNxmhWsbqc2rZfL69sIFh1G1VqiYoNF2PUlz8xGvLluhldw38BzMDQGmGl8ji1rZE85ffEyUlxUz7CprlWU1ywrdsVyU+oZq4g8RThmh7iPlwfA3mZaAcquNEk= 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 1781015744695260.66743083304493; Tue, 9 Jun 2026 07:35:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWxYJ-0002Ar-AJ; Tue, 09 Jun 2026 10:35:39 -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 1wWxYG-000296-29 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:36 -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 1wWxYD-0006z4-UP for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:35 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-711-GLpXgcE0MDWuyQtIHzwjnA-1; Tue, 09 Jun 2026 10:35:31 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 39175195DE75; Tue, 9 Jun 2026 14:35:30 +0000 (UTC) Received: from localhost (unknown [10.44.24.21]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B9AF41954102; Tue, 9 Jun 2026 14:35:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781015733; 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=bXpUuOpl0GC2NdoWw2KwznKpIE7Ju+drpUS1Ff4Mj7g=; b=asLquLxmRxGL1TRZ833+jmRPc8kq7LBg33oJGiasdu+Zk+IaUGfSRIHHMoJ1Koc4IuPcOs qLSXICHW3+qSs5v7+rvrA6n9I1JqKIgs0yMRm2Qlou1571Fa5q4RzLYMkooGR/0+zZBBNL 2oE8hebGBtG/Ko/grNhhLJ+uuvh/LYg= X-MC-Unique: GLpXgcE0MDWuyQtIHzwjnA-1 X-Mimecast-MFC-AGG-ID: GLpXgcE0MDWuyQtIHzwjnA_1781015730 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Tue, 09 Jun 2026 18:34:28 +0400 Subject: [PATCH 09/17] ui/input: add LED state tracking to QemuInputHandlerState MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-ui-input-v1-9-42615deb818e@redhat.com> References: <20260609-ui-input-v1-0-42615deb818e@redhat.com> In-Reply-To: <20260609-ui-input-v1-0-42615deb818e@redhat.com> To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Paolo Bonzini , Richard Henderson , "Michael S. Tsirkin" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=4895; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=cMVZYCnggxq6yeX3PGXoPndHc36y1Z8RdA8E0xdY2nI=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqKCR4AYZ9fgKrZdpPnel2zmU4Ltv1zFtjFHE/k r94nin5yNyJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCaigkeAAKCRDa6OEJdZac 5VhDEACS8G9Hnowbpbe+/KHnaGzGpQF/3k1l3LE+awWA+CspluNDIsC/krWgVlUeWXCrtcgbuqE ileMiKYMLWtNju+BaMZqoOAUllzfz1onwg4TgYRJD7SP93R/Quzd5hHNepgbuFqjZ5f4Pq//6Do y9yBd2Ki+imYnvvychDhZuaKFyd8eHdaZ0cMvmnkTjagyB5evexU0XQU8lVVMW2M5pdVCAlDfQD Tgzlim89K3Yc0jh7m5bR3E3/ZfA/Kpk/N+FlOGbJZU20oMmUJEvuXfg8NKZfKOaxdvlQGrzNrrv WR9BpyuLzM82wTfKJeK0r31K9mD8nCRuqLxArpfqQ9qilVqUPnPlmwZdcc1/kx6V5c8AIOB6WMl jrFdTTRVN2LipP2IHVC0EdVaLlkY6/Kv2vKRmOHvC4MW8oHz8bKmQiCP556z2lJxwyOE8iMD/fU ZGn+2/NLFZ6tTGuMKD7yKAIPzrLadp02OLZ2DNA75vIcBmyULKXEzHT1cwES/QLKEkjmlYVN90R WDPJRQmrn81hb8IO6T1QDZ3iYHSkU4VJBQNNDILWRhdELO1wMDQJhUwsuX1aw8sUaKCGlmA7ema B8LTmkpTzlluAwMDuxZfu4Xg1S66FC+f5QDFa1da2pL8X+GOueqCClrKBlIfLD+4F86Jgvfrz0Y yrHDHPsvFaq9T1A== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 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_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1781015745860154100 Add per-handler LED state and a NotifierList for UI backends to subscribe to LED changes. Devices call qemu_input_handler_set_led() to store their LED state and notify backends. Notify also on focus change, or list update. Note: I considered conflating mouse-mode & led-state changes, but those are quite different events (from different source kinds etc) and we may want to improve the internal implementation. Signed-off-by: Marc-Andr=C3=A9 Lureau --- include/ui/input.h | 5 +++++ ui/input.c | 49 +++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/include/ui/input.h b/include/ui/input.h index 6df8ae3a8a3..66e5c1f4b06 100644 --- a/include/ui/input.h +++ b/include/ui/input.h @@ -151,4 +151,9 @@ extern const guint16 qemu_input_map_xorgxwin_to_linux[]; extern const guint qemu_input_map_osx_to_linux_len; extern const guint16 qemu_input_map_osx_to_linux[]; =20 +void qemu_input_handler_set_led(QemuInputHandlerState *s, int ledstate); +void qemu_input_led_notifier_add(Notifier *n); +void qemu_input_led_notifier_remove(Notifier *n); +int qemu_input_get_led(QemuConsole *con); + #endif /* INPUT_H */ diff --git a/ui/input.c b/ui/input.c index 15affeabf44..99a1090f8c3 100644 --- a/ui/input.c +++ b/ui/input.c @@ -14,6 +14,7 @@ struct QemuInputHandlerState { int id; int events; QemuConsole *con; + int ledstate; QTAILQ_ENTRY(QemuInputHandlerState) node; }; =20 @@ -38,6 +39,8 @@ static QTAILQ_HEAD(, QemuInputHandlerState) handlers =3D QTAILQ_HEAD_INITIALIZER(handlers); static NotifierList mouse_mode_notifiers =3D NOTIFIER_LIST_INITIALIZER(mouse_mode_notifiers); +static NotifierList led_notifiers =3D + NOTIFIER_LIST_INITIALIZER(led_notifiers); =20 static QemuInputEventQueueHead kbd_queue =3D QTAILQ_HEAD_INITIALIZER(kbd_q= ueue); static QEMUTimer *kbd_timer; @@ -45,6 +48,14 @@ static uint32_t kbd_default_delay_ms =3D 10; static uint32_t queue_count; static uint32_t queue_limit =3D 1024; =20 +static void notify_input_changed(uint32_t mask) +{ + notifier_list_notify(&mouse_mode_notifiers, NULL); + if (mask & INPUT_EVENT_MASK_KEY) { + notifier_list_notify(&led_notifiers, NULL); + } +} + QemuInputHandlerState *qemu_input_handler_register(DeviceState *dev, const QemuInputHandler *handle= r) { @@ -55,8 +66,8 @@ QemuInputHandlerState *qemu_input_handler_register(Device= State *dev, s->handler =3D handler; s->id =3D id++; QTAILQ_INSERT_TAIL(&handlers, s, node); + notify_input_changed(handler->mask); =20 - notifier_list_notify(&mouse_mode_notifiers, NULL); return s; } =20 @@ -64,21 +75,23 @@ void qemu_input_handler_activate(QemuInputHandlerState = *s) { QTAILQ_REMOVE(&handlers, s, node); QTAILQ_INSERT_HEAD(&handlers, s, node); - notifier_list_notify(&mouse_mode_notifiers, NULL); + notify_input_changed(s->handler->mask); } =20 void qemu_input_handler_deactivate(QemuInputHandlerState *s) { QTAILQ_REMOVE(&handlers, s, node); QTAILQ_INSERT_TAIL(&handlers, s, node); - notifier_list_notify(&mouse_mode_notifiers, NULL); + notify_input_changed(s->handler->mask); } =20 void qemu_input_handler_unregister(QemuInputHandlerState *s) { + uint32_t mask =3D s->handler->mask; + QTAILQ_REMOVE(&handlers, s, node); g_free(s); - notifier_list_notify(&mouse_mode_notifiers, NULL); + notify_input_changed(mask); } =20 void qemu_input_handler_bind(QemuInputHandlerState *s, @@ -122,6 +135,23 @@ qemu_input_find_handler(uint32_t mask, QemuConsole *co= n) return NULL; } =20 +void qemu_input_handler_set_led(QemuInputHandlerState *s, int ledstate) +{ + assert(s->handler->mask & INPUT_EVENT_MASK_KEY); + s->ledstate =3D ledstate; + notifier_list_notify(&led_notifiers, NULL); +} + +void qemu_input_led_notifier_add(Notifier *n) +{ + notifier_list_add(&led_notifiers, n); +} + +void qemu_input_led_notifier_remove(Notifier *n) +{ + notifier_remove(n); +} + void qmp_input_send_event(const char *device, bool has_head, int64_t head, InputEventList *events, Error **errp) @@ -445,6 +475,17 @@ bool qemu_input_is_absolute(QemuConsole *con) return (s !=3D NULL) && (s->handler->mask & INPUT_EVENT_MASK_ABS); } =20 +int qemu_input_get_led(QemuConsole *con) +{ + QemuInputHandlerState *s; + + s =3D qemu_input_find_handler(INPUT_EVENT_MASK_KEY, con); + if (s) { + return s->ledstate; + } + return 0; +} + int qemu_input_scale_axis(int value, int min_in, int max_in, int min_out, int max_out) --=20 2.54.0 From nobody Tue Jun 9 23:08:21 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=1781015773; cv=none; d=zohomail.com; s=zohoarc; b=dMmWblTBqjovtf8j+zQ+h8mJpOktaUB+6N3qXdJyhzIznuPsb0ewuNnqRrhjYywuxh981OS2QAh3aL+1+4kwyn8GbRbqfi1IAOtwJsSXrD7ZpTSucb42HOOBno0/i3zotZQ60P3c3YZV/oX5rENm8uLfVCnVPfQ1EtaV+lSyyGE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781015773; 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=fGeD1zI3ggDIrCAmlMnK5fJi1wnvoZniFOpyG6WU/JE=; b=AzSWCcgsjyDpIu5Be10CDCX1kK9RMsZPZAK/Rl+DpJ94Q/C3IREFHw7dNq8jpZnCRQBlE84gShC4HCj+2EM8OUqB4jqjSokB17CAetZxkuDAaAyeYG8BH6iUnHlMDWOLfSozUHqhHUK/YSzRHr2Og8pPM8dBRiVgGTnhZ1bpU8o= 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 1781015773357471.2723445615005; Tue, 9 Jun 2026 07:36:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWxYN-0002LZ-Tt; Tue, 09 Jun 2026 10:35:43 -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 1wWxYL-0002K2-T8 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:41 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wWxYK-00071A-Bx for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:41 -0400 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-610-Q8zQ7gqzO4-2VViSfnbn-Q-1; Tue, 09 Jun 2026 10:35:36 -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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 4C513195C248; Tue, 9 Jun 2026 14:35:35 +0000 (UTC) Received: from localhost (unknown [10.44.24.21]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 01E593008B39; Tue, 9 Jun 2026 14:35:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781015739; 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=fGeD1zI3ggDIrCAmlMnK5fJi1wnvoZniFOpyG6WU/JE=; b=c+TDXmIDv8VSJ0aBq8nHJOl5AoNgjc0aD1WHdm2qJXqwkq0zLWtqRcfjS52LZZ5L5JLWVA 7z9ILUM7dOy3ZxrF7dnWgHroEPEcTTTZfJniGW1brIO2TNctGI/0o/fldC8NOg0ypvX0vo QgPCJv0AtkDguQhq0xlA0hmeatX/IwA= X-MC-Unique: Q8zQ7gqzO4-2VViSfnbn-Q-1 X-Mimecast-MFC-AGG-ID: Q8zQ7gqzO4-2VViSfnbn-Q_1781015735 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Tue, 09 Jun 2026 18:34:29 +0400 Subject: [PATCH 10/17] hw/input/ps2: keep QemuInputHandlerState in PS2State MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-ui-input-v1-10-42615deb818e@redhat.com> References: <20260609-ui-input-v1-0-42615deb818e@redhat.com> In-Reply-To: <20260609-ui-input-v1-0-42615deb818e@redhat.com> To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Paolo Bonzini , Richard Henderson , "Michael S. Tsirkin" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=2869; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=JMFo3VFOQuBSAxO/bJx1/IJb/8LPj7ALKGdmAiibs/8=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqKCR4KU3K78DfqR1oRXIcprh8lEBs9YWSC3pCU IxZUPNXezKJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCaigkeAAKCRDa6OEJdZac 5Uv6D/sEqgFxcgLBE9GGOeEeU5uj6+ouomla2pWedO5C+KCEx2jx0kTsvcwgyiOxiceuHNRxBOc G09oSQLsFaH2zGysudTyoSyVcRtPeNc0kUy6lcTY0FARMKZB9zVPG2ElzGLddg6J3S/0uo7B/m9 9ezp6PNaSVxeWYWYbJDPGqp4t/9mK51Rwv08ZSMv5HmCkUOITMogo8puyGRgAtoUjI1UQ4KTphI Ck84EmmWMohGGnUs5+/OzX8QrMEH9LGZBAt/2GCMil0Lw/RZ3TwkKaPLDCBYttnILiFT43ifPm4 gkIy5lM0Vn6KKMhKV1Q843cUL7qYTHCeKH3Fij+vedphTH8vWvj3O6CEuj3rGIvIotPi1Qxn1T8 phLcoOsHnEpjDc81sCdoUKGakuAyvpwQsVtnIR4zxpC4YZ8JuVI6Iww18RIcAOm0dLXdyOgZD2z JkCGWowea+BRHHnvlLeouh7y2gg3uBecaXRwRTfm6+TK17dTJWTKITQ7kfR6kC8pd8smO/ZEYvy ekHIjpyhkUw6lfKV3/Cvtn7SLhf8C0RDlQ+kVV0HPGQKRPuGIC5HIDSBFL6OXVjTTFDbViWCTjs 378Wqoex7JQQwI9BiZRGQ5yID5thCPSHvZjIk4H7D4qczquY3GjkeS17ycWxgdDKInJhNL02aW0 btwSKPfuWoE9qAA== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 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.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1781015775128158500 Track the input handled state, and dispose it on unrealize. Signed-off-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/input/ps2.h | 2 ++ hw/input/ps2.c | 24 ++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/include/hw/input/ps2.h b/include/hw/input/ps2.h index 058db3e0890..d0c532a38f2 100644 --- a/include/hw/input/ps2.h +++ b/include/hw/input/ps2.h @@ -26,6 +26,7 @@ #define HW_PS2_H =20 #include "hw/core/sysbus.h" +#include "ui/input.h" =20 #define PS2_MOUSE_BUTTON_LEFT 0x01 #define PS2_MOUSE_BUTTON_RIGHT 0x02 @@ -59,6 +60,7 @@ struct PS2State { PS2Queue queue; int32_t write_cmd; qemu_irq irq; + QemuInputHandlerState *hs; }; =20 #define TYPE_PS2_DEVICE "ps2-device" diff --git a/hw/input/ps2.c b/hw/input/ps2.c index f2523ff4bc7..97df7a9a43e 100644 --- a/hw/input/ps2.c +++ b/hw/input/ps2.c @@ -1233,7 +1233,16 @@ static const QemuInputHandler ps2_keyboard_handler = =3D { =20 static void ps2_kbd_realize(DeviceState *dev, Error **errp) { - qemu_input_handler_register(dev, &ps2_keyboard_handler); + PS2State *s =3D PS2_DEVICE(dev); + + s->hs =3D qemu_input_handler_register(dev, &ps2_keyboard_handler); +} + +static void ps2_kbd_unrealize(DeviceState *dev) +{ + PS2State *s =3D PS2_DEVICE(dev); + + g_clear_pointer(&s->hs, qemu_input_handler_unregister); } =20 static const QemuInputHandler ps2_mouse_handler =3D { @@ -1245,7 +1254,16 @@ static const QemuInputHandler ps2_mouse_handler =3D { =20 static void ps2_mouse_realize(DeviceState *dev, Error **errp) { - qemu_input_handler_register(dev, &ps2_mouse_handler); + PS2State *s =3D PS2_DEVICE(dev); + + s->hs =3D qemu_input_handler_register(dev, &ps2_mouse_handler); +} + +static void ps2_mouse_unrealize(DeviceState *dev) +{ + PS2State *s =3D PS2_DEVICE(dev); + + g_clear_pointer(&s->hs, qemu_input_handler_unregister); } =20 static void ps2_kbd_class_init(ObjectClass *klass, const void *data) @@ -1255,6 +1273,7 @@ static void ps2_kbd_class_init(ObjectClass *klass, co= nst void *data) PS2DeviceClass *ps2dc =3D PS2_DEVICE_CLASS(klass); =20 dc->realize =3D ps2_kbd_realize; + dc->unrealize =3D ps2_kbd_unrealize; resettable_class_set_parent_phases(rc, NULL, ps2_kbd_reset_hold, NULL, &ps2dc->parent_phases); dc->vmsd =3D &vmstate_ps2_keyboard; @@ -1274,6 +1293,7 @@ static void ps2_mouse_class_init(ObjectClass *klass, = const void *data) PS2DeviceClass *ps2dc =3D PS2_DEVICE_CLASS(klass); =20 dc->realize =3D ps2_mouse_realize; + dc->unrealize =3D ps2_mouse_unrealize; resettable_class_set_parent_phases(rc, NULL, ps2_mouse_reset_hold, NUL= L, &ps2dc->parent_phases); dc->vmsd =3D &vmstate_ps2_mouse; --=20 2.54.0 From nobody Tue Jun 9 23:08:21 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=1781015801; cv=none; d=zohomail.com; s=zohoarc; b=HU/cPOShv67UxbKUeg3gl/Y9CnK6dQ3zMmCt8oWEqstRTiK3kyvbAdv1WjrxGXu7VPBcSBQKUMj8Mj8BZ31u0EzIkH4Hol9fkfSwrMjLuuUzvcS7ROE50eG8vl6slxGxYWkWrcLTLUnANsd+I3KItNc8hrW5uYsHrluzn+cfn/k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781015801; 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=1nNc/INcsPpcggiUKdGL+v67fCZIsx+PXcGTnYiRPMc=; b=Pms/ruWdoDhtIv1HWVhTNOyfdL4Ikla3KzZ4csrZqQ+66Tm4KwunfMteablQWiMhoH2BzVeIMrkiSUBN0/1aSsFvWj/C5sqMW7gyEuO5cWzl3/x61BlS12BFwfNbjG5eC5dN9JzIdPgNttNpj/MZttGXUJdQ8Kg4WyTe39xWbz8= 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 1781015801258317.0693065517951; Tue, 9 Jun 2026 07:36:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWxYR-0002TO-Ls; Tue, 09 Jun 2026 10:35:47 -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 1wWxYQ-0002Oz-2C for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:46 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wWxYO-00073X-MQ for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:45 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-562-gmtiu2lsNriGW_Mf-TamcQ-1; Tue, 09 Jun 2026 10:35:40 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id E3B3F195F16F; Tue, 9 Jun 2026 14:35:39 +0000 (UTC) Received: from localhost (unknown [10.44.24.21]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 056E21954102; Tue, 9 Jun 2026 14:35:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781015744; 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=1nNc/INcsPpcggiUKdGL+v67fCZIsx+PXcGTnYiRPMc=; b=MA9WTPrOAZQDYVt8bqCKHeArHTX/q9wkMto6nA9/elyMcoiKTzs1qPb/X6HCdaKHnNo0IY HvYHokpGH5LHvk+9t8qKFpwUTjHRvndYPWHOEJZ5te28OI1S/2FvSYLz0nSM3cUsuxokjV /c9v7rDs+CQu8HnF6UpE6hWk37Ptq+0= X-MC-Unique: gmtiu2lsNriGW_Mf-TamcQ-1 X-Mimecast-MFC-AGG-ID: gmtiu2lsNriGW_Mf-TamcQ_1781015740 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Tue, 09 Jun 2026 18:34:30 +0400 Subject: [PATCH 11/17] hw/input/ps2: use qemu_input_handler_set_led() for LED state MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-ui-input-v1-11-42615deb818e@redhat.com> References: <20260609-ui-input-v1-0-42615deb818e@redhat.com> In-Reply-To: <20260609-ui-input-v1-0-42615deb818e@redhat.com> To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Paolo Bonzini , Richard Henderson , "Michael S. Tsirkin" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=857; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=t0Z9m7c1Hh+44awYmkSHssaygTyzyWH8QlSLYI/LQak=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqKCR4NU/74WlNez1eA5DQ0oRhJUoxNtBWL2ida d/MzyaVVvWJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCaigkeAAKCRDa6OEJdZac 5bytEACUcw6Vcm/X79cH91QCpNunKyxIXJJaMGYGHelnKx04GZO1NvWx8kdQ6cw0mly6S5Pz7SL WizATzWyRLkfERwM8pbgsU9MbZIOYLlw15bM9YRWja3M+QqwwNigN3r3h3lL42KN9a9tIauseZu TkN01tqx5AQqeT2vHwc4l7l94iui/KK0LpORR+A6Wy/f7wgQ0YiN8Bp/+wH1OMZAJffGEmAXT2D x2OXBbvgfI8gScAlNDY4h221XgVj9jIZL6LbnLRZKXAKbVSQF4t+LAX9DzoeOPpYE9GhtLt49Wk YwsB25YRbv5RbwDAMAuarpNwRttgkd3dMFEKXwIbOUPp2KkSCLvDswKt+0txZHMVdd+Ycdwkzvh /wE4ZA7OfiH1V3+xUMPQ+ZpA6vh8pRGTSqM7in+q0rjdK+ZDHOUgo4e890OvcF41s8oTHxdGPSq JSyjUXCfy33F/1bduOuBuR7uYAM9cJUMB/dv0ta0rgmoi+A7CSjywD+V8LRUQQuff7Mta8Vf2sM oscg34SC4NMOUqfCq+zEXMQFOH6FUjpL7ogr9jaSzhpzsKs8Hkp54q0cR1uFLuilGFETqeBEVOu EjRkzLt4FyXm7lhhBPHA+0xniu5fqF1TOgEpbTKJCtoA0rGROWNNLBN/hXRJkaxp8oU0JBQau0X ZPF8saZuMKiWFZw== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1781015802512154100 Signed-off-by: Marc-Andr=C3=A9 Lureau --- hw/input/ps2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/input/ps2.c b/hw/input/ps2.c index 97df7a9a43e..7fbee17fbf0 100644 --- a/hw/input/ps2.c +++ b/hw/input/ps2.c @@ -577,7 +577,7 @@ static void ps2_set_ledstate(PS2KbdState *s, int ledsta= te) { trace_ps2_set_ledstate(s, ledstate); s->ledstate =3D ledstate; - kbd_put_ledstate(ledstate); + qemu_input_handler_set_led(PS2_DEVICE(s)->hs, ledstate); } =20 static void ps2_reset_keyboard(PS2KbdState *s) @@ -1108,7 +1108,7 @@ static int ps2_kbd_ledstate_post_load(void *opaque, i= nt version_id) { PS2KbdState *s =3D opaque; =20 - kbd_put_ledstate(s->ledstate); + qemu_input_handler_set_led(PS2_DEVICE(s)->hs, s->ledstate); return 0; } =20 --=20 2.54.0 From nobody Tue Jun 9 23:08:21 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=1781015783; cv=none; d=zohomail.com; s=zohoarc; b=JDcGWgft13gtZiyA7C7j5SSHTiAiqDn/sKfAmqOUBZ2GltGXJ74Lt4GJyrTlzPG3W1przP4MiNc3i8lxxeqpSKg0hfJ0eBJQNz+o7E4aLqG0jrbiVnUNYe7PyNRYnQvS8x63NkOqF0J0xrY+i7c0omuZmdZHq5l7engBYW4y9ug= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781015783; 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=CwVwvbSd0OrB/pLvMzG/RW2SPdBdDyZxlIjg2PbK6wY=; b=d/K8wl5qjm+UCDG0FeWz0OIXW67y8fAOIoT0S4Bir5s8x1+JSzfYsRtqDUKLvlHBhd+0IY2tWzg34pTiHa09j+Esk0a7be8+AYTm+txssrPS5gij+0/fKdTNVzUxgZ4Ww2lWRnScgTAEpXeQHNWnC98Mgkh66fwIipjFbvsRySo= 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 1781015783357322.33060822519826; Tue, 9 Jun 2026 07:36:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWxYY-0002vr-Ow; Tue, 09 Jun 2026 10:35:54 -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 1wWxYX-0002sK-2r for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:53 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wWxYV-0007BC-Fk for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:52 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-540-VpvkWvGLMuu9w710SvSgSA-1; Tue, 09 Jun 2026 10:35:45 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D0B3F197701C; Tue, 9 Jun 2026 14:35:44 +0000 (UTC) Received: from localhost (unknown [10.44.24.21]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E665E1954102; Tue, 9 Jun 2026 14:35:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781015750; 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=CwVwvbSd0OrB/pLvMzG/RW2SPdBdDyZxlIjg2PbK6wY=; b=QNebKaOT0/bZFd5xX4Vc2v3ezA7b3oIhyKlg0D8LA9bldlOhVeuWsbctR763gNWjrQehXB CkTbmT80qGmmUzfyNEIp0+lHRNRy6QWvOPc/rovmWWTH344mT4TKvV4j1BUeWROzAHVeHJ 55NdIXNNeWbQ0ca/tEYfMOCaxmy7Ey8= X-MC-Unique: VpvkWvGLMuu9w710SvSgSA-1 X-Mimecast-MFC-AGG-ID: VpvkWvGLMuu9w710SvSgSA_1781015744 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Tue, 09 Jun 2026 18:34:31 +0400 Subject: [PATCH 12/17] hw/input/hid: use qemu_input_handler_set_led() for LED state MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-ui-input-v1-12-42615deb818e@redhat.com> References: <20260609-ui-input-v1-0-42615deb818e@redhat.com> In-Reply-To: <20260609-ui-input-v1-0-42615deb818e@redhat.com> To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Paolo Bonzini , Richard Henderson , "Michael S. Tsirkin" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=788; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=ZtFjNPqtjzK8POC7BkT2jb6wYCgMKEiur3NINOMCbNk=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqKCR41W/w9tcAnQ8VN+RLY5V6N0GpmN5NZY6mQ +4NKjqcZtCJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCaigkeAAKCRDa6OEJdZac 5T14D/wIw10YHHw0zlVmjMpZKJ3xXlJ4Ojx4RaLUtarsV7+Zi6SdidbHQFW8+x9znWhsD11HUv8 4sdo4yAWKQ7pfXUiz5Q8/+xF2k1t4I7RFTzoUahAhN8UNhdZWuNaqd3GCFEQMOcK9rRNs+cAuqU a0+TIK8ny3yjI/97xOvYYAEzf9C9qi16Miqc7gM0ylWLwZt+gdVg3T4+nH8T1ttutZkL/U4sx9P KEEFAL+GWvipycL4Z2hQqGs4KGxvht+5Aez2ZB1QLUaVKlN5Hp8W1PqtgwBKYRACm9svr3OVvct +u7R2MonGnq/2geL5mmsG6pMBe+LNOmjOt9vUUK+zTLo5LA6sCq5fliRAzhtBNIAI9C6KP+1jSM Qh6XUzYUfg44HtkTl9hY7ymwuLBRavYMT/XBCzDbHPCkOhDAL3erJM0lM2NSziMvW/zlpkOLDh3 FXnzZIulzY+eY0XZcxCncuM4fo5TVG95nOu+Yx/rStFaoO0ne/7WOYcAF+KbTcCO6g7L/dnWpd4 pfDyEpcEXf9K61QYiAN4bSI7MMLPcG1tVjJN6A4BmHJWodflWQuH3h2MGSyuSVOir+2LPLA+VVY p/sHP6gchAT1DwWhboMRrLAEvOcHJXaCcA+9z2KITLgUPO2jKcIYMMdnSBRasD+ccs1Ij2RhXZe tX1zzSS7N3nsXHQ== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1781015785180158500 Signed-off-by: Marc-Andr=C3=A9 Lureau --- hw/input/hid.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/input/hid.c b/hw/input/hid.c index 467ba8f14f3..d386e52585c 100644 --- a/hw/input/hid.c +++ b/hw/input/hid.c @@ -25,6 +25,7 @@ =20 #include "qemu/osdep.h" #include "ui/console.h" +#include "ui/input.h" #include "qemu/timer.h" #include "hw/input/hid.h" #include "migration/vmstate.h" @@ -470,7 +471,7 @@ int hid_keyboard_write(HIDState *hs, uint8_t *buf, int = len) if (hs->kbd.leds & 0x02) { ledstate |=3D QEMU_CAPS_LOCK_LED; } - kbd_put_ledstate(ledstate); + qemu_input_handler_set_led(hs->s, ledstate); return 1; } return 0; --=20 2.54.0 From nobody Tue Jun 9 23:08:21 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=1781015787; cv=none; d=zohomail.com; s=zohoarc; b=ELHJyMTXXmsJ0yZMkH40+CYMl+Vt6H/BaylOZXxzSZsDEJlSS50qfeK92vIuPUUBnHcdqt+s/cALLQUBRNY0OZjzpFLqskeGCe/7v2qiUtvPIPKdeQtRT7RnrKUI9rjujNQbxqJzSCPeOAOImYLkQLGT5VBPS2gIbTrAoxTRNOQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781015787; 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=v/g5jfTi2AD+hzkWtUUyAkv+WqHTfhObwkFPbXFeULU=; b=DMNMZA8hsWYu75sh5F8qFHDibi+6EbJsep/jDQVk+m/gI+6eA96Q9ZW6ehcd9jKPpJnNJC0NPmzY4lAikcbUKk65S9TqamN5kuqS34aOZqdpLONc7j24HgkcwX15EdBdiR4iPLJ9cz5YESj8+ycZK282sd2Vpn0Y/8C+kD8xuXY= 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 1781015787173956.2214549579962; Tue, 9 Jun 2026 07:36:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWxYf-0003Qj-Lw; Tue, 09 Jun 2026 10:36: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 1wWxYe-0003Gr-A5 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:36:00 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wWxYc-0007MR-G7 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:35:59 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-278-XZzmiqJyM9GLFtVcWaNnVQ-1; Tue, 09 Jun 2026 10:35:54 -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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 9C20D1977017; Tue, 9 Jun 2026 14:35:53 +0000 (UTC) Received: from localhost (unknown [10.44.24.21]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 9B1D53008DF2; Tue, 9 Jun 2026 14:35:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781015757; 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=v/g5jfTi2AD+hzkWtUUyAkv+WqHTfhObwkFPbXFeULU=; b=cNXOwWog1rimx+Mh8e3HdYrHw6TyH/vkFabDPPCQAc1XxynTCwj+hE067JCEmyyPJxmzjh w/4Yb1rKHC+tbMaZlYgwHU9R8OxYUEuRbYigh0QiXkTmfasGhAZ7DhofnNVTyqzLa69jb7 HVUmj9m/P+xSpJf+QYkodMPUxmLJ/mc= X-MC-Unique: XZzmiqJyM9GLFtVcWaNnVQ-1 X-Mimecast-MFC-AGG-ID: XZzmiqJyM9GLFtVcWaNnVQ_1781015753 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Tue, 09 Jun 2026 18:34:32 +0400 Subject: [PATCH 13/17] hw/input/virtio-input-hid: use qemu_input_handler_set_led() for LED state MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-ui-input-v1-13-42615deb818e@redhat.com> References: <20260609-ui-input-v1-0-42615deb818e@redhat.com> In-Reply-To: <20260609-ui-input-v1-0-42615deb818e@redhat.com> To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Paolo Bonzini , Richard Henderson , "Michael S. Tsirkin" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=877; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=FxrGAwrXr2ksjrfGyAaKoh9XtsL3mW3yFUW3RWHGSfA=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqKCR5xNLAV3G/z0OsXLwl9gitrg5VhzPPLryUj Q6ePmMG3FiJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCaigkeQAKCRDa6OEJdZac 5R4rEACjmcSjjVR1HuzkSepegQFoTtdDws0jRDhfjeAXY2H5A+wRzXCMSF6wxPeOBuMynKUkMxg iq7n/yx3bRpFduJOVaxsbo4UGehW/ez/2rEcvvJCiBvrsTBFKKNdbfGnFOKiS3Wqzz4p8nqjo2Y tIhTw6CWpy/GBFPS1waizM4r+dD/m1AcJFinxlsa30jjyPrgl9WK5T7Jn5BcP3Z+TcSV71iLVeD 4Xtzd3t7HAEmtaqWLSTuM3cpo2gsgGkIbrjG5Nex0xJlT2PTqCEDoMjQD9k53IqCVJ5Xzm2U0lq uCcPDwmWORG03hW4sH9MrvTuLXwcr1+flvoSvp7UD5WU/vDoSLnjjV3epyJl72Nwufj1+s3i+TS UOk/6+yVATXuQtMUeDC3AYb5CDDfAu4O3hnjKDMekNkZZ1OYqiazMzKyo1HLU58jSMhspzI+9gz a2C5AEbJhGxj3IHDGB5Ic+eIXEbPodHLFWW9gcard1UKFfyQPRaSvd5Nh01vMIyiAAIQCHACiJP l26Pd9zJd8hQi73QJxxY8Z3bVBV2NZ0PADr4X73/uoTsPd7vGHIaMGIYcR2ZL94nVdSQE4wKhKa /KdDjdlio7EGnQhK9+LqGR+45me4IUQWMjcmpey479ZbO8AHqTIV/OgEIZnTW0Qk/LGo7pQhnsR iZym3cpUH75f16A== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 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.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1781015789247158500 Signed-off-by: Marc-Andr=C3=A9 Lureau --- hw/input/virtio-input-hid.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/input/virtio-input-hid.c b/hw/input/virtio-input-hid.c index 73423ac0c73..d3062809a13 100644 --- a/hw/input/virtio-input-hid.c +++ b/hw/input/virtio-input-hid.c @@ -12,6 +12,7 @@ #include "hw/virtio/virtio.h" #include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-input.h" +#include "ui/input.h" =20 #include "ui/console.h" =20 @@ -208,7 +209,7 @@ static void virtio_input_hid_handle_status(VirtIOInput = *vinput, } else { vhid->ledstate &=3D ~ledbit; } - kbd_put_ledstate(vhid->ledstate); + qemu_input_handler_set_led(vhid->hs, vhid->ledstate); break; default: qemu_log_mask(LOG_GUEST_ERROR, --=20 2.54.0 From nobody Tue Jun 9 23:08:21 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=1781015774; cv=none; d=zohomail.com; s=zohoarc; b=Nr0a880kWG1XMoOpAAKB4GhWEeLMwzzsxalJVQ61HirYT3dzpzJjCXvP/znKGewU6vl6Rn3PrsEzux7dSOLnRwvYswJPw6ZP1qxyISJljzCW3+1CLk7rQ2/BGG7+YpSP2tKyOnPJgaYBGkzkNq/kb0o9EDgTu5L1Y29Xf3iufJE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781015774; 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=4Y8EBryG7J2AwkW2FnwDImop49e0w/lo+Q8d2a9jPH4=; b=JjXoK04kp8CujZkmssuo0O9K/sPQ2xGvlY2IU+venERvFnW8tXa26ttwQiXhwH+gpmP0CJ9BjRy+LESR3VKp6hGGL88YP0XIihYO6tqDIE3FhU+njf0QljhSC303BEsuh3jqPwFz+IRIpjpKvMMVh+VCXlMrDrPXiKv7WOEGP3I= 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 178101577442426.23687131479892; Tue, 9 Jun 2026 07:36:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWxYm-0004Bm-Hf; Tue, 09 Jun 2026 10:36:08 -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 1wWxYk-0003z8-TV for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:36:07 -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 1wWxYi-0007So-L9 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:36:06 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-623-SDABec3MNe2pllWkMVmbPQ-1; Tue, 09 Jun 2026 10:35:59 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id A1A75195F16D; Tue, 9 Jun 2026 14:35:58 +0000 (UTC) Received: from localhost (unknown [10.44.24.21]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 564B71800583; Tue, 9 Jun 2026 14:35:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781015763; 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=4Y8EBryG7J2AwkW2FnwDImop49e0w/lo+Q8d2a9jPH4=; b=Trw9fIWgJeNaYiAANdceqfAt7dAQ+mw2cdJ6cWAXUGhvidAK2WIAkpFsMMVdRT8dkDqFFJ 1itRWQWKrOTF1PZqz15ID4BxTAHjNK3jh1/wRgNHBzm5YjeK0ODBW7CZJEI1uKaz/O/fL7 khrqwSGgv8VfrgBe28qUyQnuqirWwAE= X-MC-Unique: SDABec3MNe2pllWkMVmbPQ-1 X-Mimecast-MFC-AGG-ID: SDABec3MNe2pllWkMVmbPQ_1781015758 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Tue, 09 Jun 2026 18:34:33 +0400 Subject: [PATCH 14/17] ui/vnc: switch LED handling to Notifier-based input API MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-ui-input-v1-14-42615deb818e@redhat.com> References: <20260609-ui-input-v1-0-42615deb818e@redhat.com> In-Reply-To: <20260609-ui-input-v1-0-42615deb818e@redhat.com> To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Paolo Bonzini , Richard Henderson , "Michael S. Tsirkin" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=4414; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=9EvPEBUMG8vTwC/626zYm+fU5TkcgcDC/RHnOIaj7XQ=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqKCR5coeyNYDPv55wRMLHnbwkfuJixi84xSfDB PAvGw42qt+JAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCaigkeQAKCRDa6OEJdZac 5YcAEACKAhbMnntnv/HrzWciY2NQtd8qEXc3rw/Fq6klHhhKbPfFlGGGNqW8RWbpohh9vBg/ZF7 hcB7xFlh/8+AwvFLsAORDlAOyp4c4LY9V/Kpm+v7UcnnOW/xHwOduTTSRmv3lEeuYIIz7A9eAFo XwHLF9jDFMfxvRafKaIY87UqWn85S5x7Rm/RACjyJMtD8U/NBDOXH0TeV+Gt+fOJrF+pZTPEoLE wFqFObwoP/xlOd5Uh8CLJSin4abOU706XVyXgo/zvChjCFkzacp2sPjnzDgOSxWnaltmggmj/8/ Xz67AwlztaLoXglv3CvU0V1jRIrKhSx9h+oG+7QfRGNj4ndoBhSA9hx2AFImciYWmpVYbwoB1hR 179Bq2n6s3kGH1VoGJJXQtpW9/ap7GOdLx+jz7g37+ksObzyefY1+xOnCzS71ZBu95FKOJdrblN fQg8774okMmKFkr2FY9xZirTM/H+T30kVQe4TTi9c+xrTt6+JNlr65dhhjHzaSPt1VMZmH3hcjJ w17EQbLPvKs/cigCxLxFMgfbXXgMe7xDfeukF4F1b8U02AfflEmNIRvESwFxynQ+Gusc6xLsf0A xugRMJ6wiaKA8Ur98jEGubDh32eQiYcfKDU3Kb/BJrt/gtxRDbecjtRRAEnpVTcKd+LEX7IXp5/ 9GUybLKFEZ9aC+w== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 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: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 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_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1781015775918154100 Replace QEMUPutLEDEntry with an embedded Notifier in VncDisplay. Use qemu_input_led_notifier_add/remove instead of the old qemu_add/remove_led_event_handler. Signed-off-by: Marc-Andr=C3=A9 Lureau --- ui/vnc.h | 2 +- tools/qemu-vnc/input.c | 49 +++++++++++++++++-----------------------------= --- ui/vnc.c | 11 ++++++----- 3 files changed, 24 insertions(+), 38 deletions(-) diff --git a/ui/vnc.h b/ui/vnc.h index c8d87cd5301..88293ef4971 100644 --- a/ui/vnc.h +++ b/ui/vnc.h @@ -147,7 +147,7 @@ struct VncDisplay DisplayChangeListener dcl; kbd_layout_t *kbd_layout; int lock_key_sync; - QEMUPutLEDEntry *led; + Notifier led_notifier; int ledstate; QKbdState *kbd; QemuMutex mutex; diff --git a/tools/qemu-vnc/input.c b/tools/qemu-vnc/input.c index 6fb73b31248..b96ff741308 100644 --- a/tools/qemu-vnc/input.c +++ b/tools/qemu-vnc/input.c @@ -13,58 +13,43 @@ #include "trace.h" #include "qemu-vnc.h" =20 -struct QEMUPutLEDEntry { - QEMUPutLEDEvent *put_led; - void *opaque; - QTAILQ_ENTRY(QEMUPutLEDEntry) next; -}; - static NotifierList mouse_mode_notifiers =3D NOTIFIER_LIST_INITIALIZER(mouse_mode_notifiers); -static QTAILQ_HEAD(, QEMUPutLEDEntry) led_handlers =3D - QTAILQ_HEAD_INITIALIZER(led_handlers); +static NotifierList led_notifiers =3D + NOTIFIER_LIST_INITIALIZER(led_notifiers); =20 /* Track the target console for pending mouse events (used by sync) */ static QemuConsole *mouse_target; =20 -QEMUPutLEDEntry *qemu_add_led_event_handler(QEMUPutLEDEvent *func, - void *opaque) +/* + * The D-Bus Keyboard.Modifiers property uses the same + * bit layout as QEMU's LED constants. + */ +static guint modifiers; + +void qemu_input_led_notifier_add(Notifier *n) { - QEMUPutLEDEntry *s; + notifier_list_add(&led_notifiers, n); +} =20 - s =3D g_new0(QEMUPutLEDEntry, 1); - s->put_led =3D func; - s->opaque =3D opaque; - QTAILQ_INSERT_TAIL(&led_handlers, s, next); - return s; +void qemu_input_led_notifier_remove(Notifier *n) +{ + notifier_remove(n); } =20 -void qemu_remove_led_event_handler(QEMUPutLEDEntry *entry) +int qemu_input_get_led(QemuConsole *con) { - if (!entry) { - return; - } - QTAILQ_REMOVE(&led_handlers, entry, next); - g_free(entry); + return modifiers; } =20 static void on_keyboard_modifiers_changed(GObject *gobject, GParamSpec *pspec, gpointer user_data) { - guint modifiers; - QEMUPutLEDEntry *cursor; - modifiers =3D qemu_dbus_display1_keyboard_get_modifiers( QEMU_DBUS_DISPLAY1_KEYBOARD(gobject)); =20 - /* - * The D-Bus Keyboard.Modifiers property uses the same - * bit layout as QEMU's LED constants. - */ - QTAILQ_FOREACH(cursor, &led_handlers, next) { - cursor->put_led(cursor->opaque, modifiers); - } + notifier_list_notify(&led_notifiers, NULL); } =20 void qemu_add_mouse_mode_change_notifier(Notifier *notify) diff --git a/ui/vnc.c b/ui/vnc.c index 253b1a9f634..3b6765393e0 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -1820,9 +1820,10 @@ static void vnc_led_state_change(VncState *vs) vnc_flush(vs); } =20 -static void kbd_leds(void *opaque, int ledstate) +static void kbd_leds(Notifier *notifier, void *data) { - VncDisplay *vd =3D opaque; + VncDisplay *vd =3D container_of(notifier, VncDisplay, led_notifier); + int ledstate =3D qemu_input_get_led(vd->dcl.con); VncState *client; =20 trace_vnc_key_guest_leds((ledstate & QEMU_CAPS_LOCK_LED), @@ -3489,8 +3490,7 @@ static void vnc_display_close(VncDisplay *vd) g_free(vd->tlsauthzid); vd->tlsauthzid =3D NULL; if (vd->lock_key_sync) { - qemu_remove_led_event_handler(vd->led); - vd->led =3D NULL; + qemu_input_led_notifier_remove(&vd->led_notifier); } #ifdef CONFIG_VNC_SASL if (vd->sasl.authz) { @@ -4221,7 +4221,8 @@ static bool vnc_display_open(VncDisplay *vd, Error **= errp) #endif vd->lock_key_sync =3D lock_key_sync; if (lock_key_sync) { - vd->led =3D qemu_add_led_event_handler(kbd_leds, vd); + vd->led_notifier.notify =3D kbd_leds; + qemu_input_led_notifier_add(&vd->led_notifier); } vd->ledstate =3D 0; =20 --=20 2.54.0 From nobody Tue Jun 9 23:08:21 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=1781015801; cv=none; d=zohomail.com; s=zohoarc; b=C0BG2Oyk/SR/tE6AHTbXtfYimYBSSzEtdvXDyCGBDHw9hHjFqk04K+Q86fxGQe2pOBqNDnlMwoF4aCevpHhMRl/uExXZyme7ls3rtPdeQ8gNM+vlbfzu+XHpVV+pHMoZ5trY4rViKf2iNYcZFeYxp0ePnU6/xAns+pLRJy5PSRI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781015801; 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=FjXNi19ZJmavNuiphzSk5VdGv3UJju9zSxL7sC1u9eQ=; b=U9j1yAjok93ufi2waJ4cgX6+Hb973nR9oS758Yc86PDgBGy3nkf/lILQ8zirsdwqHFuglbAM4crrmhQHxy7aYWDy7ZJVhv8jokLItgfq2xKRPfzRf7KjTi6t2P4jW6a68GRU0aY3Q6R2xvas38R/aswPa4aTx6I5xh1oUUdqM1Q= 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 178101580190517.008720357346192; Tue, 9 Jun 2026 07:36:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWxYo-0004NE-NA; Tue, 09 Jun 2026 10:36:10 -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 1wWxYm-0004B9-9k for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:36:08 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wWxYk-0007UM-KG for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:36:07 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-280-yu02C5j3NIeLyjseaF0Tgw-1; Tue, 09 Jun 2026 10:36:04 -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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 5D023195DE73; Tue, 9 Jun 2026 14:36:03 +0000 (UTC) Received: from localhost (unknown [10.44.24.21]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 70DEB3008B39; Tue, 9 Jun 2026 14:36:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781015766; 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=FjXNi19ZJmavNuiphzSk5VdGv3UJju9zSxL7sC1u9eQ=; b=LgYYvXVW5wUSM2aKRF8Kz/olgEORJppufwlPAgq/Ujp34lASA9ABr5kJMptQhJBpla9yFp FmbwzJ9IMnkr/L1KtNmdOGAQglBhfUshlKZNY0BpQGjZxQ2fljiXRz15LEERSUotxtDd5z D4rUnoQlUqBBG2U4tRpVf4Rkw/8D6b0= X-MC-Unique: yu02C5j3NIeLyjseaF0Tgw-1 X-Mimecast-MFC-AGG-ID: yu02C5j3NIeLyjseaF0Tgw_1781015763 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Tue, 09 Jun 2026 18:34:34 +0400 Subject: [PATCH 15/17] ui/spice: switch LED handling to Notifier-based input API MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-ui-input-v1-15-42615deb818e@redhat.com> References: <20260609-ui-input-v1-0-42615deb818e@redhat.com> In-Reply-To: <20260609-ui-input-v1-0-42615deb818e@redhat.com> To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Paolo Bonzini , Richard Henderson , "Michael S. Tsirkin" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=1471; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=mhLxwyrNkZYzaYRF+D3AbBaHWTrkuxc49OGXzxkMtOY=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqKCR5P+3O21DYskjRVNqF5wB0XKEO9FUzx03TU AIbpDg+ZgSJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCaigkeQAKCRDa6OEJdZac 5SdcD/9xUN5UFnKkBbWBQ82TOhoh9V034daxU5DTpgskekQmeCNvZwdfClDV5LvG3eVX0KiRORw Pbsyagop6U9eL69gMIu3f7kKTzSCWVd+/1bXb4DVSkkEYUMlHRp+zeNysU45/LMMgkBZh1XaqdR wkhpgmNdAam8r4x64VfCCk2QHgNcL16Imd+tOOxWIacLw5hUefmzfIuT8lCR47HfUqNTNZ0zDIc KS4a0ziZN6GgEJ1Jxqh5HNmk9/bv/O2L9cHQ3L8Bf1wuycd+yklR9FMYIxjwLLMk0jdJEu6TFdI KWqnnHgrlWRRvapeJoGZk+KbqB3rN5sLFWq3we6khIMVn+oUSICeG5PfTIYK7wAzsFiprvd/1QR nykCGiLrez8tOsp1HCVXykQXiPTrnnQ9Ofm+Q0MZlCtR+NbmR3EtXQ2TqTdzq88XPqL38WlfAS3 DK4G1UAcAe7ttulvpWvKzxLE1oHWNvnpM0EStXqUobbObzaqJ165SoO8PnCyWzZAGtwd6dw12Bx GoZiSGwv/vR10gdEM0g4anA3TZl6ydJ36WDpHXQj+Dlgw9WPTFbKm5DDny2Vs6/ugWuCTfxgVHt piiEhwL1NBPbVycxMVqB5EQuZWmaIp5uYF088UxGr38X9cbzbvs2+loQ0+QPouHTI7Lvd7D6yfL t88ru4CW/e5L3rg== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 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.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1781015804386154100 Signed-off-by: Marc-Andr=C3=A9 Lureau --- ui/spice-input.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ui/spice-input.c b/ui/spice-input.c index f0bb915fd77..f5329b8aed9 100644 --- a/ui/spice-input.c +++ b/ui/spice-input.c @@ -33,6 +33,7 @@ typedef struct QemuSpiceKbd { int ledstate; bool emul0; size_t pauseseq; + Notifier led_notifier; } QemuSpiceKbd; =20 static void kbd_push_key(SpiceKbdInstance *sin, uint8_t frag); @@ -86,9 +87,11 @@ static uint8_t kbd_get_leds(SpiceKbdInstance *sin) return kbd->ledstate; } =20 -static void kbd_leds(void *opaque, int ledstate) +static void kbd_leds(Notifier *notifier, void *data) { - QemuSpiceKbd *kbd =3D opaque; + QemuSpiceKbd *kbd =3D container_of(notifier, QemuSpiceKbd, led_notifie= r); + /* spice has no associated console support */ + int ledstate =3D qemu_input_get_led(NULL); =20 kbd->ledstate =3D 0; if (ledstate & QEMU_SCROLL_LOCK_LED) { @@ -247,7 +250,8 @@ void qemu_spice_input_init(void) kbd =3D g_malloc0(sizeof(*kbd)); kbd->sin.base.sif =3D &kbd_interface.base; qemu_spice.add_interface(&kbd->sin.base); - qemu_add_led_event_handler(kbd_leds, kbd); + kbd->led_notifier.notify =3D kbd_leds; + qemu_input_led_notifier_add(&kbd->led_notifier); =20 pointer =3D g_malloc0(sizeof(*pointer)); pointer->mouse.base.sif =3D &mouse_interface.base; --=20 2.54.0 From nobody Tue Jun 9 23:08:21 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=1781015784; cv=none; d=zohomail.com; s=zohoarc; b=XDlX95BBIbTe2FZeT+2oc3JzVkLe//RKTW69LCqC9CiS83hXARkPq21uzLh2QWhnxjK1brYxlJT5cVU3O7zOO+qX8wYGbjKPZLLCsmuEJDZdazWxcsRs/tSbmfP97B+a3xILBnkUhwcpsUXeaReW0LRZ4OrQvLJopS9/+fOquyk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781015784; 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=Qx38nzR7RAS4RV+BWU9P9B+GDyhdYUd+EO5NmH4hnuA=; b=PhNuKYb102DD5+mlaUTES9/3+65988WzBVb1X5Ja/tIZ2agAaiTGBUZP8ds/yV8TdlW4LuIsJQtwJh68/dGD0hXO6e9+6LCDsCRUjFXGoUtrlNgs8oadFPQGCJtqAHV1MZABZbvSMi9OFWtP5LIeZeqSUrl8mN6mwp4rWa+rltc= 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 1781015784969717.1781895148807; Tue, 9 Jun 2026 07:36:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWxYu-00053Q-G6; Tue, 09 Jun 2026 10:36:16 -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 1wWxYs-0004n7-Gk for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:36:14 -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 1wWxYq-0007Xu-6i for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:36:13 -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-81-gDve1isCN9u-96MgcTDWew-1; Tue, 09 Jun 2026 10:36:09 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (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 17D12185CEB0; Tue, 9 Jun 2026 14:36:08 +0000 (UTC) Received: from localhost (unknown [10.44.24.21]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 302271800480; Tue, 9 Jun 2026 14:36:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781015771; 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=Qx38nzR7RAS4RV+BWU9P9B+GDyhdYUd+EO5NmH4hnuA=; b=CynJf/H/ohgY1WLhHpA6bmdiwQdsj+GLtJJOkRTLuBI+ag97OpuxQi6ukgDXZUlN5zRWXR QSuDKyY1BpjkCm7m1necS4jS3vEtFbzeZJwuFz1zD7rPQOGvKdYjHVS4FhdWhfJZL4Moxw CyChP2CXAdb5Pdk/Cjsbdv2dIWB+GDU= X-MC-Unique: gDve1isCN9u-96MgcTDWew-1 X-Mimecast-MFC-AGG-ID: gDve1isCN9u-96MgcTDWew_1781015768 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Tue, 09 Jun 2026 18:34:35 +0400 Subject: [PATCH 16/17] ui/dbus: switch LED handling to Notifier-based input API MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-ui-input-v1-16-42615deb818e@redhat.com> References: <20260609-ui-input-v1-0-42615deb818e@redhat.com> In-Reply-To: <20260609-ui-input-v1-0-42615deb818e@redhat.com> To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Paolo Bonzini , Richard Henderson , "Michael S. Tsirkin" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=1963; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=2C4B4AqpW8MpGJ6frIAWY552nHkk+HJpvh9goLxBKjs=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqKCR5RjtCYokON6pZ4rjpYwMTDSoK7yMMPSgDB gCu6AZ2YDiJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCaigkeQAKCRDa6OEJdZac 5ctnD/9TqCsJFVj6zplky58v6wEtBZG5xikLqDA/0GWtfCNz9VnLETrkA3SYS9dtiWgfc96k5ad MvGyjc7MFJpZ2vJtWbaNg2iDQ2G3p0GbLRAU9tnSJHrYKSpHh66A73d9n8Cwx+Z/aOrwWEzk2RR LcAUaGMXOS0Zq05lcjaq9KGTXdmI2gOFwaMBN+9NMXLKQHPQ8PCcVDiMRqov40Q0QA+eiunz3gV q+ITqRyZC4WM2MczhPgjSbWqMm4soEqlxNo1pN5Yf+/kvlfCoyLnCi9xtY958HCHYej1+eREeB5 qBtgxvw4T3KMUnrBV1N6PSoCMaSqyUG+0jsJzCumAIukCKzgZRSVCzZtjS0+q9dD7wAwYU06tKK p7UFA8oGHUu2g7ssyX3Q2vI0bVs1bx8WFqx2pnwcvesUdyY15X4AOOcnB59ka3GCddawQ/AqAbi 7EwGUAgAkVY8tYXZ53BsSop04NebpWlISpf78/FuXsBsbpTtgav0tGHmbkinyBLxh8o39tQ7WvO +E3M61V9/fS0n6DUj9wYiWiKiGdltOJKu1Cwr+M24EyfmkthFXHSBDz2g+fRS9W5x4WVtsMa+gI tjQD4LkKYo2PrqGST/SqFpc55VKJyLPVlO9Rda8Ev4AE+FpD7yWI2BDaOP3BBNuRe32oaPl7JT5 6faMZAOyKkUCXew== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 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_H3=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: 1781015785181158500 Signed-off-by: Marc-Andr=C3=A9 Lureau --- ui/dbus-console.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ui/dbus-console.c b/ui/dbus-console.c index 21eceb24362..6ff44881895 100644 --- a/ui/dbus-console.c +++ b/ui/dbus-console.c @@ -46,6 +46,7 @@ struct _DBusDisplayConsole { =20 QemuDBusDisplay1Keyboard *iface_kbd; QKbdState *kbd; + Notifier led_notifier; =20 QemuDBusDisplay1Mouse *iface_mouse; QemuDBusDisplay1MultiTouch *iface_touch; @@ -150,6 +151,7 @@ dbus_display_console_dispose(GObject *object) { DBusDisplayConsole *ddc =3D DBUS_DISPLAY_CONSOLE(object); =20 + qemu_input_led_notifier_remove(&ddc->led_notifier); qemu_console_unregister_listener(&ddc->dcl); g_clear_object(&ddc->iface_touch); g_clear_object(&ddc->iface_mouse); @@ -367,9 +369,11 @@ dbus_kbd_release(DBusDisplayConsole *ddc, } =20 static void -dbus_kbd_qemu_leds_updated(void *data, int ledstate) +dbus_kbd_qemu_leds_updated(Notifier *notifier, void *data) { - DBusDisplayConsole *ddc =3D DBUS_DISPLAY_CONSOLE(data); + DBusDisplayConsole *ddc =3D container_of(notifier, DBusDisplayConsole, + led_notifier); + int ledstate =3D qemu_input_get_led(ddc->dcl.con); =20 qemu_dbus_display1_keyboard_set_modifiers(ddc->iface_kbd, ledstate); } @@ -577,7 +581,8 @@ dbus_display_console_new(DBusDisplay *display, QemuCons= ole *con) =20 ddc->kbd =3D qkbd_state_init(con); ddc->iface_kbd =3D qemu_dbus_display1_keyboard_skeleton_new(); - qemu_add_led_event_handler(dbus_kbd_qemu_leds_updated, ddc); + ddc->led_notifier.notify =3D dbus_kbd_qemu_leds_updated; + qemu_input_led_notifier_add(&ddc->led_notifier); g_object_connect(ddc->iface_kbd, "swapped-signal::handle-press", dbus_kbd_press, ddc, "swapped-signal::handle-release", dbus_kbd_release, ddc, --=20 2.54.0 From nobody Tue Jun 9 23:08:21 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=1781015799; cv=none; d=zohomail.com; s=zohoarc; b=juKSgdAO4mchNaVf0rP5y2xb73q/kK0CARWQM1MFKSwvDTBt63RVVEd93Fdg8GjGYQUDgmNamLebcEBiK3ZSatxOCiROr9N1aTel1GVzm1gGfFkd0+dkTQUTdJ5U8kCFlyHwM2NhZv9YxN3X6m/z8sJBbCMOEIKZt27ZNTI9N4k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781015799; 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=DjnAxC/Mc7CJiqlOeCM3RQtg+Isi+MArKrw26TJllhg=; b=m98EqK8dtdynFVjqG9vpFfNKcpCWTM6WQG/9ODtEIi216CroI1yBbFve7YwA4Fiov3JM/ZCIs0vx9R4qCdLV2G3pF4kXXJkDLWpcbIX+lvx8CgK/7BkUJrEYiT6BT6i4rMf9j8kM/CE0/xEntqbESJE0i9FnVpF4AmODgrwJW8g= 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 1781015799381323.52597500356217; Tue, 9 Jun 2026 07:36:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWxZ1-0005Yu-41; Tue, 09 Jun 2026 10:36:23 -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 1wWxYy-0005TP-LX for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:36:20 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wWxYx-0007Yh-5Y for qemu-devel@nongnu.org; Tue, 09 Jun 2026 10:36:20 -0400 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-528-B5KdD12sPSuB30pBcfuKxQ-1; Tue, 09 Jun 2026 10:36:14 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 637C2195C268; Tue, 9 Jun 2026 14:36:13 +0000 (UTC) Received: from localhost (unknown [10.44.24.21]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id DF40D1954B02; Tue, 9 Jun 2026 14:36:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781015778; 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=DjnAxC/Mc7CJiqlOeCM3RQtg+Isi+MArKrw26TJllhg=; b=b/IFUvPUF6bR+yL55Snx9rhYtSLdLYihDKBlXg/p/E5BlEUMwBCnD/Y/XUA6GDnHmbM15L 1vL5FB8uhQQ9IouhKirBUMbZHyVN1U5WmbBnMqhDIbh6eJX6/EM6ctmsovH2vRskfiQkVO msrKlYSwOBgHkTKfbk9z7W3HmfmFt9M= X-MC-Unique: B5KdD12sPSuB30pBcfuKxQ-1 X-Mimecast-MFC-AGG-ID: B5KdD12sPSuB30pBcfuKxQ_1781015773 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Tue, 09 Jun 2026 18:34:36 +0400 Subject: [PATCH 17/17] ui/input: remove old LED handler broadcast queue MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-ui-input-v1-17-42615deb818e@redhat.com> References: <20260609-ui-input-v1-0-42615deb818e@redhat.com> In-Reply-To: <20260609-ui-input-v1-0-42615deb818e@redhat.com> To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Paolo Bonzini , Richard Henderson , "Michael S. Tsirkin" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=2215; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=NHaVAaoIWOcPRSUWYUSpmvX80VOfS5rhWCqfzhbLc/A=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqKCR5+wamHn/U3GWgK/fyG8WzC72DYLJrVq/Ii f9PbSDCsy2JAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCaigkeQAKCRDa6OEJdZac 5XjbD/95rNhc6ceJd49DQQ4oejkRlP9MaFbb488PDCTWGM4htQA9vQWlwpNyMmK71gD5bzC9MWq aAbgke64qnyFhEdnWLWKQIcKbihPLCNvIlxcFRb6eaMYRiphvvTp25qy9HzBaMHWoiWPuhoCzdM jmQWAEKZjB+K+1PX4pFygOYXHXbg5SPowOIjNDiy87IYEpi/JPy9nzYrysC5KF5pYDFAt//NVgf 8r0TF5Imy50Sc2Dq6JGhmfvgGOHJ/JjMYNwDgtzzYF/HAKWpQEh1gfewfoOGzueeUS7XjgShjQ/ U3z9uxNV2VdKroZki1HCp9VsReKuA7cQpZkqmUQbdyqJtZrLgQbTDUNqGQFgXV7GL8rfUPovK1R aeNEBK3qBPAA6ropkiTCTlJ6WoJYSp0636nJSY8Ism1uFjJQVJcqySYFPs77Ep+BzbSobPhM5Q9 TmCEHuOtyjM1DQd7kPjiN8w50hG+8tg6r3vPlPzAxWem8AIyhwFCzzpDZENr1MQn4U7Ync6mRfw DWmZ8opG27y7s5EXRIWxDI2h7BsAIJQ0BzwGp8LKtwci2kv7MS7eEQUl43lP6Q/2s7SKTO7fxHI Q6juojfragt+XAvKa4avC/n6OOEPgAbHekG7YNor3nN3Bi9uBb8bY39ll9cQE0ZcYzsTzwPY/9Z NErSgGB4Fm111Xw== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 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.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: 1781015800400154100 Signed-off-by: Marc-Andr=C3=A9 Lureau --- include/ui/console.h | 9 --------- ui/input.c | 40 ---------------------------------------- 2 files changed, 49 deletions(-) diff --git a/include/ui/console.h b/include/ui/console.h index 0299ed4b566..b7bfecb6ee9 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -54,15 +54,6 @@ enum qemu_color_names { #define ATTR2CHTYPE(c, fg, bg, bold) \ ((bold) << 21 | (bg) << 11 | (fg) << 8 | (c)) =20 -typedef void QEMUPutLEDEvent(void *opaque, int ledstate); - -typedef struct QEMUPutLEDEntry QEMUPutLEDEntry; - -QEMUPutLEDEntry *qemu_add_led_event_handler(QEMUPutLEDEvent *func, void *o= paque); -void qemu_remove_led_event_handler(QEMUPutLEDEntry *entry); - -void kbd_put_ledstate(int ledstate); - bool qemu_mouse_set(int index, Error **errp); =20 /* keysym is a unicode code except for special keys (see QEMU_KEY_xxx diff --git a/ui/input.c b/ui/input.c index 99a1090f8c3..b6bbfa8f128 100644 --- a/ui/input.c +++ b/ui/input.c @@ -689,46 +689,6 @@ void qemu_input_touch_event(QemuConsole *con, } } =20 -struct QEMUPutLEDEntry { - QEMUPutLEDEvent *put_led; - void *opaque; - QTAILQ_ENTRY(QEMUPutLEDEntry) next; -}; - -static QTAILQ_HEAD(, QEMUPutLEDEntry) led_handlers =3D - QTAILQ_HEAD_INITIALIZER(led_handlers); - -QEMUPutLEDEntry *qemu_add_led_event_handler(QEMUPutLEDEvent *func, - void *opaque) -{ - QEMUPutLEDEntry *s; - - s =3D g_new0(QEMUPutLEDEntry, 1); - - s->put_led =3D func; - s->opaque =3D opaque; - QTAILQ_INSERT_TAIL(&led_handlers, s, next); - return s; -} - -void qemu_remove_led_event_handler(QEMUPutLEDEntry *entry) -{ - if (entry =3D=3D NULL) { - return; - } - QTAILQ_REMOVE(&led_handlers, entry, next); - g_free(entry); -} - -void kbd_put_ledstate(int ledstate) -{ - QEMUPutLEDEntry *cursor; - - QTAILQ_FOREACH(cursor, &led_handlers, next) { - cursor->put_led(cursor->opaque, ledstate); - } -} - void qmp_send_key(KeyValueList *keys, bool has_hold_time, int64_t hold_tim= e, Error **errp) { --=20 2.54.0