diff options
author | german77 <juangerman-13@hotmail.com> | 2024-01-07 04:17:57 +0100 |
---|---|---|
committer | german77 <juangerman-13@hotmail.com> | 2024-01-07 04:18:44 +0100 |
commit | a36f4d0a9f2c0fee837856e4db3e4ca10bfed25b (patch) | |
tree | e13147afa84aaba79e36bbee59b0aa86f81ccf38 /src/core/hle/service/hid/hid_system_server.cpp | |
parent | Merge pull request #12596 from german77/hid_qlaunch (diff) | |
download | yuzu-a36f4d0a9f2c0fee837856e4db3e4ca10bfed25b.tar yuzu-a36f4d0a9f2c0fee837856e4db3e4ca10bfed25b.tar.gz yuzu-a36f4d0a9f2c0fee837856e4db3e4ca10bfed25b.tar.bz2 yuzu-a36f4d0a9f2c0fee837856e4db3e4ca10bfed25b.tar.lz yuzu-a36f4d0a9f2c0fee837856e4db3e4ca10bfed25b.tar.xz yuzu-a36f4d0a9f2c0fee837856e4db3e4ca10bfed25b.tar.zst yuzu-a36f4d0a9f2c0fee837856e4db3e4ca10bfed25b.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/hle/service/hid/hid_system_server.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/core/hle/service/hid/hid_system_server.cpp b/src/core/hle/service/hid/hid_system_server.cpp index 2a65615e8..ac0d8bd5d 100644 --- a/src/core/hle/service/hid/hid_system_server.cpp +++ b/src/core/hle/service/hid/hid_system_server.cpp @@ -46,7 +46,7 @@ IHidSystemServer::IHidSystemServer(Core::System& system_, std::shared_ptr<Resour {310, &IHidSystemServer::GetMaskedSupportedNpadStyleSet, "GetMaskedSupportedNpadStyleSet"}, {311, nullptr, "SetNpadPlayerLedBlinkingDevice"}, {312, &IHidSystemServer::SetSupportedNpadStyleSetAll, "SetSupportedNpadStyleSetAll"}, - {313, nullptr, "GetNpadCaptureButtonAssignment"}, + {313, &IHidSystemServer::GetNpadCaptureButtonAssignment, "GetNpadCaptureButtonAssignment"}, {314, nullptr, "GetAppletFooterUiType"}, {315, &IHidSystemServer::GetAppletDetailedUiType, "GetAppletDetailedUiType"}, {316, &IHidSystemServer::GetNpadInterfaceType, "GetNpadInterfaceType"}, @@ -331,6 +331,27 @@ void IHidSystemServer::SetSupportedNpadStyleSetAll(HLERequestContext& ctx) { rb.Push(result); } +void IHidSystemServer::GetNpadCaptureButtonAssignment(HLERequestContext& ctx) { + IPC::RequestParser rp{ctx}; + const auto applet_resource_user_id{rp.Pop<u64>()}; + const auto capture_button_list_size{ctx.GetWriteBufferNumElements<Core::HID::NpadButton>()}; + + LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id); + + std::vector<Core::HID::NpadButton> capture_button_list(capture_button_list_size); + const auto& npad = GetResourceManager()->GetNpad(); + const u64 list_size = + npad->GetNpadCaptureButtonAssignment(capture_button_list, applet_resource_user_id); + + if (list_size != 0) { + ctx.WriteBuffer(capture_button_list); + } + + IPC::ResponseBuilder rb{ctx, 4}; + rb.Push(ResultSuccess); + rb.Push(list_size); +} + void IHidSystemServer::GetAppletDetailedUiType(HLERequestContext& ctx) { IPC::RequestParser rp{ctx}; const auto npad_id_type{rp.PopEnum<Core::HID::NpadIdType>()}; |