mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 20:42:44 +02:00
Delete old HID API 🦀🦀
This commit is contained in:
parent
c8fdae9189
commit
637dd12b2d
@ -11,9 +11,6 @@
|
|||||||
#include "../services/btdrv_types.h"
|
#include "../services/btdrv_types.h"
|
||||||
#include "../sf/service.h"
|
#include "../sf/service.h"
|
||||||
|
|
||||||
#pragma GCC diagnostic push
|
|
||||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
|
||||||
|
|
||||||
// Begin enums and output structs
|
// Begin enums and output structs
|
||||||
|
|
||||||
/// HidDebugPadButton
|
/// HidDebugPadButton
|
||||||
@ -64,184 +61,6 @@ typedef enum {
|
|||||||
HidKeyboardModifier_Hiragana = BIT(12),
|
HidKeyboardModifier_Hiragana = BIT(12),
|
||||||
} HidKeyboardModifier;
|
} HidKeyboardModifier;
|
||||||
|
|
||||||
/// HidKeyboardScancode \deprecated
|
|
||||||
typedef enum DEPRECATED {
|
|
||||||
KBD_NONE = 0x00,
|
|
||||||
KBD_ERR_OVF = 0x01,
|
|
||||||
|
|
||||||
KBD_A = 0x04,
|
|
||||||
KBD_B = 0x05,
|
|
||||||
KBD_C = 0x06,
|
|
||||||
KBD_D = 0x07,
|
|
||||||
KBD_E = 0x08,
|
|
||||||
KBD_F = 0x09,
|
|
||||||
KBD_G = 0x0a,
|
|
||||||
KBD_H = 0x0b,
|
|
||||||
KBD_I = 0x0c,
|
|
||||||
KBD_J = 0x0d,
|
|
||||||
KBD_K = 0x0e,
|
|
||||||
KBD_L = 0x0f,
|
|
||||||
KBD_M = 0x10,
|
|
||||||
KBD_N = 0x11,
|
|
||||||
KBD_O = 0x12,
|
|
||||||
KBD_P = 0x13,
|
|
||||||
KBD_Q = 0x14,
|
|
||||||
KBD_R = 0x15,
|
|
||||||
KBD_S = 0x16,
|
|
||||||
KBD_T = 0x17,
|
|
||||||
KBD_U = 0x18,
|
|
||||||
KBD_V = 0x19,
|
|
||||||
KBD_W = 0x1a,
|
|
||||||
KBD_X = 0x1b,
|
|
||||||
KBD_Y = 0x1c,
|
|
||||||
KBD_Z = 0x1d,
|
|
||||||
|
|
||||||
KBD_1 = 0x1e,
|
|
||||||
KBD_2 = 0x1f,
|
|
||||||
KBD_3 = 0x20,
|
|
||||||
KBD_4 = 0x21,
|
|
||||||
KBD_5 = 0x22,
|
|
||||||
KBD_6 = 0x23,
|
|
||||||
KBD_7 = 0x24,
|
|
||||||
KBD_8 = 0x25,
|
|
||||||
KBD_9 = 0x26,
|
|
||||||
KBD_0 = 0x27,
|
|
||||||
|
|
||||||
KBD_ENTER = 0x28,
|
|
||||||
KBD_ESC = 0x29,
|
|
||||||
KBD_BACKSPACE = 0x2a,
|
|
||||||
KBD_TAB = 0x2b,
|
|
||||||
KBD_SPACE = 0x2c,
|
|
||||||
KBD_MINUS = 0x2d,
|
|
||||||
KBD_EQUAL = 0x2e,
|
|
||||||
KBD_LEFTBRACE = 0x2f,
|
|
||||||
KBD_RIGHTBRACE = 0x30,
|
|
||||||
KBD_BACKSLASH = 0x31,
|
|
||||||
KBD_HASHTILDE = 0x32,
|
|
||||||
KBD_SEMICOLON = 0x33,
|
|
||||||
KBD_APOSTROPHE = 0x34,
|
|
||||||
KBD_GRAVE = 0x35,
|
|
||||||
KBD_COMMA = 0x36,
|
|
||||||
KBD_DOT = 0x37,
|
|
||||||
KBD_SLASH = 0x38,
|
|
||||||
KBD_CAPSLOCK = 0x39,
|
|
||||||
|
|
||||||
KBD_F1 = 0x3a,
|
|
||||||
KBD_F2 = 0x3b,
|
|
||||||
KBD_F3 = 0x3c,
|
|
||||||
KBD_F4 = 0x3d,
|
|
||||||
KBD_F5 = 0x3e,
|
|
||||||
KBD_F6 = 0x3f,
|
|
||||||
KBD_F7 = 0x40,
|
|
||||||
KBD_F8 = 0x41,
|
|
||||||
KBD_F9 = 0x42,
|
|
||||||
KBD_F10 = 0x43,
|
|
||||||
KBD_F11 = 0x44,
|
|
||||||
KBD_F12 = 0x45,
|
|
||||||
|
|
||||||
KBD_SYSRQ = 0x46,
|
|
||||||
KBD_SCROLLLOCK = 0x47,
|
|
||||||
KBD_PAUSE = 0x48,
|
|
||||||
KBD_INSERT = 0x49,
|
|
||||||
KBD_HOME = 0x4a,
|
|
||||||
KBD_PAGEUP = 0x4b,
|
|
||||||
KBD_DELETE = 0x4c,
|
|
||||||
KBD_END = 0x4d,
|
|
||||||
KBD_PAGEDOWN = 0x4e,
|
|
||||||
KBD_RIGHT = 0x4f,
|
|
||||||
KBD_LEFT = 0x50,
|
|
||||||
KBD_DOWN = 0x51,
|
|
||||||
KBD_UP = 0x52,
|
|
||||||
|
|
||||||
KBD_NUMLOCK = 0x53,
|
|
||||||
KBD_KPSLASH = 0x54,
|
|
||||||
KBD_KPASTERISK = 0x55,
|
|
||||||
KBD_KPMINUS = 0x56,
|
|
||||||
KBD_KPPLUS = 0x57,
|
|
||||||
KBD_KPENTER = 0x58,
|
|
||||||
KBD_KP1 = 0x59,
|
|
||||||
KBD_KP2 = 0x5a,
|
|
||||||
KBD_KP3 = 0x5b,
|
|
||||||
KBD_KP4 = 0x5c,
|
|
||||||
KBD_KP5 = 0x5d,
|
|
||||||
KBD_KP6 = 0x5e,
|
|
||||||
KBD_KP7 = 0x5f,
|
|
||||||
KBD_KP8 = 0x60,
|
|
||||||
KBD_KP9 = 0x61,
|
|
||||||
KBD_KP0 = 0x62,
|
|
||||||
KBD_KPDOT = 0x63,
|
|
||||||
|
|
||||||
KBD_102ND = 0x64,
|
|
||||||
KBD_COMPOSE = 0x65,
|
|
||||||
KBD_POWER = 0x66,
|
|
||||||
KBD_KPEQUAL = 0x67,
|
|
||||||
|
|
||||||
KBD_F13 = 0x68,
|
|
||||||
KBD_F14 = 0x69,
|
|
||||||
KBD_F15 = 0x6a,
|
|
||||||
KBD_F16 = 0x6b,
|
|
||||||
KBD_F17 = 0x6c,
|
|
||||||
KBD_F18 = 0x6d,
|
|
||||||
KBD_F19 = 0x6e,
|
|
||||||
KBD_F20 = 0x6f,
|
|
||||||
KBD_F21 = 0x70,
|
|
||||||
KBD_F22 = 0x71,
|
|
||||||
KBD_F23 = 0x72,
|
|
||||||
KBD_F24 = 0x73,
|
|
||||||
|
|
||||||
KBD_OPEN = 0x74,
|
|
||||||
KBD_HELP = 0x75,
|
|
||||||
KBD_PROPS = 0x76,
|
|
||||||
KBD_FRONT = 0x77,
|
|
||||||
KBD_STOP = 0x78,
|
|
||||||
KBD_AGAIN = 0x79,
|
|
||||||
KBD_UNDO = 0x7a,
|
|
||||||
KBD_CUT = 0x7b,
|
|
||||||
KBD_COPY = 0x7c,
|
|
||||||
KBD_PASTE = 0x7d,
|
|
||||||
KBD_FIND = 0x7e,
|
|
||||||
KBD_MUTE = 0x7f,
|
|
||||||
KBD_VOLUMEUP = 0x80,
|
|
||||||
KBD_VOLUMEDOWN = 0x81,
|
|
||||||
KBD_CAPSLOCK_ACTIVE = 0x82 ,
|
|
||||||
KBD_NUMLOCK_ACTIVE = 0x83 ,
|
|
||||||
KBD_SCROLLLOCK_ACTIVE = 0x84 ,
|
|
||||||
KBD_KPCOMMA = 0x85,
|
|
||||||
|
|
||||||
KBD_KPLEFTPAREN = 0xb6,
|
|
||||||
KBD_KPRIGHTPAREN = 0xb7,
|
|
||||||
|
|
||||||
KBD_LEFTCTRL = 0xe0,
|
|
||||||
KBD_LEFTSHIFT = 0xe1,
|
|
||||||
KBD_LEFTALT = 0xe2,
|
|
||||||
KBD_LEFTMETA = 0xe3,
|
|
||||||
KBD_RIGHTCTRL = 0xe4,
|
|
||||||
KBD_RIGHTSHIFT = 0xe5,
|
|
||||||
KBD_RIGHTALT = 0xe6,
|
|
||||||
KBD_RIGHTMETA = 0xe7,
|
|
||||||
|
|
||||||
KBD_MEDIA_PLAYPAUSE = 0xe8,
|
|
||||||
KBD_MEDIA_STOPCD = 0xe9,
|
|
||||||
KBD_MEDIA_PREVIOUSSONG = 0xea,
|
|
||||||
KBD_MEDIA_NEXTSONG = 0xeb,
|
|
||||||
KBD_MEDIA_EJECTCD = 0xec,
|
|
||||||
KBD_MEDIA_VOLUMEUP = 0xed,
|
|
||||||
KBD_MEDIA_VOLUMEDOWN = 0xee,
|
|
||||||
KBD_MEDIA_MUTE = 0xef,
|
|
||||||
KBD_MEDIA_WWW = 0xf0,
|
|
||||||
KBD_MEDIA_BACK = 0xf1,
|
|
||||||
KBD_MEDIA_FORWARD = 0xf2,
|
|
||||||
KBD_MEDIA_STOP = 0xf3,
|
|
||||||
KBD_MEDIA_FIND = 0xf4,
|
|
||||||
KBD_MEDIA_SCROLLUP = 0xf5,
|
|
||||||
KBD_MEDIA_SCROLLDOWN = 0xf6,
|
|
||||||
KBD_MEDIA_EDIT = 0xf7,
|
|
||||||
KBD_MEDIA_SLEEP = 0xf8,
|
|
||||||
KBD_MEDIA_COFFEE = 0xf9,
|
|
||||||
KBD_MEDIA_REFRESH = 0xfa,
|
|
||||||
KBD_MEDIA_CALC = 0xfb
|
|
||||||
} HidKeyboardScancode;
|
|
||||||
|
|
||||||
/// KeyboardLockKeyEvent
|
/// KeyboardLockKeyEvent
|
||||||
typedef enum {
|
typedef enum {
|
||||||
HidKeyboardLockKeyEvent_NumLockOn = BIT(0), ///< NumLockOn
|
HidKeyboardLockKeyEvent_NumLockOn = BIT(0), ///< NumLockOn
|
||||||
@ -338,63 +157,6 @@ typedef enum {
|
|||||||
HidNpadButton_AnySR = HidNpadButton_LeftSR | HidNpadButton_RightSR, ///< Bitmask containing SR buttons on both Joy-Cons (Left/Right)
|
HidNpadButton_AnySR = HidNpadButton_LeftSR | HidNpadButton_RightSR, ///< Bitmask containing SR buttons on both Joy-Cons (Left/Right)
|
||||||
} HidNpadButton;
|
} HidNpadButton;
|
||||||
|
|
||||||
/// HidControllerKeys \deprecated
|
|
||||||
typedef enum DEPRECATED {
|
|
||||||
KEY_A = HidNpadButton_A,
|
|
||||||
KEY_B = HidNpadButton_B,
|
|
||||||
KEY_X = HidNpadButton_X,
|
|
||||||
KEY_Y = HidNpadButton_Y,
|
|
||||||
KEY_LSTICK = HidNpadButton_StickL,
|
|
||||||
KEY_RSTICK = HidNpadButton_StickR,
|
|
||||||
KEY_L = HidNpadButton_L,
|
|
||||||
KEY_R = HidNpadButton_R,
|
|
||||||
KEY_ZL = HidNpadButton_ZL,
|
|
||||||
KEY_ZR = HidNpadButton_ZR,
|
|
||||||
KEY_PLUS = HidNpadButton_Plus,
|
|
||||||
KEY_MINUS = HidNpadButton_Minus,
|
|
||||||
KEY_DLEFT = HidNpadButton_Left,
|
|
||||||
KEY_DUP = HidNpadButton_Up,
|
|
||||||
KEY_DRIGHT = HidNpadButton_Right,
|
|
||||||
KEY_DDOWN = HidNpadButton_Down,
|
|
||||||
KEY_LSTICK_LEFT = HidNpadButton_StickLLeft,
|
|
||||||
KEY_LSTICK_UP = HidNpadButton_StickLUp,
|
|
||||||
KEY_LSTICK_RIGHT = HidNpadButton_StickLRight,
|
|
||||||
KEY_LSTICK_DOWN = HidNpadButton_StickLDown,
|
|
||||||
KEY_RSTICK_LEFT = HidNpadButton_StickRLeft,
|
|
||||||
KEY_RSTICK_UP = HidNpadButton_StickRUp,
|
|
||||||
KEY_RSTICK_RIGHT = HidNpadButton_StickRRight,
|
|
||||||
KEY_RSTICK_DOWN = HidNpadButton_StickRDown,
|
|
||||||
KEY_SL_LEFT = HidNpadButton_LeftSL,
|
|
||||||
KEY_SR_LEFT = HidNpadButton_LeftSR,
|
|
||||||
KEY_SL_RIGHT = HidNpadButton_RightSL,
|
|
||||||
KEY_SR_RIGHT = HidNpadButton_RightSR,
|
|
||||||
KEY_NES_HANDHELD_LEFT_B = HidNpadButton_HandheldLeftB,
|
|
||||||
|
|
||||||
KEY_HOME = BIT(18), ///< HOME button, only available for use with HiddbgHdlsState::buttons.
|
|
||||||
KEY_CAPTURE = BIT(19), ///< Capture button, only available for use with HiddbgHdlsState::buttons.
|
|
||||||
KEY_TOUCH = BIT(28), ///< Pseudo-key for at least one finger on the touch screen
|
|
||||||
|
|
||||||
KEY_JOYCON_RIGHT = HidNpadButton_A,
|
|
||||||
KEY_JOYCON_DOWN = HidNpadButton_B,
|
|
||||||
KEY_JOYCON_UP = HidNpadButton_X,
|
|
||||||
KEY_JOYCON_LEFT = HidNpadButton_Y,
|
|
||||||
|
|
||||||
KEY_UP = HidNpadButton_AnyUp,
|
|
||||||
KEY_DOWN = HidNpadButton_AnyDown,
|
|
||||||
KEY_LEFT = HidNpadButton_AnyLeft,
|
|
||||||
KEY_RIGHT = HidNpadButton_AnyRight,
|
|
||||||
KEY_SL = HidNpadButton_AnySL,
|
|
||||||
KEY_SR = HidNpadButton_AnySR,
|
|
||||||
} HidControllerKeys;
|
|
||||||
|
|
||||||
/// HidControllerJoystick \deprecated
|
|
||||||
typedef enum DEPRECATED {
|
|
||||||
JOYSTICK_LEFT = 0,
|
|
||||||
JOYSTICK_RIGHT = 1,
|
|
||||||
|
|
||||||
JOYSTICK_NUM_STICKS = 2,
|
|
||||||
} HidControllerJoystick;
|
|
||||||
|
|
||||||
/// HidDebugPadAttribute
|
/// HidDebugPadAttribute
|
||||||
typedef enum {
|
typedef enum {
|
||||||
HidDebugPadAttribute_IsConnected = BIT(0), ///< IsConnected
|
HidDebugPadAttribute_IsConnected = BIT(0), ///< IsConnected
|
||||||
@ -457,21 +219,6 @@ typedef enum {
|
|||||||
HidGestureType_Rotate = 9, ///< Rotate
|
HidGestureType_Rotate = 9, ///< Rotate
|
||||||
} HidGestureType;
|
} HidGestureType;
|
||||||
|
|
||||||
/// HidControllerID \deprecated
|
|
||||||
typedef enum DEPRECATED {
|
|
||||||
CONTROLLER_PLAYER_1 = 0,
|
|
||||||
CONTROLLER_PLAYER_2 = 1,
|
|
||||||
CONTROLLER_PLAYER_3 = 2,
|
|
||||||
CONTROLLER_PLAYER_4 = 3,
|
|
||||||
CONTROLLER_PLAYER_5 = 4,
|
|
||||||
CONTROLLER_PLAYER_6 = 5,
|
|
||||||
CONTROLLER_PLAYER_7 = 6,
|
|
||||||
CONTROLLER_PLAYER_8 = 7,
|
|
||||||
CONTROLLER_HANDHELD = 8,
|
|
||||||
CONTROLLER_UNKNOWN = 9,
|
|
||||||
CONTROLLER_P1_AUTO = 10, ///< Not an actual HID-sysmodule ID. Only for hidKeys*()/hidJoystickRead()/hidSixAxisSensorValuesRead()/hidIsControllerConnected(). Automatically uses CONTROLLER_PLAYER_1 when connected, otherwise uses CONTROLLER_HANDHELD.
|
|
||||||
} HidControllerID;
|
|
||||||
|
|
||||||
/// GyroscopeZeroDriftMode
|
/// GyroscopeZeroDriftMode
|
||||||
typedef enum {
|
typedef enum {
|
||||||
HidGyroscopeZeroDriftMode_Loose = 0, ///< Loose
|
HidGyroscopeZeroDriftMode_Loose = 0, ///< Loose
|
||||||
@ -673,38 +420,12 @@ typedef enum {
|
|||||||
HidPalmaFeature_MuteSwitch = BIT(3), ///< MuteSwitch
|
HidPalmaFeature_MuteSwitch = BIT(3), ///< MuteSwitch
|
||||||
} HidPalmaFeature;
|
} HidPalmaFeature;
|
||||||
|
|
||||||
/// touchPosition \deprecated
|
|
||||||
typedef struct DEPRECATED touchPosition {
|
|
||||||
u32 id;
|
|
||||||
u32 px;
|
|
||||||
u32 py;
|
|
||||||
u32 dx;
|
|
||||||
u32 dy;
|
|
||||||
u32 angle;
|
|
||||||
} touchPosition;
|
|
||||||
|
|
||||||
/// HidAnalogStickState
|
/// HidAnalogStickState
|
||||||
typedef struct HidAnalogStickState {
|
typedef struct HidAnalogStickState {
|
||||||
s32 x; ///< X
|
s32 x; ///< X
|
||||||
s32 y; ///< Y
|
s32 y; ///< Y
|
||||||
} HidAnalogStickState;
|
} HidAnalogStickState;
|
||||||
|
|
||||||
/// JoystickPosition \deprecated
|
|
||||||
typedef struct DEPRECATED JoystickPosition {
|
|
||||||
s32 dx;
|
|
||||||
s32 dy;
|
|
||||||
} JoystickPosition;
|
|
||||||
|
|
||||||
/// MousePosition \deprecated
|
|
||||||
typedef struct DEPRECATED MousePosition {
|
|
||||||
s32 x;
|
|
||||||
s32 y;
|
|
||||||
s32 velocityX;
|
|
||||||
s32 velocityY;
|
|
||||||
s32 scrollVelocityX;
|
|
||||||
s32 scrollVelocityY;
|
|
||||||
} MousePosition;
|
|
||||||
|
|
||||||
/// HidVector
|
/// HidVector
|
||||||
typedef struct HidVector {
|
typedef struct HidVector {
|
||||||
float x;
|
float x;
|
||||||
@ -717,14 +438,6 @@ typedef struct HidDirectionState {
|
|||||||
float direction[3][3]; ///< 3x3 matrix
|
float direction[3][3]; ///< 3x3 matrix
|
||||||
} HidDirectionState;
|
} HidDirectionState;
|
||||||
|
|
||||||
/// SixAxisSensorValues \deprecated DEPRECATED
|
|
||||||
typedef struct DEPRECATED SixAxisSensorValues {
|
|
||||||
HidVector accelerometer;
|
|
||||||
HidVector gyroscope;
|
|
||||||
HidVector unk;
|
|
||||||
HidVector orientation[3];
|
|
||||||
} SixAxisSensorValues;
|
|
||||||
|
|
||||||
#define JOYSTICK_MAX (0x7FFF)
|
#define JOYSTICK_MAX (0x7FFF)
|
||||||
#define JOYSTICK_MIN (-0x7FFF)
|
#define JOYSTICK_MIN (-0x7FFF)
|
||||||
|
|
||||||
@ -1300,34 +1013,18 @@ typedef struct HidPalmaActivityEntry {
|
|||||||
u16 wave_index; ///< WaveIndex
|
u16 wave_index; ///< WaveIndex
|
||||||
} HidPalmaActivityEntry;
|
} HidPalmaActivityEntry;
|
||||||
|
|
||||||
static inline HidNpadIdType hidControllerIDToNpadIdType(HidControllerID id) {
|
|
||||||
if (id <= CONTROLLER_PLAYER_8) return (HidNpadIdType)id;
|
|
||||||
if (id == CONTROLLER_HANDHELD) return HidNpadIdType_Handheld;
|
|
||||||
return HidNpadIdType_Other;//For CONTROLLER_UNKNOWN and invalid values return this.
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline HidControllerID hidControllerIDFromNpadIdType(HidNpadIdType id) {
|
|
||||||
if (id <= HidNpadIdType_No8) return (HidControllerID)id;
|
|
||||||
if (id == HidNpadIdType_Handheld) return CONTROLLER_HANDHELD;
|
|
||||||
return CONTROLLER_UNKNOWN;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Initialize hid. Called automatically during app startup.
|
/// Initialize hid. Called automatically during app startup.
|
||||||
Result hidInitialize(void);
|
Result hidInitialize(void);
|
||||||
|
|
||||||
/// Exit hid. Called automatically during app exit.
|
/// Exit hid. Called automatically during app exit.
|
||||||
void hidExit(void);
|
void hidExit(void);
|
||||||
|
|
||||||
void DEPRECATED hidReset(void); ///< \deprecated
|
|
||||||
|
|
||||||
/// Gets the Service object for the actual hid service session.
|
/// Gets the Service object for the actual hid service session.
|
||||||
Service* hidGetServiceSession(void);
|
Service* hidGetServiceSession(void);
|
||||||
|
|
||||||
/// Gets the address of the SharedMemory.
|
/// Gets the address of the SharedMemory.
|
||||||
void* hidGetSharedmemAddr(void);
|
void* hidGetSharedmemAddr(void);
|
||||||
|
|
||||||
void DEPRECATED hidScanInput(void); ///< \deprecated
|
|
||||||
|
|
||||||
///@name TouchScreen
|
///@name TouchScreen
|
||||||
///@{
|
///@{
|
||||||
|
|
||||||
@ -1586,39 +1283,6 @@ size_t hidGetGestureStates(HidGestureState *states, size_t count);
|
|||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
bool DEPRECATED hidIsControllerConnected(HidControllerID id); ///< \deprecated
|
|
||||||
|
|
||||||
u64 DEPRECATED hidKeysHeld(HidControllerID id); ///< \deprecated
|
|
||||||
u64 DEPRECATED hidKeysDown(HidControllerID id); ///< \deprecated
|
|
||||||
u64 DEPRECATED hidKeysUp(HidControllerID id); ///< \deprecated
|
|
||||||
|
|
||||||
u64 DEPRECATED hidMouseButtonsHeld(void); ///< \deprecated
|
|
||||||
u64 DEPRECATED hidMouseButtonsDown(void); ///< \deprecated
|
|
||||||
u64 DEPRECATED hidMouseButtonsUp(void); ///< \deprecated
|
|
||||||
void DEPRECATED hidMouseRead(MousePosition *pos); ///< \deprecated
|
|
||||||
u32 DEPRECATED hidMouseMultiRead(MousePosition *entries, u32 num_entries); ///< \deprecated
|
|
||||||
|
|
||||||
bool DEPRECATED hidKeyboardModifierHeld(HidKeyboardModifier modifier); ///< \deprecated
|
|
||||||
bool DEPRECATED hidKeyboardModifierDown(HidKeyboardModifier modifier); ///< \deprecated
|
|
||||||
bool DEPRECATED hidKeyboardModifierUp(HidKeyboardModifier modifier); ///< \deprecated
|
|
||||||
|
|
||||||
bool DEPRECATED hidKeyboardHeld(HidKeyboardScancode key); ///< \deprecated
|
|
||||||
bool DEPRECATED hidKeyboardDown(HidKeyboardScancode key); ///< \deprecated
|
|
||||||
bool DEPRECATED hidKeyboardUp(HidKeyboardScancode key); ///< \deprecated
|
|
||||||
|
|
||||||
u32 DEPRECATED hidTouchCount(void); ///< \deprecated
|
|
||||||
void DEPRECATED hidTouchRead(touchPosition *pos, u32 point_id); ///< \deprecated
|
|
||||||
|
|
||||||
void DEPRECATED hidJoystickRead(JoystickPosition *pos, HidControllerID id, HidControllerJoystick stick); ///< \deprecated
|
|
||||||
u32 DEPRECATED hidSixAxisSensorValuesRead(SixAxisSensorValues *values, HidControllerID id, u32 num_entries); ///< \deprecated
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This can be used to check what CONTROLLER_P1_AUTO uses.
|
|
||||||
* @return 0 when CONTROLLER_PLAYER_1 is connected, otherwise returns 1 for handheld-mode.
|
|
||||||
* @deprecated
|
|
||||||
*/
|
|
||||||
bool DEPRECATED hidGetHandheldMode(void);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief SendKeyboardLockKeyEvent
|
* @brief SendKeyboardLockKeyEvent
|
||||||
* @note Same as \ref hidsysSendKeyboardLockKeyEvent.
|
* @note Same as \ref hidsysSendKeyboardLockKeyEvent.
|
||||||
@ -2354,5 +2018,3 @@ Result hidSetTouchScreenConfiguration(const HidTouchScreenConfigurationForNx *co
|
|||||||
* @param[out] out Output flag.
|
* @param[out] out Output flag.
|
||||||
*/
|
*/
|
||||||
Result hidIsFirmwareUpdateNeededForNotification(bool *out);
|
Result hidIsFirmwareUpdateNeededForNotification(bool *out);
|
||||||
|
|
||||||
#pragma GCC diagnostic pop
|
|
||||||
|
@ -22,21 +22,6 @@ static u8* g_sevenSixAxisSensorBuffer;
|
|||||||
static TransferMemory g_sevenSixAxisSensorTmem0;
|
static TransferMemory g_sevenSixAxisSensorTmem0;
|
||||||
static TransferMemory g_sevenSixAxisSensorTmem1;
|
static TransferMemory g_sevenSixAxisSensorTmem1;
|
||||||
|
|
||||||
static bool g_scanInputInitialized;
|
|
||||||
static RwLock g_hidLock;
|
|
||||||
|
|
||||||
static HidTouchScreenState g_touchScreenState;
|
|
||||||
static HidMouseState g_mouseState;
|
|
||||||
static HidKeyboardState g_keyboardState;
|
|
||||||
static HidNpadCommonState g_controllerEntries[10];
|
|
||||||
|
|
||||||
static u64 g_mouseOld, g_mouseHeld, g_mouseDown, g_mouseUp;
|
|
||||||
static u64 g_keyboardModOld, g_keyboardModHeld, g_keyboardModDown, g_keyboardModUp;
|
|
||||||
static u64 g_keyboardOld[4], g_keyboardHeld[4], g_keyboardDown[4], g_keyboardUp[4];
|
|
||||||
static u64 g_controllerOld[10], g_controllerHeld[10], g_controllerDown[10], g_controllerUp[10];
|
|
||||||
|
|
||||||
static HidControllerID g_controllerP1AutoID;
|
|
||||||
|
|
||||||
static Result _hidCreateAppletResource(Service* srv, Service* srv_out);
|
static Result _hidCreateAppletResource(Service* srv, Service* srv_out);
|
||||||
static Result _hidGetSharedMemoryHandle(Service* srv, Handle* handle_out);
|
static Result _hidGetSharedMemoryHandle(Service* srv, Handle* handle_out);
|
||||||
|
|
||||||
@ -46,8 +31,6 @@ static Result _hidActivateKeyboard(void);
|
|||||||
static Result _hidActivateNpad(void);
|
static Result _hidActivateNpad(void);
|
||||||
static Result _hidActivateGesture(void);
|
static Result _hidActivateGesture(void);
|
||||||
|
|
||||||
static Result _hidSetDualModeAll(void);
|
|
||||||
|
|
||||||
static Result _hidGetVibrationDeviceHandles(HidVibrationDeviceHandle *handles, s32 total_handles, HidNpadIdType id, HidNpadStyleTag style);
|
static Result _hidGetVibrationDeviceHandles(HidVibrationDeviceHandle *handles, s32 total_handles, HidNpadIdType id, HidNpadStyleTag style);
|
||||||
|
|
||||||
static Result _hidCreateActiveVibrationDeviceList(Service* srv_out);
|
static Result _hidCreateActiveVibrationDeviceList(Service* srv_out);
|
||||||
@ -86,36 +69,12 @@ void _hidCleanup(void) {
|
|||||||
if (g_sevenSixAxisSensorBuffer != NULL)
|
if (g_sevenSixAxisSensorBuffer != NULL)
|
||||||
diagAbortWithResult(MAKERESULT(Module_Libnx, LibnxError_ShouldNotHappen));
|
diagAbortWithResult(MAKERESULT(Module_Libnx, LibnxError_ShouldNotHappen));
|
||||||
|
|
||||||
g_scanInputInitialized = false;
|
|
||||||
serviceClose(&g_hidIActiveVibrationDeviceList);
|
serviceClose(&g_hidIActiveVibrationDeviceList);
|
||||||
shmemClose(&g_hidSharedmem);
|
shmemClose(&g_hidSharedmem);
|
||||||
serviceClose(&g_hidIAppletResource);
|
serviceClose(&g_hidIAppletResource);
|
||||||
serviceClose(&g_hidSrv);
|
serviceClose(&g_hidSrv);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _hidReset(void) {
|
|
||||||
// Reset internal state
|
|
||||||
memset(&g_touchScreenState, 0, sizeof(HidTouchScreenState));
|
|
||||||
memset(&g_mouseState, 0, sizeof(HidMouseState));
|
|
||||||
memset(&g_keyboardState, 0, sizeof(HidKeyboardState));
|
|
||||||
memset(g_controllerEntries, 0, sizeof(g_controllerEntries));
|
|
||||||
|
|
||||||
g_mouseOld = g_mouseHeld = g_mouseDown = g_mouseUp = 0;
|
|
||||||
g_keyboardModOld = g_keyboardModHeld = g_keyboardModDown = g_keyboardModUp = 0;
|
|
||||||
for (u32 i = 0; i < 4; i++)
|
|
||||||
g_keyboardOld[i] = g_keyboardHeld[i] = g_keyboardDown[i] = g_keyboardUp[i] = 0;
|
|
||||||
for (u32 i = 0; i < 10; i++)
|
|
||||||
g_controllerOld[i] = g_controllerHeld[i] = g_controllerDown[i] = g_controllerUp[i] = 0;
|
|
||||||
|
|
||||||
g_controllerP1AutoID = CONTROLLER_HANDHELD;
|
|
||||||
}
|
|
||||||
|
|
||||||
void hidReset(void) {
|
|
||||||
rwlockWriteLock(&g_hidLock);
|
|
||||||
_hidReset();
|
|
||||||
rwlockWriteUnlock(&g_hidLock);
|
|
||||||
}
|
|
||||||
|
|
||||||
Service* hidGetServiceSession(void) {
|
Service* hidGetServiceSession(void) {
|
||||||
return &g_hidSrv;
|
return &g_hidSrv;
|
||||||
}
|
}
|
||||||
@ -124,156 +83,6 @@ void* hidGetSharedmemAddr(void) {
|
|||||||
return shmemGetAddr(&g_hidSharedmem);
|
return shmemGetAddr(&g_hidSharedmem);
|
||||||
}
|
}
|
||||||
|
|
||||||
void hidScanInput(void) {
|
|
||||||
rwlockWriteLock(&g_hidLock);
|
|
||||||
|
|
||||||
if (!g_scanInputInitialized) {
|
|
||||||
Result rc;
|
|
||||||
|
|
||||||
hidInitializeNpad();
|
|
||||||
hidInitializeTouchScreen();
|
|
||||||
hidInitializeKeyboard();
|
|
||||||
hidInitializeMouse();
|
|
||||||
_hidReset();
|
|
||||||
|
|
||||||
rc = hidSetSupportedNpadStyleSet(HidNpadStyleSet_NpadStandard | HidNpadStyleTag_NpadSystemExt | HidNpadStyleTag_NpadSystem);
|
|
||||||
if (R_FAILED(rc)) diagAbortWithResult(rc);
|
|
||||||
|
|
||||||
static const HidNpadIdType idbuf[] = {
|
|
||||||
HidNpadIdType_No1,
|
|
||||||
HidNpadIdType_No2,
|
|
||||||
HidNpadIdType_No3,
|
|
||||||
HidNpadIdType_No4,
|
|
||||||
HidNpadIdType_No5,
|
|
||||||
HidNpadIdType_No6,
|
|
||||||
HidNpadIdType_No7,
|
|
||||||
HidNpadIdType_No8,
|
|
||||||
HidNpadIdType_Handheld,
|
|
||||||
};
|
|
||||||
|
|
||||||
rc = hidSetSupportedNpadIdType(idbuf, sizeof(idbuf)/sizeof(*idbuf));
|
|
||||||
if (R_FAILED(rc)) diagAbortWithResult(rc);
|
|
||||||
|
|
||||||
rc = _hidSetDualModeAll();
|
|
||||||
if (R_FAILED(rc)) diagAbortWithResult(rc);
|
|
||||||
|
|
||||||
rc = hidSetNpadJoyHoldType(HidNpadJoyHoldType_Vertical);
|
|
||||||
if (R_FAILED(rc)) diagAbortWithResult(rc);
|
|
||||||
|
|
||||||
g_scanInputInitialized = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_mouseOld = g_mouseHeld;
|
|
||||||
g_keyboardModOld = g_keyboardModHeld;
|
|
||||||
memcpy(g_keyboardOld, g_keyboardHeld, sizeof(g_keyboardOld));
|
|
||||||
memcpy(g_controllerOld, g_controllerHeld, sizeof(g_controllerOld));
|
|
||||||
|
|
||||||
g_mouseHeld = 0;
|
|
||||||
g_keyboardModHeld = 0;
|
|
||||||
memset(g_keyboardHeld, 0, sizeof(g_keyboardHeld));
|
|
||||||
memset(g_controllerHeld, 0, sizeof(g_controllerHeld));
|
|
||||||
memset(&g_touchScreenState, 0, sizeof(HidTouchScreenState));
|
|
||||||
memset(&g_mouseState, 0, sizeof(HidMouseState));
|
|
||||||
memset(&g_keyboardState, 0, sizeof(HidKeyboardState));
|
|
||||||
memset(g_controllerEntries, 0, sizeof(g_controllerEntries));
|
|
||||||
|
|
||||||
if (hidGetTouchScreenStates(&g_touchScreenState, 1)) {
|
|
||||||
if (g_touchScreenState.count >= 1)
|
|
||||||
g_controllerHeld[CONTROLLER_HANDHELD] |= KEY_TOUCH;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hidGetMouseStates(&g_mouseState, 1)) {
|
|
||||||
g_mouseHeld = g_mouseState.buttons;
|
|
||||||
g_mouseDown = (~g_mouseOld) & g_mouseHeld;
|
|
||||||
g_mouseUp = g_mouseOld & (~g_mouseHeld);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hidGetKeyboardStates(&g_keyboardState, 1)) {
|
|
||||||
g_keyboardModHeld = g_keyboardState.modifiers;
|
|
||||||
for (u32 i = 0; i < 4; i++) {
|
|
||||||
g_keyboardHeld[i] = g_keyboardState.keys[i];
|
|
||||||
}
|
|
||||||
g_keyboardModDown = (~g_keyboardModOld) & g_keyboardModHeld;
|
|
||||||
g_keyboardModUp = g_keyboardModOld & (~g_keyboardModHeld);
|
|
||||||
for (u32 i = 0; i < 4; i++) {
|
|
||||||
g_keyboardDown[i] = (~g_keyboardOld[i]) & g_keyboardHeld[i];
|
|
||||||
g_keyboardUp[i] = g_keyboardOld[i] & (~g_keyboardHeld[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (u32 i = 0; i < 10; i++) {
|
|
||||||
HidNpadIdType id = hidControllerIDToNpadIdType(i);
|
|
||||||
u32 style_set = hidGetNpadStyleSet(id);
|
|
||||||
size_t total_out=0;
|
|
||||||
|
|
||||||
if (style_set & HidNpadStyleTag_NpadSystemExt) {
|
|
||||||
HidNpadSystemExtState state={0};
|
|
||||||
total_out = hidGetNpadStatesSystemExt(id, &state, 1);
|
|
||||||
if (total_out) {
|
|
||||||
g_controllerHeld[i] |= state.buttons;
|
|
||||||
memcpy(&g_controllerEntries[i], &state, sizeof(state));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (style_set & HidNpadStyleTag_NpadSystem) {
|
|
||||||
HidNpadSystemState state={0};
|
|
||||||
total_out = hidGetNpadStatesSystem(id, &state, 1);
|
|
||||||
if (total_out) {
|
|
||||||
g_controllerHeld[i] |= state.buttons;
|
|
||||||
memcpy(&g_controllerEntries[i], &state, sizeof(state));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (style_set & HidNpadStyleTag_NpadFullKey) {
|
|
||||||
HidNpadFullKeyState state={0};
|
|
||||||
total_out = hidGetNpadStatesFullKey(id, &state, 1);
|
|
||||||
if (total_out) {
|
|
||||||
g_controllerHeld[i] |= state.buttons;
|
|
||||||
memcpy(&g_controllerEntries[i], &state, sizeof(state));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (style_set & HidNpadStyleTag_NpadHandheld) {
|
|
||||||
HidNpadHandheldState state={0};
|
|
||||||
total_out = hidGetNpadStatesHandheld(id, &state, 1);
|
|
||||||
if (total_out) {
|
|
||||||
g_controllerHeld[i] |= state.buttons;
|
|
||||||
memcpy(&g_controllerEntries[i], &state, sizeof(state));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (style_set & HidNpadStyleTag_NpadJoyDual) {
|
|
||||||
HidNpadJoyDualState state={0};
|
|
||||||
total_out = hidGetNpadStatesJoyDual(id, &state, 1);
|
|
||||||
if (total_out) {
|
|
||||||
g_controllerHeld[i] |= state.buttons;
|
|
||||||
memcpy(&g_controllerEntries[i], &state, sizeof(state));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (style_set & HidNpadStyleTag_NpadJoyLeft) {
|
|
||||||
HidNpadJoyLeftState state={0};
|
|
||||||
total_out = hidGetNpadStatesJoyLeft(id, &state, 1);
|
|
||||||
if (total_out) {
|
|
||||||
g_controllerHeld[i] |= state.buttons;
|
|
||||||
memcpy(&g_controllerEntries[i], &state, sizeof(state));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (style_set & HidNpadStyleTag_NpadJoyRight) {
|
|
||||||
HidNpadJoyRightState state={0};
|
|
||||||
total_out = hidGetNpadStatesJoyRight(id, &state, 1);
|
|
||||||
if (total_out) {
|
|
||||||
g_controllerHeld[i] |= state.buttons;
|
|
||||||
memcpy(&g_controllerEntries[i], &state, sizeof(state));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
g_controllerDown[i] = (~g_controllerOld[i]) & g_controllerHeld[i];
|
|
||||||
g_controllerUp[i] = g_controllerOld[i] & (~g_controllerHeld[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_controllerP1AutoID = CONTROLLER_HANDHELD;
|
|
||||||
if (g_controllerEntries[CONTROLLER_PLAYER_1].attributes & HidNpadAttribute_IsConnected)
|
|
||||||
g_controllerP1AutoID = CONTROLLER_PLAYER_1;
|
|
||||||
|
|
||||||
rwlockWriteUnlock(&g_hidLock);
|
|
||||||
}
|
|
||||||
|
|
||||||
static HidNpadInternalState* _hidGetNpadInternalState(HidNpadIdType id) {
|
static HidNpadInternalState* _hidGetNpadInternalState(HidNpadIdType id) {
|
||||||
HidSharedMemory *sharedmem = (HidSharedMemory*)hidGetSharedmemAddr();
|
HidSharedMemory *sharedmem = (HidSharedMemory*)hidGetSharedmemAddr();
|
||||||
if (sharedmem == NULL)
|
if (sharedmem == NULL)
|
||||||
@ -647,13 +456,13 @@ size_t hidGetNpadStatesSystem(HidNpadIdType id, HidNpadSystemState *states, size
|
|||||||
u64 buttons = states[i].buttons;
|
u64 buttons = states[i].buttons;
|
||||||
u64 new_buttons = 0;
|
u64 new_buttons = 0;
|
||||||
|
|
||||||
if (buttons & KEY_LEFT) new_buttons |= KEY_DLEFT;
|
if (buttons & HidNpadButton_AnyLeft) new_buttons |= HidNpadButton_Left;
|
||||||
if (buttons & KEY_UP) new_buttons |= KEY_DUP;
|
if (buttons & HidNpadButton_AnyUp) new_buttons |= HidNpadButton_Up;
|
||||||
if (buttons & KEY_RIGHT) new_buttons |= KEY_DRIGHT;
|
if (buttons & HidNpadButton_AnyRight) new_buttons |= HidNpadButton_Right;
|
||||||
if (buttons & KEY_DOWN) new_buttons |= KEY_DDOWN;
|
if (buttons & HidNpadButton_AnyDown) new_buttons |= HidNpadButton_Down;
|
||||||
if (buttons & (KEY_L|KEY_ZL)) new_buttons |= KEY_L; // sdknso would mask out this button on the else condition for both of these, but it was already clear anyway.
|
if (buttons & (HidNpadButton_L|HidNpadButton_ZL)) new_buttons |= HidNpadButton_L; // sdknso would mask out this button on the else condition for both of these, but it was already clear anyway.
|
||||||
if (buttons & (KEY_R|KEY_ZR)) new_buttons |= KEY_R;
|
if (buttons & (HidNpadButton_R|HidNpadButton_ZR)) new_buttons |= HidNpadButton_R;
|
||||||
buttons = new_buttons | (buttons & (KEY_A|KEY_B|KEY_X|KEY_Y));
|
buttons = new_buttons | (buttons & (HidNpadButton_A|HidNpadButton_B|HidNpadButton_X|HidNpadButton_Y));
|
||||||
|
|
||||||
// sdknso would handle button-bitmasking with ControlPadRestriction here.
|
// sdknso would handle button-bitmasking with ControlPadRestriction here.
|
||||||
|
|
||||||
@ -719,251 +528,6 @@ size_t hidGetGestureStates(HidGestureState *states, size_t count) {
|
|||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool hidIsControllerConnected(HidControllerID id) {
|
|
||||||
if (id==CONTROLLER_P1_AUTO)
|
|
||||||
return hidIsControllerConnected(g_controllerP1AutoID);
|
|
||||||
if (id < 0 || id > 9) return 0;
|
|
||||||
|
|
||||||
rwlockReadLock(&g_hidLock);
|
|
||||||
bool flag = (g_controllerEntries[id].attributes & HidNpadAttribute_IsConnected) != 0;
|
|
||||||
rwlockReadUnlock(&g_hidLock);
|
|
||||||
return flag;
|
|
||||||
}
|
|
||||||
|
|
||||||
u64 hidKeysHeld(HidControllerID id) {
|
|
||||||
if (id==CONTROLLER_P1_AUTO) return hidKeysHeld(g_controllerP1AutoID);
|
|
||||||
if (id < 0 || id > 9) return 0;
|
|
||||||
|
|
||||||
rwlockReadLock(&g_hidLock);
|
|
||||||
u64 tmp = g_controllerHeld[id];
|
|
||||||
rwlockReadUnlock(&g_hidLock);
|
|
||||||
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
u64 hidKeysDown(HidControllerID id) {
|
|
||||||
if (id==CONTROLLER_P1_AUTO) return hidKeysDown(g_controllerP1AutoID);
|
|
||||||
if (id < 0 || id > 9) return 0;
|
|
||||||
|
|
||||||
rwlockReadLock(&g_hidLock);
|
|
||||||
u64 tmp = g_controllerDown[id];
|
|
||||||
rwlockReadUnlock(&g_hidLock);
|
|
||||||
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
u64 hidKeysUp(HidControllerID id) {
|
|
||||||
if (id==CONTROLLER_P1_AUTO) return hidKeysUp(g_controllerP1AutoID);
|
|
||||||
if (id < 0 || id > 9) return 0;
|
|
||||||
|
|
||||||
rwlockReadLock(&g_hidLock);
|
|
||||||
u64 tmp = g_controllerUp[id];
|
|
||||||
rwlockReadUnlock(&g_hidLock);
|
|
||||||
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
u64 hidMouseButtonsHeld(void) {
|
|
||||||
rwlockReadLock(&g_hidLock);
|
|
||||||
u64 tmp = g_mouseHeld;
|
|
||||||
rwlockReadUnlock(&g_hidLock);
|
|
||||||
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
u64 hidMouseButtonsDown(void) {
|
|
||||||
rwlockReadLock(&g_hidLock);
|
|
||||||
u64 tmp = g_mouseDown;
|
|
||||||
rwlockReadUnlock(&g_hidLock);
|
|
||||||
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
u64 hidMouseButtonsUp(void) {
|
|
||||||
rwlockReadLock(&g_hidLock);
|
|
||||||
u64 tmp = g_mouseUp;
|
|
||||||
rwlockReadUnlock(&g_hidLock);
|
|
||||||
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
void hidMouseRead(MousePosition *pos) {
|
|
||||||
rwlockReadLock(&g_hidLock);
|
|
||||||
pos->x = g_mouseState.x;
|
|
||||||
pos->y = g_mouseState.y;
|
|
||||||
pos->velocityX = g_mouseState.delta_x;
|
|
||||||
pos->velocityY = g_mouseState.delta_y;
|
|
||||||
pos->scrollVelocityX = g_mouseState.wheel_delta_x;
|
|
||||||
pos->scrollVelocityY = g_mouseState.wheel_delta_y;
|
|
||||||
rwlockReadUnlock(&g_hidLock);
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 hidMouseMultiRead(MousePosition *entries, u32 num_entries) {
|
|
||||||
HidMouseState temp_states[17];
|
|
||||||
|
|
||||||
if (!entries || !num_entries) return 0;
|
|
||||||
if (num_entries > 17) num_entries = 17;
|
|
||||||
|
|
||||||
memset(entries, 0, sizeof(MousePosition) * num_entries);
|
|
||||||
|
|
||||||
size_t total = hidGetMouseStates(temp_states, num_entries);
|
|
||||||
|
|
||||||
for (size_t i=0; i<total; i++) {
|
|
||||||
entries[i].x = temp_states[i].x;
|
|
||||||
entries[i].y = temp_states[i].y;
|
|
||||||
entries[i].velocityX = temp_states[i].delta_x;
|
|
||||||
entries[i].velocityY = temp_states[i].delta_y;
|
|
||||||
entries[i].scrollVelocityX = temp_states[i].wheel_delta_x;
|
|
||||||
entries[i].scrollVelocityY = temp_states[i].wheel_delta_y;
|
|
||||||
}
|
|
||||||
|
|
||||||
return total;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool hidKeyboardModifierHeld(HidKeyboardModifier modifier) {
|
|
||||||
rwlockReadLock(&g_hidLock);
|
|
||||||
bool tmp = g_keyboardModHeld & modifier;
|
|
||||||
rwlockReadUnlock(&g_hidLock);
|
|
||||||
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool hidKeyboardModifierDown(HidKeyboardModifier modifier) {
|
|
||||||
rwlockReadLock(&g_hidLock);
|
|
||||||
bool tmp = g_keyboardModDown & modifier;
|
|
||||||
rwlockReadUnlock(&g_hidLock);
|
|
||||||
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool hidKeyboardModifierUp(HidKeyboardModifier modifier) {
|
|
||||||
rwlockReadLock(&g_hidLock);
|
|
||||||
bool tmp = g_keyboardModUp & modifier;
|
|
||||||
rwlockReadUnlock(&g_hidLock);
|
|
||||||
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool hidKeyboardHeld(HidKeyboardScancode key) {
|
|
||||||
rwlockReadLock(&g_hidLock);
|
|
||||||
bool tmp = g_keyboardHeld[key / 64] & (UINT64_C(1) << (key % 64));
|
|
||||||
rwlockReadUnlock(&g_hidLock);
|
|
||||||
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool hidKeyboardDown(HidKeyboardScancode key) {
|
|
||||||
rwlockReadLock(&g_hidLock);
|
|
||||||
bool tmp = g_keyboardDown[key / 64] & (UINT64_C(1) << (key % 64));
|
|
||||||
rwlockReadUnlock(&g_hidLock);
|
|
||||||
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool hidKeyboardUp(HidKeyboardScancode key) {
|
|
||||||
rwlockReadLock(&g_hidLock);
|
|
||||||
bool tmp = g_keyboardUp[key / 64] & (UINT64_C(1) << (key % 64));
|
|
||||||
rwlockReadUnlock(&g_hidLock);
|
|
||||||
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 hidTouchCount(void) {
|
|
||||||
return g_touchScreenState.count;
|
|
||||||
}
|
|
||||||
|
|
||||||
void hidTouchRead(touchPosition *pos, u32 point_id) {
|
|
||||||
if (pos) {
|
|
||||||
if (point_id >= g_touchScreenState.count) {
|
|
||||||
memset(pos, 0, sizeof(touchPosition));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
pos->id = g_touchScreenState.touches[point_id].finger_id;
|
|
||||||
pos->px = g_touchScreenState.touches[point_id].x;
|
|
||||||
pos->py = g_touchScreenState.touches[point_id].y;
|
|
||||||
pos->dx = g_touchScreenState.touches[point_id].diameter_x;
|
|
||||||
pos->dy = g_touchScreenState.touches[point_id].diameter_y;
|
|
||||||
pos->angle = g_touchScreenState.touches[point_id].rotation_angle;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void hidJoystickRead(JoystickPosition *pos, HidControllerID id, HidControllerJoystick stick) {
|
|
||||||
if (id == CONTROLLER_P1_AUTO) return hidJoystickRead(pos, g_controllerP1AutoID, stick);
|
|
||||||
|
|
||||||
if (pos) {
|
|
||||||
if (id < 0 || id > 9 || stick >= JOYSTICK_NUM_STICKS) {
|
|
||||||
memset(pos, 0, sizeof(*pos));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
rwlockReadLock(&g_hidLock);
|
|
||||||
memcpy(pos, stick==JOYSTICK_LEFT ? &g_controllerEntries[id].analog_stick_l : &g_controllerEntries[id].analog_stick_r, sizeof(HidAnalogStickState));
|
|
||||||
rwlockReadUnlock(&g_hidLock);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 hidSixAxisSensorValuesRead(SixAxisSensorValues *values, HidControllerID id, u32 num_entries) {
|
|
||||||
HidSixAxisSensorState temp_states[17];
|
|
||||||
|
|
||||||
if (!values || !num_entries) return 0;
|
|
||||||
|
|
||||||
if (id == CONTROLLER_P1_AUTO) id = g_controllerP1AutoID;
|
|
||||||
|
|
||||||
memset(values, 0, sizeof(SixAxisSensorValues) * num_entries);
|
|
||||||
if (id < 0 || id > 9) return 0;
|
|
||||||
if (num_entries > 17) num_entries = 17;
|
|
||||||
|
|
||||||
HidNpadIdType npad_id = hidControllerIDToNpadIdType(id);
|
|
||||||
u32 style_set = hidGetNpadStyleSet(npad_id);
|
|
||||||
size_t num_handles = 1;
|
|
||||||
size_t handle_idx = 0;
|
|
||||||
style_set &= -style_set; // retrieve least significant set bit
|
|
||||||
|
|
||||||
if (style_set == HidNpadStyleTag_NpadJoyDual) {
|
|
||||||
u32 device_type = hidGetNpadDeviceType(npad_id);
|
|
||||||
num_handles = 2;
|
|
||||||
if (device_type & HidDeviceTypeBits_JoyLeft)
|
|
||||||
handle_idx = 0;
|
|
||||||
else if (device_type & HidDeviceTypeBits_JoyRight)
|
|
||||||
handle_idx = 1;
|
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
HidSixAxisSensorHandle handles[2];
|
|
||||||
Result rc = hidGetSixAxisSensorHandles(handles, num_handles, npad_id, style_set);
|
|
||||||
if (R_FAILED(rc))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
size_t total = hidGetSixAxisSensorStates(handles[handle_idx], temp_states, num_entries);
|
|
||||||
|
|
||||||
for (size_t i=0; i<total; i++) {
|
|
||||||
values[i].accelerometer = temp_states[i].acceleration;
|
|
||||||
values[i].gyroscope = temp_states[i].angular_velocity;
|
|
||||||
values[i].unk = temp_states[i].angle;
|
|
||||||
memcpy(values[i].orientation, &temp_states[i].direction, sizeof(temp_states[i].direction));
|
|
||||||
}
|
|
||||||
|
|
||||||
return total;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool hidGetHandheldMode(void) {
|
|
||||||
return g_controllerP1AutoID == CONTROLLER_HANDHELD;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Result _hidSetDualModeAll(void) {
|
|
||||||
Result rc = 0;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i=0; i<8; i++) {
|
|
||||||
rc = hidSetNpadJoyAssignmentModeDual(i);
|
|
||||||
if (R_FAILED(rc)) break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Result _hidCmdNoIO(Service* srv, u32 cmd_id) {
|
static Result _hidCmdNoIO(Service* srv, u32 cmd_id) {
|
||||||
return serviceDispatch(srv, cmd_id);
|
return serviceDispatch(srv, cmd_id);
|
||||||
}
|
}
|
||||||
@ -1211,7 +775,6 @@ Result hidSendKeyboardLockKeyEvent(u32 events) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Result hidGetSixAxisSensorHandles(HidSixAxisSensorHandle *handles, s32 total_handles, HidNpadIdType id, HidNpadStyleTag style) {
|
Result hidGetSixAxisSensorHandles(HidSixAxisSensorHandle *handles, s32 total_handles, HidNpadIdType id, HidNpadStyleTag style) {
|
||||||
if (id == (HidNpadIdType)CONTROLLER_HANDHELD) id = HidNpadIdType_Handheld; // Correct enum value for old users passing HidControllerID instead (avoids a hid sysmodule fatal later on)
|
|
||||||
return _hidGetSixAxisSensorHandles(handles, total_handles, id, style);
|
return _hidGetSixAxisSensorHandles(handles, total_handles, id, style);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1498,8 +1061,6 @@ Result hidInitializeVibrationDevices(HidVibrationDeviceHandle *handles, s32 tota
|
|||||||
Result rc=0;
|
Result rc=0;
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
if (id == (HidNpadIdType)CONTROLLER_HANDHELD) id = HidNpadIdType_Handheld; // Correct enum value for old users passing HidControllerID instead (avoids a hid sysmodule fatal later on)
|
|
||||||
|
|
||||||
rc = _hidGetVibrationDeviceHandles(handles, total_handles, id, style);
|
rc = _hidGetVibrationDeviceHandles(handles, total_handles, id, style);
|
||||||
if (R_FAILED(rc)) return rc;
|
if (R_FAILED(rc)) return rc;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user