summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/hid/hid_system_server.cpp
diff options
context:
space:
mode:
authorgerman77 <juangerman-13@hotmail.com>2024-01-07 04:17:57 +0100
committergerman77 <juangerman-13@hotmail.com>2024-01-07 04:18:44 +0100
commita36f4d0a9f2c0fee837856e4db3e4ca10bfed25b (patch)
treee13147afa84aaba79e36bbee59b0aa86f81ccf38 /src/core/hle/service/hid/hid_system_server.cpp
parentMerge pull request #12596 from german77/hid_qlaunch (diff)
downloadyuzu-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.cpp23
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>()};