mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 12:32:40 +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 "../sf/service.h"
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
// Begin enums and output structs
|
||||
|
||||
/// HidDebugPadButton
|
||||
@ -64,184 +61,6 @@ typedef enum {
|
||||
HidKeyboardModifier_Hiragana = BIT(12),
|
||||
} 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
|
||||
typedef enum {
|
||||
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;
|
||||
|
||||
/// 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
|
||||
typedef enum {
|
||||
HidDebugPadAttribute_IsConnected = BIT(0), ///< IsConnected
|
||||
@ -457,21 +219,6 @@ typedef enum {
|
||||
HidGestureType_Rotate = 9, ///< Rotate
|
||||
} 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
|
||||
typedef enum {
|
||||
HidGyroscopeZeroDriftMode_Loose = 0, ///< Loose
|
||||
@ -673,38 +420,12 @@ typedef enum {
|
||||
HidPalmaFeature_MuteSwitch = BIT(3), ///< MuteSwitch
|
||||
} HidPalmaFeature;
|
||||
|
||||
/// touchPosition \deprecated
|
||||
typedef struct DEPRECATED touchPosition {
|
||||
u32 id;
|
||||
u32 px;
|
||||
u32 py;
|
||||
u32 dx;
|
||||
u32 dy;
|
||||
u32 angle;
|
||||
} touchPosition;
|
||||
|
||||
/// HidAnalogStickState
|
||||
typedef struct HidAnalogStickState {
|
||||
s32 x; ///< X
|
||||
s32 y; ///< Y
|
||||
} 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
|
||||
typedef struct HidVector {
|
||||
float x;
|
||||
@ -717,14 +438,6 @@ typedef struct HidDirectionState {
|
||||
float direction[3][3]; ///< 3x3 matrix
|
||||
} HidDirectionState;
|
||||
|
||||
/// SixAxisSensorValues \deprecated DEPRECATED
|
||||
typedef struct DEPRECATED SixAxisSensorValues {
|
||||
HidVector accelerometer;
|
||||
HidVector gyroscope;
|
||||
HidVector unk;
|
||||
HidVector orientation[3];
|
||||
} SixAxisSensorValues;
|
||||
|
||||
#define JOYSTICK_MAX (0x7FFF)
|
||||
#define JOYSTICK_MIN (-0x7FFF)
|
||||
|
||||
@ -1300,34 +1013,18 @@ typedef struct HidPalmaActivityEntry {
|
||||
u16 wave_index; ///< WaveIndex
|
||||
} 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.
|
||||
Result hidInitialize(void);
|
||||
|
||||
/// Exit hid. Called automatically during app exit.
|
||||
void hidExit(void);
|
||||
|
||||
void DEPRECATED hidReset(void); ///< \deprecated
|
||||
|
||||
/// Gets the Service object for the actual hid service session.
|
||||
Service* hidGetServiceSession(void);
|
||||
|
||||
/// Gets the address of the SharedMemory.
|
||||
void* hidGetSharedmemAddr(void);
|
||||
|
||||
void DEPRECATED hidScanInput(void); ///< \deprecated
|
||||
|
||||
///@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
|
||||
* @note Same as \ref hidsysSendKeyboardLockKeyEvent.
|
||||
@ -2354,5 +2018,3 @@ Result hidSetTouchScreenConfiguration(const HidTouchScreenConfigurationForNx *co
|
||||
* @param[out] out Output flag.
|
||||
*/
|
||||
Result hidIsFirmwareUpdateNeededForNotification(bool *out);
|
||||
|
||||
#pragma GCC diagnostic pop
|
||||
|
@ -22,21 +22,6 @@ static u8* g_sevenSixAxisSensorBuffer;
|
||||
static TransferMemory g_sevenSixAxisSensorTmem0;
|
||||
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 _hidGetSharedMemoryHandle(Service* srv, Handle* handle_out);
|
||||
|
||||
@ -46,8 +31,6 @@ static Result _hidActivateKeyboard(void);
|
||||
static Result _hidActivateNpad(void);
|
||||
static Result _hidActivateGesture(void);
|
||||
|
||||
static Result _hidSetDualModeAll(void);
|
||||
|
||||
static Result _hidGetVibrationDeviceHandles(HidVibrationDeviceHandle *handles, s32 total_handles, HidNpadIdType id, HidNpadStyleTag style);
|
||||
|
||||
static Result _hidCreateActiveVibrationDeviceList(Service* srv_out);
|
||||
@ -86,36 +69,12 @@ void _hidCleanup(void) {
|
||||
if (g_sevenSixAxisSensorBuffer != NULL)
|
||||
diagAbortWithResult(MAKERESULT(Module_Libnx, LibnxError_ShouldNotHappen));
|
||||
|
||||
g_scanInputInitialized = false;
|
||||
serviceClose(&g_hidIActiveVibrationDeviceList);
|
||||
shmemClose(&g_hidSharedmem);
|
||||
serviceClose(&g_hidIAppletResource);
|
||||
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) {
|
||||
return &g_hidSrv;
|
||||
}
|
||||
@ -124,156 +83,6 @@ void* hidGetSharedmemAddr(void) {
|
||||
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) {
|
||||
HidSharedMemory *sharedmem = (HidSharedMemory*)hidGetSharedmemAddr();
|
||||
if (sharedmem == NULL)
|
||||
@ -647,13 +456,13 @@ size_t hidGetNpadStatesSystem(HidNpadIdType id, HidNpadSystemState *states, size
|
||||
u64 buttons = states[i].buttons;
|
||||
u64 new_buttons = 0;
|
||||
|
||||
if (buttons & KEY_LEFT) new_buttons |= KEY_DLEFT;
|
||||
if (buttons & KEY_UP) new_buttons |= KEY_DUP;
|
||||
if (buttons & KEY_RIGHT) new_buttons |= KEY_DRIGHT;
|
||||
if (buttons & KEY_DOWN) new_buttons |= KEY_DDOWN;
|
||||
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 & (KEY_R|KEY_ZR)) new_buttons |= KEY_R;
|
||||
buttons = new_buttons | (buttons & (KEY_A|KEY_B|KEY_X|KEY_Y));
|
||||
if (buttons & HidNpadButton_AnyLeft) new_buttons |= HidNpadButton_Left;
|
||||
if (buttons & HidNpadButton_AnyUp) new_buttons |= HidNpadButton_Up;
|
||||
if (buttons & HidNpadButton_AnyRight) new_buttons |= HidNpadButton_Right;
|
||||
if (buttons & HidNpadButton_AnyDown) new_buttons |= HidNpadButton_Down;
|
||||
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 & (HidNpadButton_R|HidNpadButton_ZR)) new_buttons |= HidNpadButton_R;
|
||||
buttons = new_buttons | (buttons & (HidNpadButton_A|HidNpadButton_B|HidNpadButton_X|HidNpadButton_Y));
|
||||
|
||||
// sdknso would handle button-bitmasking with ControlPadRestriction here.
|
||||
|
||||
@ -719,251 +528,6 @@ size_t hidGetGestureStates(HidGestureState *states, size_t count) {
|
||||
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) {
|
||||
return serviceDispatch(srv, cmd_id);
|
||||
}
|
||||
@ -1211,7 +775,6 @@ Result hidSendKeyboardLockKeyEvent(u32 events) {
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@ -1498,8 +1061,6 @@ Result hidInitializeVibrationDevices(HidVibrationDeviceHandle *handles, s32 tota
|
||||
Result rc=0;
|
||||
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);
|
||||
if (R_FAILED(rc)) return rc;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user