diff options
| author | JosJuice <josjuice@gmail.com> | 2026-10-31 16:17:25 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-10-31 16:17:25 +0100 |
| commit | c4856ead6420cceb48744815d79d6be59febb5ff (patch) | |
| tree | bc662fe345ab37ebc861b1d013da411d06688729 /Source/Android/jni/Input/EmulatedController.cpp | |
| parent | 78a8ab40c3b28a6d477c9c6b6260dc3993cfe491 (diff) | |
| parent | 9e6659a2d8c890d60be9a3609e4e55d3a75a1216 (diff) | |
Merge pull request #14878 from vhoxha08/add-global-hotkeys-android
Android: Add global hotkeys
Diffstat (limited to 'Source/Android/jni/Input/EmulatedController.cpp')
| -rw-r--r-- | Source/Android/jni/Input/EmulatedController.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/Source/Android/jni/Input/EmulatedController.cpp b/Source/Android/jni/Input/EmulatedController.cpp index 495a376f69..341e35d168 100644 --- a/Source/Android/jni/Input/EmulatedController.cpp +++ b/Source/Android/jni/Input/EmulatedController.cpp @@ -3,18 +3,22 @@ #include <jni.h> +#include <vector> + #include "Common/FileUtil.h" #include "Common/IniFile.h" #include "Core/HW/GCKeyboard.h" #include "Core/HW/GCPad.h" #include "Core/HW/Wiimote.h" #include "Core/HW/WiimoteEmu/WiimoteEmu.h" +#include "Core/HotkeyManager.h" #include "InputCommon/ControllerEmu/ControlGroup/Attachments.h" #include "InputCommon/ControllerEmu/ControllerEmu.h" #include "InputCommon/ControllerInterface/ControllerInterface.h" #include "InputCommon/InputConfig.h" #include "jni/AndroidCommon/AndroidCommon.h" #include "jni/AndroidCommon/IDCache.h" +#include "jni/HotkeyScheduler.h" #include "jni/Input/Control.h" #include "jni/Input/ControlGroup.h" #include "jni/Input/ControlReference.h" @@ -192,6 +196,36 @@ Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedContro } JNIEXPORT jobject JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedController_getHotkeys( + JNIEnv* env, jclass) +{ + return EmulatedControllerToJava(env, HotkeyManagerEmu::GetConfig()->GetController(0)); +} + +JNIEXPORT jintArray JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedController_getSupportedHotkeyIndices( + JNIEnv* env, jclass) +{ + auto* const hotkeys = + static_cast<HotkeyManager*>(HotkeyManagerEmu::GetConfig()->GetController(0)); + const std::vector<int>& supported = HotkeyScheduler::GetSupportedHotkeys(); + + std::vector<jint> indices; + indices.reserve(supported.size() * 2); + for (const int hotkey : supported) + { + const int group = hotkeys->FindGroupByID(hotkey); + indices.push_back(group); + indices.push_back(hotkeys->GetIndexForGroup(group, hotkey)); + } + + const jsize size = static_cast<jsize>(indices.size()); + jintArray result = env->NewIntArray(size); + env->SetIntArrayRegion(result, 0, size, indices.data()); + return result; +} + +JNIEXPORT jobject JNICALL Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedController_getWiimoteAttachment( JNIEnv* env, jclass, jint controller_index, jint attachment_index) { |
