Add hidMouseRead, allows mouse position/velocity/scrollwheel velocity to be fetched

This commit is contained in:
shinyquagsire23 2018-02-21 06:18:46 -07:00 committed by plutoo
parent 1b255bfe15
commit 954a48b8fe
2 changed files with 18 additions and 6 deletions

View File

@ -328,6 +328,16 @@ typedef struct JoystickPosition
s32 dy;
} JoystickPosition;
typedef struct MousePosition
{
u32 x;
u32 y;
u32 velocityX;
u32 velocityY;
u32 scrollVelocityX;
u32 scrollVelocityY;
} MousePosition;
#define JOYSTICK_MAX (0x8000)
#define JOYSTICK_MIN (-0x8000)
@ -399,12 +409,7 @@ typedef struct HidMouseEntry
{
u64 timestamp;
u64 timestamp_2;
u32 x;
u32 y;
u32 velocityX;
u32 velocityY;
u32 scrollVelocityX;
u32 scrollVelocityY;
MousePosition position;
u64 buttons;
} HidMouseEntry;
static_assert(sizeof(HidMouseEntry) == 0x30, "Hid mouse entry structure has incorrect size");
@ -552,6 +557,7 @@ u64 hidKeysUp(HidControllerID id);
u64 hidMouseButtonsHeld(void);
u64 hidMouseButtonsDown(void);
u64 hidMouseButtonsUp(void);
void hidMouseRead(MousePosition *pos);
bool hidKeyboardModifierHeld(HidKeyboardModifier modifier);
bool hidKeyboardModifierDown(HidKeyboardModifier modifier);

View File

@ -267,6 +267,12 @@ u64 hidMouseButtonsUp(void) {
return tmp;
}
void hidMouseRead(MousePosition *pos) {
rwlockReadLock(&g_hidLock);
*pos = g_mouseEntry.position;
rwlockReadUnlock(&g_hidLock);
}
bool hidKeyboardModifierHeld(HidKeyboardModifier modifier) {
rwlockReadLock(&g_hidLock);
bool tmp = g_keyboardModHeld & modifier;