// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #include "core/core.h" #include "core/hle/service/am/hid_registration.h" #include "core/hle/service/hid/hid_server.h" #include "core/hle/service/os/process.h" #include "core/hle/service/sm/sm.h" #include "hid_core/resource_manager.h" namespace Service::AM { HidRegistration::HidRegistration(Core::System& system, Process& process) : m_process(process) { m_hid_server = system.ServiceManager().GetService("hid", true); this->RegisterCurrentProcess(); } void HidRegistration::RegisterCurrentProcess() { if (m_process.IsInitialized()) { m_hid_server->GetResourceManager()->RegisterAppletResourceUserId(m_process.GetProcessId(), true); m_hid_server->GetResourceManager()->SetAruidValidForVibration(m_process.GetProcessId(), true); } } HidRegistration::~HidRegistration() { if (m_process.IsInitialized()) { m_hid_server->GetResourceManager()->SetAruidValidForVibration(m_process.GetProcessId(), false); m_hid_server->GetResourceManager()->UnregisterAppletResourceUserId( m_process.GetProcessId()); } } void HidRegistration::EnableAppletToGetInput(bool enable_pad, bool enable_touch) { if (!m_process.IsInitialized()) return; const auto resource_manager = m_hid_server->GetResourceManager(); const u64 aruid = m_process.GetProcessId(); resource_manager->EnablePadInput(aruid, enable_pad); resource_manager->EnableTouchScreen(aruid, enable_touch); resource_manager->SetAruidValidForVibration(aruid, enable_pad); } } // namespace Service::AM