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

View File

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