From nobody Thu Apr 25 08:56:39 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+47969+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+47969+1787277+3901457@groups.io; arc=fail; dmarc=fail(p=none dis=none) header.from=outlook.com Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1569345821518301.0240141129158; Tue, 24 Sep 2019 10:23:41 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id tC4zYY1788612xsQ1xM6e9pp; Tue, 24 Sep 2019 10:23:40 -0700 X-Received: from EUR01-HE1-obe.outbound.protection.outlook.com (EUR01-HE1-obe.outbound.protection.outlook.com [40.92.65.44]) by groups.io with SMTP; Tue, 24 Sep 2019 05:46:17 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F5DEBxkl2RyUPNeg2Enx2fbWif/XZF3TTfxirI98wQz/WAb5ogSFMCfjKS9xghXke4N4lBGAzkYWni4iixQan32NXrFToNqfOA2J77vJ7t4AE0Dm//t+syEtV8/gn+hLcGe4n9qC0Rdh1Ix0xCg8LrQm0YXL5Zmm7zTTBmuMIlG6wRHBlcpIzhevttU27R3QMVA+h49boRccx74JqSm5VXa9onxv5iABHMH33irWfvKeGOiNsoAbWUjqmfPpsc75gEeXol+pFp4jbunjc7k6bH2tgX7IzVsmS5D4GXwyLwqYnWMRWi3PllQ44JoFwxMqkBPRVPIupdlSFpDGZhpZ0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xMRH1pOftwSFtTFxpoMBtnKEu0StIgP1KAW1IglYokA=; b=l83lYnfoophLWf5VcAhnlsCSEl7FPbykP76nIB9pFgNaFFDFeukcJNUySgrf5xZSnaO/8vku16YvpxNsJrSIfT/+ZA8zKcKxA/zaRr9IL4F/s7z7lujDmuk9zwGQzKRmrsAatJb5/i4Ne1ovCXknwx5y2ocsM4+KcO14ztTMH6Hlw/YYATGstqh7ukSpybGpJz+tV0Fq9xOQWPUxlr39zhsBJxxlTcmdUaidrznTWx+QzvIhmY8ltCiWWIiVJiVaUIv5X9tYxOhdovGiHpD8fhQAQ7VV67adT5uWXxVF82hJpenJ3yyYV7deHjO+QGOgF0014LhC4jYBoZ25p+tpAQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none X-Received: from DB5EUR01FT038.eop-EUR01.prod.protection.outlook.com (10.152.4.58) by DB5EUR01HT086.eop-EUR01.prod.protection.outlook.com (10.152.5.125) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2284.20; Tue, 24 Sep 2019 12:46:15 +0000 X-Received: from AM0PR07MB4386.eurprd07.prod.outlook.com (10.152.4.60) by DB5EUR01FT038.mail.protection.outlook.com (10.152.4.191) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2284.20 via Frontend Transport; Tue, 24 Sep 2019 12:46:15 +0000 X-Received: from AM0PR07MB4386.eurprd07.prod.outlook.com ([fe80::6056:53c8:6f16:3d8]) by AM0PR07MB4386.eurprd07.prod.outlook.com ([fe80::6056:53c8:6f16:3d8%3]) with mapi id 15.20.2305.013; Tue, 24 Sep 2019 12:46:15 +0000 From: =?iso-8859-1?Q?Marvin_H=E4user?= To: "devel@edk2.groups.io" CC: Jordan Justen , Andrew Fish , Ray Ni Subject: [edk2-devel] [PATCH] WinHost: Add SimplePointer support Thread-Topic: [PATCH] WinHost: Add SimplePointer support Thread-Index: AQHVctYNzIw1Y7l3LUmZIP4c1t7x5Q== Date: Tue, 24 Sep 2019 12:46:14 +0000 Message-ID: References: In-Reply-To: Accept-Language: de-DE, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: PR1PR01CA0027.eurprd01.prod.exchangelabs.com (2603:10a6:102::40) To AM0PR07MB4386.eurprd07.prod.outlook.com (2603:10a6:208:b3::11) x-incomingtopheadermarker: OriginalChecksum:EF6CF4DFF1E4B6420729A2EF128CF0C1F65DE3656111B1366EBF9A99891206C0;UpperCasedChecksum:EC0BB55861DB80C6A8649A45ADE82419CCCAE67B8E8DD723E5C6E3B694A28722;SizeAsReceived:7673;Count:51 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [Qb9MGIUDAookI8URABkDbDkj0KBeqfvd] x-microsoft-original-message-id: <83e892c5513d3ad10d2cfc3ae5064cf17fd000d6.1569329060.git.mhaeuser@outlook.de> x-ms-publictraffictype: Email x-incomingheadercount: 51 x-eopattributedmessage: 0 x-ms-traffictypediagnostic: DB5EUR01HT086: x-microsoft-antispam-message-info: FoOkObwx/MmJK5I6Lvo1jXV8hn1gNAQ61JQ6KLAUXFZJHVLqhX+XqStH/owZdM960lvJK+h1UXyCgzhADJdhgXqpoDfWQPF/jnEOOw+gw2G1rcUI69xLpBIcqXMUbVtLT+UdFrKQ9GgXxTOLbLIjH8Yvf1D3bq6s0zJ5+Q/W5H73yPGBy0AcVoTMhFroiANr x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 90e6935e-1a2c-4fa3-993b-08d740ed2f7a X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Sep 2019 12:46:14.7833 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5EUR01HT086 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,Marvin.Haeuser@outlook.com X-Gm-Message-State: 9qdjtw5GTH7ldlt0w8tpIuiBx1787277AA= Content-Language: en-US Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1569345820; bh=HqEOigvGd4OXYlFuajrAK/Jdx1o9/z00lpWP1v93204=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=cvKOMXvJaduHcrwgSTWuy6j3fJchWo5vN7Re052bvQVXlStLLiLavUbcCOfwlL7V0dp v0fi2V1TjE5OJ3VLgk6vY9VqKNvBUeqDWjd1Wt2fMg6NrWwWzIkndwpbufrVTTeKO/Ify yCM1GaamC6U8vo+0ggMw+PT0BGVv1aHzEls= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" From: Marvin Haeuser Catch WM mouse events and expose them via the SimplePointer protocol. Cc: Jordan Justen Cc: Andrew Fish Cc: Ray Ni Signed-off-by: Marvin Haeuser Reviewed-by: Ray Ni --- EmulatorPkg/Win/Host/WinGopInput.c | 25 ++++++++++-- EmulatorPkg/Win/Host/WinGopScreen.c | 41 ++++++++++++++++++++ EmulatorPkg/Win/Host/WinGop.h | 5 +++ EmulatorPkg/Win/Host/WinInclude.h | 1 + 4 files changed, 69 insertions(+), 3 deletions(-) diff --git a/EmulatorPkg/Win/Host/WinGopInput.c b/EmulatorPkg/Win/Host/WinG= opInput.c index 0e8d11fc57ac..312a549847c5 100644 --- a/EmulatorPkg/Win/Host/WinGopInput.c +++ b/EmulatorPkg/Win/Host/WinGopInput.c @@ -409,9 +409,12 @@ WinNtWndCheckPointer ( =20 Private =3D GRAPHICS_PRIVATE_DATA_FROM_THIS (GraphicsIo); =20 - return EFI_NOT_READY; -} + if (!Private->PointerStateChanged) { + return EFI_NOT_READY; + } =20 + return EFI_SUCCESS; +} =20 EFI_STATUS EFIAPI @@ -424,5 +427,21 @@ WinNtWndGetPointerState ( =20 Private =3D GRAPHICS_PRIVATE_DATA_FROM_THIS (GraphicsIo); =20 - return EFI_NOT_READY; + if (!Private->PointerStateChanged) { + return EFI_NOT_READY; + } + + State->RelativeMovementX =3D Private->PointerState.RelativeMovementX; + State->RelativeMovementY =3D Private->PointerState.RelativeMovementY; + State->RelativeMovementZ =3D Private->PointerState.RelativeMovementZ; + State->LeftButton =3D Private->PointerState.LeftButton; + State->RightButton =3D Private->PointerState.RightButton; + + Private->PointerState.RelativeMovementX =3D 0; + Private->PointerState.RelativeMovementY =3D 0; + Private->PointerState.RelativeMovementZ =3D 0; + + Private->PointerStateChanged =3D FALSE; + + return EFI_SUCCESS; } diff --git a/EmulatorPkg/Win/Host/WinGopScreen.c b/EmulatorPkg/Win/Host/Win= GopScreen.c index 8f42606823f1..fa34596497f8 100644 --- a/EmulatorPkg/Win/Host/WinGopScreen.c +++ b/EmulatorPkg/Win/Host/WinGopScreen.c @@ -399,6 +399,8 @@ WinNtGopThreadWindowProc ( LPARAM Index; EFI_INPUT_KEY Key; BOOLEAN AltIsPress; + INT32 PosX; + INT32 PosY; =20 // // Use mTlsIndex global to get a Thread Local Storage version of Private. @@ -527,6 +529,45 @@ WinNtGopThreadWindowProc ( WinNtGopConvertParamToEfiKeyShiftState (Private, &wParam, &lParam, FAL= SE); return 0; =20 + case WM_MOUSEMOVE: + PosX =3D GET_X_LPARAM (lParam); + PosY =3D GET_Y_LPARAM (lParam); + + if (Private->PointerPreviousX !=3D PosX) { + Private->PointerState.RelativeMovementX +=3D (PosX - Private->Pointe= rPreviousX); + Private->PointerPreviousX =3D PosX; + Private->PointerStateChanged =3D TRUE; + } + + if (Private->PointerPreviousY !=3D PosY) { + Private->PointerState.RelativeMovementY +=3D (PosY - Private->Pointe= rPreviousY); + Private->PointerPreviousY =3D PosY; + Private->PointerStateChanged =3D TRUE; + } + + Private->PointerState.RelativeMovementZ =3D 0; + return 0; + + case WM_LBUTTONDOWN: + Private->PointerState.LeftButton =3D TRUE; + Private->PointerStateChanged =3D TRUE; + return 0; + + case WM_LBUTTONUP: + Private->PointerState.LeftButton =3D FALSE; + Private->PointerStateChanged =3D TRUE; + return 0; + + case WM_RBUTTONDOWN: + Private->PointerState.RightButton =3D TRUE; + Private->PointerStateChanged =3D TRUE; + return 0; + + case WM_RBUTTONUP: + Private->PointerState.RightButton =3D FALSE; + Private->PointerStateChanged =3D TRUE; + return 0; + case WM_CLOSE: // // This close message is issued by user, core is not aware of this, diff --git a/EmulatorPkg/Win/Host/WinGop.h b/EmulatorPkg/Win/Host/WinGop.h index aa41db6dbc8c..5943ca93b22f 100644 --- a/EmulatorPkg/Win/Host/WinGop.h +++ b/EmulatorPkg/Win/Host/WinGop.h @@ -22,6 +22,7 @@ Abstract: =20 #include #include +#include #include #include #include @@ -109,6 +110,10 @@ typedef struct { BOOLEAN ScrollLock; BOOLEAN CapsLock; BOOLEAN IsPartialKeySupport; + INT32 PointerPreviousX; + INT32 PointerPreviousY; + BOOLEAN PointerStateChanged; + EFI_SIMPLE_POINTER_STATE PointerState; } GRAPHICS_PRIVATE_DATA; #define GRAPHICS_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('g', 'f', 'x', 'd') #define GRAPHICS_PRIVATE_DATA_FROM_THIS(a) \ diff --git a/EmulatorPkg/Win/Host/WinInclude.h b/EmulatorPkg/Win/Host/WinIn= clude.h index ae02770d9fb0..8a9ae7d7465b 100644 --- a/EmulatorPkg/Win/Host/WinInclude.h +++ b/EmulatorPkg/Win/Host/WinInclude.h @@ -40,6 +40,7 @@ typedef UINT32 size_t ; #endif =20 #include "windows.h" +#include "windowsx.h" =20 #undef GUID #undef _LIST_ENTRY --=20 2.23.0.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#47969): https://edk2.groups.io/g/devel/message/47969 Mute This Topic: https://groups.io/mt/34278658/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-