HID Shared Memory: Difference between revisions
No edit summary |
No edit summary |
||
| Line 1,029: | Line 1,029: | ||
|} | |} | ||
====== UniquePadConfig ====== | |||
This is "nn::hid::detail::UniquePadConfig". | This is "nn::hid::detail::UniquePadConfig". | ||
| Line 1,115: | Line 1,115: | ||
|} | |} | ||
====== AnalogStickCalibrationStateImpl ====== | |||
This is "nn::hid::detail::AnalogStickCalibrationStateImpl". | This is "nn::hid::detail::AnalogStickCalibrationStateImpl". | ||
| Line 1,189: | Line 1,189: | ||
|} | |} | ||
====== UniquePadConfig ====== | |||
This is "nn::hid::detail::UniquePadConfig". | This is "nn::hid::detail::UniquePadConfig". | ||
Revision as of 20:36, 18 November 2020
HID shared memory is a 0x40000 byte read-only segment of memory shared between applications for input. The segment contains structures for most if not all input methods available to applications.
This is "nn::hid::detail::SharedMemoryFormat".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x400 | DebugPad |
| 0x400 | 0x3000 | TouchScreen |
| 0x3400 | 0x400 | Mouse |
| 0x3800 | 0x400 | Keyboard |
| 0x3C00 | 0x1000 | [1.0.0-9.2.0] BasicXpad |
| 0x3C00 | [10.0.0+] Digitizer | |
| 0x4C00 | 0x200 | HomeButton |
| 0x4E00 | 0x200 | SleepButton |
| 0x5000 | 0x200 | CaptureButton |
| 0x5200 | 0x800 (0x80 * 0x10) | InputDetector |
| 0x5A00 | 0x4000 (0x400 * 0x10) | [1.0.0-4.1.0] UniquePad |
| 0x9A00 | 0x32000 (0x5000 * 0x0A) | Npad |
| 0x3BA00 | 0x800 | Gesture |
| 0x3C200 | 0x20 | [5.0.0+] ConsoleSixAxisSensor |
This is "nn::hid::detail::DebugPadSharedMemoryFormat".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x2C8 | #DebugPadLifo |
DebugPadLifo
This is "nn::hid::detail::DebugPadLifo". This is a RingLifo object.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | RingLifoVptr |
| 0x8 | 0x8 | BufferCount |
| 0x10 | 0x8 | Tail |
| 0x18 | 0x8 | Count |
| 0x20 | 0x28 * 17 | Array of #DebugPadStateAtomicStorage |
DebugPadStateAtomicStorage
This is "nn::hid::detail::DebugPadStateAtomicStorage".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x20 | #DebugPadState |
DebugPadState
This is "nn::hid::DebugPadState".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x4 | Attributes |
| 0xC | 0x4 | Buttons |
| 0x10 | 0x8 | AnalogStickR |
| 0x18 | 0x8 | AnalogStickL |
This is "nn::hid::detail::TouchScreenSharedMemoryFormat".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x2C38 | #TouchScreenLifo |
TouchScreenLifo
This is "nn::hid::detail::TouchScreenLifo". This is a RingLifo object.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | RingLifoVptr |
| 0x8 | 0x8 | BufferCount |
| 0x10 | 0x8 | Tail |
| 0x18 | 0x8 | Count |
| 0x20 | 0x298 * 17 | Array of #TouchScreenStateAtomicStorage |
TouchScreenStateAtomicStorage
This is "nn::hid::detail::TouchScreenStateAtomicStorage".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x290 | #TouchScreenState |
TouchScreenState
This is "nn::hid::detail::TouchScreenState".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x4 | Count |
| 0xC | 0x4 | Reserved |
| 0x10 | 0x28 * 16 | Touches |
TouchState
This is "nn::hid::TouchState".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | DeltaTime |
| 0x8 | 0x4 | Attributes |
| 0xC | 0x4 | FingerId |
| 0x10 | 0x4 | X |
| 0x14 | 0x4 | Y |
| 0x18 | 0x4 | DiameterX |
| 0x1C | 0x4 | DiameterY |
| 0x20 | 0x4 | RotationAngle |
| 0x24 | 0x4 | Reserved |
This is "nn::hid::detail::MouseSharedMemoryFormat".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x350 | #MouseLifo |
MouseLifo
This is "nn::hid::detail::MouseLifo". This is a RingLifo object.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | RingLifoVptr |
| 0x8 | 0x8 | BufferCount |
| 0x10 | 0x8 | Tail |
| 0x18 | 0x8 | Count |
| 0x20 | 0x30 * 17 | Array of #MouseStateAtomicStorage |
MouseStateAtomicStorage
This is "nn::hid::detail::MouseStateAtomicStorage".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x28 | #MouseState |
MouseState
This is "nn::hid::detail::MouseState".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x4 | X |
| 0xC | 0x4 | Y |
| 0x10 | 0x4 | DeltaX |
| 0x14 | 0x4 | DeltaY |
| 0x18 | 0x4 | WheelDeltaX |
| 0x1C | 0x4 | WheelDeltaY |
| 0x20 | 0x4 | Buttons |
| 0x24 | 0x4 | Attributes |
This is "nn::hid::detail::KeyboardSharedMemoryFormat".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x3D8 | #KeyboardLifo |
KeyboardLifo
This is "nn::hid::detail::KeyboardLifo". This is a RingLifo object.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | RingLifoVptr |
| 0x8 | 0x8 | BufferCount |
| 0x10 | 0x8 | Tail |
| 0x18 | 0x8 | Count |
| 0x20 | 0x38 * 17 | Array of #KeyboardStateAtomicStorage |
KeyboardStateAtomicStorage
This is "nn::hid::detail::KeyboardStateAtomicStorage".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x30 | #KeyboardState |
KeyboardState
This is "nn::hid::detail::KeyboardState".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x8 | Modifiers |
| 0x10 | 0x20 | Keys |
This is "nn::hid::detail::BasicXpadSharedMemoryFormat".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x400 * 4 | Array of #BasicXpadSharedMemoryEntry |
This is "nn::hid::detail::BasicXpadSharedMemoryEntry".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x2C8 | #BasicXpadLifo |
BasicXpadLifo
This is "nn::hid::detail::BasicXpadLifo". This is a RingLifo object.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | RingLifoVptr |
| 0x8 | 0x8 | BufferCount |
| 0x10 | 0x8 | Tail |
| 0x18 | 0x8 | Count |
| 0x20 | 0x28 * 17 | Array of #BasicXpadStateAtomicStorage |
BasicXpadStateAtomicStorage
This is "nn::hid::detail::BasicXpadStateAtomicStorage".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x20 | #BasicXpadState |
BasicXpadState
This is "nn::hid::detail::BasicXpadState".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x4 | Attributes |
| 0xC | 0x4 | Buttons |
| 0x10 | 0x8 | AnalogStickL |
| 0x18 | 0x8 | AnalogStickR |
This is "nn::hid::detail::HomeButtonSharedMemoryFormat".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x1B8 | #HomeButtonLifo |
HomeButtonLifo
This is "nn::hid::detail::HomeButtonLifo". This is a RingLifo object.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | RingLifoVptr |
| 0x8 | 0x8 | BufferCount |
| 0x10 | 0x8 | Tail |
| 0x18 | 0x8 | Count |
| 0x20 | 0x18 * 17 | Array of #HomeButtonStateAtomicStorage |
HomeButtonStateAtomicStorage
This is "nn::hid::detail::HomeButtonStateAtomicStorage".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x10 | #HomeButtonState |
HomeButtonState
This is "nn::hid::system::HomeButtonState".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x8 | Buttons |
This is "nn::hid::detail::SleepButtonSharedMemoryFormat".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x1B8 | #SleepButtonLifo |
SleepButtonLifo
This is "nn::hid::detail::SleepButtonLifo". This is a RingLifo object.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | RingLifoVptr |
| 0x8 | 0x8 | BufferCount |
| 0x10 | 0x8 | Tail |
| 0x18 | 0x8 | Count |
| 0x20 | 0x18 * 17 | Array of #SleepButtonStateAtomicStorage |
SleepButtonStateAtomicStorage
This is "nn::hid::detail::SleepButtonStateAtomicStorage".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x10 | #SleepButtonState |
SleepButtonState
This is "nn::hid::system::SleepButtonState".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x8 | Buttons |
This is "nn::hid::detail::CaptureButtonSharedMemoryFormat".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x1B8 | #CaptureButtonLifo |
CaptureButtonLifo
This is "nn::hid::detail::CaptureButtonLifo". This is a RingLifo object.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | RingLifoVptr |
| 0x8 | 0x8 | BufferCount |
| 0x10 | 0x8 | Tail |
| 0x18 | 0x8 | Count |
| 0x20 | 0x18 * 17 | Array of #CaptureButtonStateAtomicStorage |
CaptureButtonStateAtomicStorage
This is "nn::hid::detail::CaptureButtonStateAtomicStorage".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x10 | #CaptureButtonState |
CaptureButtonState
This is "nn::hid::system::CaptureButtonState".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x8 | Buttons |
This is "nn::hid::detail::InputDetectorSharedMemoryFormat".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x80 * 16 | Array of #InputDetectorSharedMemoryEntry |
This is "nn::hid::detail::InputDetectorSharedMemoryEntry".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x50 | #InputDetectorLifo |
InputDetectorLifo
This is "nn::hid::detail::InputDetectorLifo". This is a RingLifo object.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | RingLifoVptr |
| 0x8 | 0x8 | BufferCount |
| 0x10 | 0x8 | Tail |
| 0x18 | 0x8 | Count |
| 0x20 | 0x18 * 2 | Array of #InputDetectorStateAtomicStorage |
InputDetectorStateAtomicStorage
This is "nn::hid::detail::InputDetectorStateAtomicStorage".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x10 | #InputDetectorState |
InputDetectorState
This is "nn::hid::detail::InputDetectorState".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | InputSourceState |
| 0x8 | 0x8 | SamplingNumber |
This is "nn::hid::detail::UniquePadSharedMemoryFormat".
[5.0.0+] This section has been removed from #SharedMemoryFormat. #UniquePadSharedMemoryFormat is now a specialization of #NpadSharedMemoryFormat.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x400 * 16 | Array of #UniquePadSharedMemoryEntry |
This is "nn::hid::detail::UniquePadSharedMemoryEntry".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x1E0 | #UniquePadLifo |
UniquePadLifo
This is "nn::hid::detail::UniquePadLifo". This is a RingLifo object.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x80 | #UniquePadConfigLifo |
| 0x80 | 0x70 * 2 | Array of #AnalogStickCalibrationStateImplLifo |
| 0x160 | 0x40 | #SixAxisSensorUserCalibrationStateLifo |
| 0x1A0 | 0x8 | UniquePadConfigMutex |
UniquePadConfigLifo
This is "nn::hid::detail::UniquePadConfigLifo". This is a RingLifo object.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | RingLifoVptr |
| 0x8 | 0x8 | BufferCount |
| 0x10 | 0x8 | Tail |
| 0x18 | 0x8 | Count |
| 0x20 | 0x30 * 2 | Array of #UniquePadConfigAtomicStorage |
UniquePadConfigAtomicStorage
This is "nn::hid::detail::UniquePadConfigAtomicStorage".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x28 | #UniquePadConfig |
UniquePadConfig
This is "nn::hid::detail::UniquePadConfig".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x4 | Type |
| 0x4 | 0x4 | Interface |
| 0x8 | 0x10 | SerialNumber |
| 0x18 | 0x4 | ControllerNumber |
| 0x1C | 0x1 | IsActive |
| 0x1D | 0x3 | Reserved |
| 0x20 | 0x8 | SamplingNumber |
AnalogStickCalibrationStateImplLifo
This is "nn::hid::detail::AnalogStickCalibrationStateImplLifo". This is a RingLifo object.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | RingLifoVptr |
| 0x8 | 0x8 | BufferCount |
| 0x10 | 0x8 | Tail |
| 0x18 | 0x8 | Count |
| 0x20 | 0x28 * 2 | Array of #AnalogStickCalibrationStateImpl |
AnalogStickCalibrationStateImplAtomicStorage
This is "nn::hid::detail::AnalogStickCalibrationStateImplAtomicStorage".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x20 | #AnalogStickCalibrationStateImpl |
AnalogStickCalibrationStateImpl
This is "nn::hid::detail::AnalogStickCalibrationStateImpl".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | State |
| 0x8 | 0x8 | Flags |
| 0x10 | 0x8 | Stage |
| 0x18 | 0x8 | SamplingNumber |
SixAxisSensorUserCalibrationStateLifo
This is "nn::hid::detail::SixAxisSensorUserCalibrationStateLifo". This is a RingLifo object.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | RingLifoVptr |
| 0x8 | 0x8 | BufferCount |
| 0x10 | 0x8 | Tail |
| 0x18 | 0x8 | Count |
| 0x20 | 0x20 * 2 | Array of #SixAxisSensorUserCalibrationStateAtomicStorage |
SixAxisSensorUserCalibrationStateAtomicStorage
This is "nn::hid::detail::SixAxisSensorUserCalibrationStateAtomicStorage".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | SamplingNumber |
| 0x8 | 0x18 | #SixAxisSensorUserCalibrationState |
UniquePadConfig
This is "nn::hid::detail::UniquePadConfig".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Flags |
| 0x8 | 0x8 | Stage |
| 0x10 | 0x8 | SamplingNumber |
This is "nn::hid::detail::NpadSharedMemoryFormat".
This section contains a series of 10 0x5000 byte structures describing each available controller.
| Index | Description |
|---|---|
| 0 to 7 | Players 1 to 8 |
| 8 | Handheld Mode |
| 9 | Other |
NpadState
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x28 | #NpadStateHeader |
| 0x28 | 0x20 | NpadFullKeyHeader |
| 0x48 | 0x30 * 17 | Array of NpadFullKeyState |
| 0x378 | 0x20 | #NpadHandheldHeader |
| 0x398 | 0x30 * 17 | Array of #NpadHandheldState |
| 0x6C8 | 0x20 | NpadJoyDualHeader |
| 0x6E8 | 0x30 * 17 | Array of NpadJoyDualState |
| 0xA18 | 0x20 | NpadJoyLeftHeader |
| 0xA38 | 0x30 * 17 | Array of NpadJoyLeftState |
| 0xD68 | 0x20 | NpadJoyRightHeader |
| 0xD88 | 0x30 * 17 | Array of NpadJoyRightState |
| 0x10B8 | 0x20 | NpadPalmaHeader ([1.0.0-3.0.2] NpadSystemHeader) |
| 0x12B8 | 0x30 * 17 | Array of NpadPalmaState ([1.0.0-3.0.2] NpadSystemState) |
| 0x1408 | 0x20 | NpadSystemExtHeader ([4.0.0+] also used by NpadSystem) |
| 0x1428 | 0x30 * 17 | Array of NpadSystemExtState ([4.0.0+] also used by NpadSystem) |
| 0x1758 | 0x20 | NpadSixAxisSensorFullKeyHeader |
| 0x1778 | 0x68 * 17 | Array of NpadSixAxisSensorFullKeyState |
| 0x1E60 | 0x20 | NpadSixAxisSensorHandheldHeader |
| 0x1E80 | 0x68 * 17 | Array of NpadSixAxisSensorHandheldState |
| 0x2568 | 0x20 | NpadSixAxisSensorJoyLeftDualHeader |
| 0x2588 | 0x68 * 17 | Array of NpadSixAxisSensorJoyLeftDualState |
| 0x2C70 | 0x20 | NpadSixAxisSensorJoyRightDualHeader |
| 0x2C90 | 0x68 * 17 | Array of NpadSixAxisSensorJoyRightDualState |
| 0x3378 | 0x20 | NpadSixAxisSensorJoyLeftHeader |
| 0x3398 | 0x68 * 17 | Array of NpadSixAxisSensorJoyLeftState |
| 0x3A80 | 0x20 | NpadSixAxisSensorJoyRightHeader |
| 0x3AA0 | 0x68 * 17 | Array of NpadSixAxisSensorJoyRightState |
| 0x4188 | 0x4 | DeviceType |
| 0x418C | 0x4 | Padding |
| 0x4190 | 0x8 | #NpadSystemProperties |
| 0x4198 | 0x4 | #NpadSystemButtonProperties |
| 0x419C | 0x4 | BatteryIndex0 state (must be 0-4) |
| 0x41A0 | 0x4 | BatteryIndex1 state (must be 0-4) |
| 0x41A4 | 0x4 | BatteryIndex2 state (must be 0-4) |
| 0x41A8 | 0x20 | [1.0.0-3.0.2] NfcXcdDeviceHandleHeader (Replaced by commands GetXcdHandleForNpadWithNfc/IsNfcActivated) |
| 0x41C8 | 0x20 * 2 | [1.0.0-3.0.2] Array of #NfcXcdDeviceHandleState (See above) |
| 0x41A8 | 0x4 | [9.0.0+] AppletFooterUiAttribute |
| 0x41AC | 0x1 | [9.0.0+] AppletFooterUiType |
| 0x4208 | 0x8 | Mutex |
| 0x4228 | 0x20 | NpadGcTriggerHeader |
| 0x4248 | 0x18 * 17 | Array of NpadGcTriggerState |
| 0x43E0 | 0x4 | |
| 0x43E4 | 0x4 | |
| 0x43E8 | 0x4 |
NpadStateHeader
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x4 | NpadStyleSet |
| 0x4 | 0x4 | NpadJoyAssignmentMode |
| 0x8 | 0x4 | bit1 color set does not exist |
| 0xC | 0x4 | RGBA Body Color (single Joy-Con or Pro Controller) |
| 0x10 | 0x4 | RGBA Button Color (single Joy-Con or Pro Controller) |
| 0x14 | 0x4 | bit1 color set does not exist |
| 0x18 | 0x4 | RGBA Body Color (right Joy-Con) |
| 0x1C | 0x4 | RGBA Button Color (right Joy-Con) |
| 0x20 | 0x4 | RGBA Body Color (left Joy-Con) |
| 0x24 | 0x4 | RGBA Button Color (left Joy-Con) |
NpadHandheldHeader
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Timestamp in ticks |
| 0x8 | 0x8 | Number of entries (always 17) |
| 0x10 | 0x8 | Latest Entry Index |
| 0x18 | 0x8 | Maximum Entry Index (always 16) |
NpadHandheldState
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Timestamp in samples (global) |
| 0x8 | 0x8 | Timestamp in samples |
| 0x10 | 0x8 | #NpadButton |
| 0x18 | 0x4 | Left Joystick X |
| 0x1C | 0x4 | Left Joystick Y |
| 0x20 | 0x4 | Right Joystick X |
| 0x24 | 0x4 | Right Joystick Y |
| 0x28 | 0x4 | Controller State (bit0 connected, bit1 wired) |
| 0x2C | 0x4 | Padding |
NpadButton
This is the u64 bitmask for "nn::hid::NpadButton".
| Bit | Button |
|---|---|
| 0 | A |
| 1 | B |
| 2 | X |
| 3 | Y |
| 4 | Left Stick Pressed |
| 5 | Right Stick Pressed |
| 6 | L |
| 7 | R |
| 8 | ZL |
| 9 | ZR |
| 10 | Plus |
| 11 | Minus |
| 12 | Left |
| 13 | Up |
| 14 | Right |
| 15 | Down |
| 16 | Left Stick Left |
| 17 | Left Stick Up |
| 18 | Left Stick Right |
| 19 | Left Stick Down |
| 20 | Right Stick Left |
| 21 | Right Stick Up |
| 22 | Right Stick Right |
| 23 | Right Stick Down |
| 24 | LeftSL |
| 25 | LeftSR |
| 26 | RightSL |
| 27 | RightSR |
| 28 | Palma |
| 29 | |
| 30 | HandheldLeftB (Left B button on NES controllers in Handheld mode) |
NpadSixAxisSensorHandheldHeader
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Timestamp in ticks |
| 0x8 | 0x8 | Number of entries (always 17) |
| 0x10 | 0x8 | Latest Entry Index |
| 0x18 | 0x8 | Maximum Entry Index (up to 16) |
NpadSixAxisSensorHandheldState
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Timestamp in samples (global) |
| 0x8 | 0x8 | Unknown |
| 0x10 | 0x8 | Timestamp in samples |
| 0x1C | 0x4 * 3 | Accelerometer data as 3 floats |
| 0x24 | 0x4 * 3 | Gyroscope data as 3 floats |
| 0x30 | 0x4 * 3 | Unknown sensor data as 3 floats |
| 0x3C | 0x4 * 9 | Orientation basis as 3x3 matrix of floats |
| 0x60 | 0x8 | Unknown, always 1 |
Official sw copies the data from offset 0x8 size 0x60 to the final output state.
NpadSystemProperties
| Bit | Description |
|---|---|
| 0 | PowerInfo0 isCharging |
| 1 | PowerInfo1 isCharging |
| 2 | PowerInfo2 isCharging |
| 3 | PowerInfo0 powerConnected |
| 4 | PowerInfo1 powerConnected |
| 5 | PowerInfo2 powerConnected |
| 6-8 | Unused |
| 9 | UnsupportedButtonPressed_NpadSystem |
| 10 | UnsupportedButtonPressed_NpadSystemExt |
| 11 | AbxyButtonOriented |
| 12 | SlSrButtonOriented |
| 13 | [4.0.0+] PlusButtonCapability |
| 14 | [4.0.0+] MinusButtonCapability |
| 15 | [8.0.0+] DirectionalButtonsSupported |
| 16-63 | Unused |
NpadSystemButtonProperties
| Bit | Description |
|---|---|
| 0 | UnintendedHomeButtonInputProtectionEnabled (if cleared) |
NfcXcdDeviceHandleState
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Timestamp in samples (global) |
| 0x8 | 0x8 | DeviceHandle |
| 0x10 | 0x1 | Flag |
| 0x11 | 0x1 | Flag |
| 0x12 | 0x6 | Padding |
| 0x18 | 0x8 | Timestamp in samples |
NpadGcTriggerState
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Timestamp in samples (global) |
| 0x8 | 0x8 | Timestamp in samples |
| 0x10 | 0x4 | L analog trigger. Valid range: 0x0-0x7FFF. |
| 0x14 | 0x4 | R analog trigger. Valid range: 0x0-0x7FFF. |
This is "nn::hid::detail::GestureSharedMemoryFormat".
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x20 | #GestureHeader |
| 0x20 | 0x68 * 17 | Array of #GestureState |
GestureHeader
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Timestamp in ticks |
| 0x8 | 0x8 | Number of Entries (always 17) |
| 0x10 | 0x8 | Latest Entry Index |
| 0x18 | 0x8 | Maximum Entry Index (always 16) |
GestureState
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Timestamp in samples (global) |
| 0x8 | 0x60 |
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Timestamp in samples |
| 0x8 | 0x1 | IsSevenSixAxisSensorAtRest |
| 0x9 | 0x3 | Padding |
| 0xC | 0x4 | VerticalizationError |
| 0x10 | 0xC | GyroBias |
| 0x1C | 0x4 | Padding |