From e0630fceb1bde09c249857f018c444b3ffba687b Mon Sep 17 00:00:00 2001 From: Gabriel Date: Wed, 11 Dec 2019 19:09:35 -0800 Subject: [PATCH] hidKeysAll- --- nx/include/switch/services/hid.h | 4 ++++ nx/source/services/hid.c | 37 ++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/nx/include/switch/services/hid.h b/nx/include/switch/services/hid.h index 9b3eba0e..f5bb9b87 100644 --- a/nx/include/switch/services/hid.h +++ b/nx/include/switch/services/hid.h @@ -736,6 +736,10 @@ u64 hidKeysHeld(HidControllerID id); u64 hidKeysDown(HidControllerID id); u64 hidKeysUp(HidControllerID id); +u64 hidKeysAllHeld(); +u64 hidKeysAllDown(); +u64 hidKeysUp(); + u64 hidMouseButtonsHeld(void); u64 hidMouseButtonsDown(void); u64 hidMouseButtonsUp(void); diff --git a/nx/source/services/hid.c b/nx/source/services/hid.c index 0c5c0702..8679932b 100644 --- a/nx/source/services/hid.c +++ b/nx/source/services/hid.c @@ -244,6 +244,7 @@ void hidScanInput(void) { if ((s64)(newInputEntry->timestamp - g_controllerTimestamps[i]) >= 0) { memcpy(&g_controllerEntries[i], newInputEntry, sizeof(HidControllerInputEntry)); g_controllerTimestamps[i] = newInputEntry->timestamp; + g_controllerTimestamps[i] = newInputEntry->timestamp; g_controllerHeld[i] |= g_controllerEntries[i].buttons; } @@ -427,6 +428,42 @@ u64 hidKeysUp(HidControllerID id) { return tmp; } +u64 hidKeysAllDown() { + u64 kDown = 0; + + rwlockReadLock(&g_hidLock); + for (u8 controller=0; controller<10; controller++) { + kDown |= g_controllerDown[controller]; + } + rwlockReadUnlock(&g_hidLock); + + return kDown; +} + +u64 hidKeysAllUp() { + u64 kDown = 0; + + rwlockReadLock(&g_hidLock); + for (u8 controller=0; controller<10; controller++) { + kDown |= g_controllerUp[controller]; + } + rwlockReadUnlock(&g_hidLock); + + return kDown; +} + +u64 hidKeysAllHeld() { + u64 kDown = 0; + + rwlockReadLock(&g_hidLock); + for (u8 controller=0; controller<10; controller++) { + kDown |= g_controllerHeld[controller]; + } + rwlockReadUnlock(&g_hidLock); + + return kDown; +} + u64 hidMouseButtonsHeld(void) { rwlockReadLock(&g_hidLock); u64 tmp = g_mouseHeld;