This is "nn::hid::detail::SharedMemoryFormat".
DebugPadSharedMemoryFormat
This is "nn::hid::detail::DebugPadSharedMemoryFormat".
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".
TouchScreenSharedMemoryFormat
This is "nn::hid::detail::TouchScreenSharedMemoryFormat".
TouchScreenLifo
This is "nn::hid::detail::TouchScreenLifo". This is a RingLifo object.
TouchScreenStateAtomicStorage
This is "nn::hid::detail::TouchScreenStateAtomicStorage".
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
|
MouseSharedMemoryFormat
This is "nn::hid::detail::MouseSharedMemoryFormat".
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
|
KeyboardSharedMemoryFormat
This is "nn::hid::detail::KeyboardSharedMemoryFormat".
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
|
BasicXpadSharedMemoryFormat
This is "nn::hid::detail::BasicXpadSharedMemoryFormat".
BasicXpadSharedMemoryEntry
This is "nn::hid::detail::BasicXpadSharedMemoryEntry".
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".
BasicXpadState
This is "nn::hid::detail::BasicXpadState".
HomeButtonSharedMemoryFormat
This is "nn::hid::detail::HomeButtonSharedMemoryFormat".
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".
HomeButtonState
This is "nn::hid::system::HomeButtonState".
| Offset
|
Size
|
Description
|
| 0x0
|
0x8
|
SamplingNumber
|
| 0x8
|
0x8
|
Buttons
|
SleepButtonSharedMemoryFormat
This is "nn::hid::detail::SleepButtonSharedMemoryFormat".
SleepButtonLifo
This is "nn::hid::detail::SleepButtonLifo". This is a RingLifo object.
SleepButtonStateAtomicStorage
This is "nn::hid::detail::SleepButtonStateAtomicStorage".
SleepButtonState
This is "nn::hid::system::SleepButtonState".
| Offset
|
Size
|
Description
|
| 0x0
|
0x8
|
SamplingNumber
|
| 0x8
|
0x8
|
Buttons
|
CaptureButtonSharedMemoryFormat
This is "nn::hid::detail::CaptureButtonSharedMemoryFormat".
CaptureButtonLifo
This is "nn::hid::detail::CaptureButtonLifo". This is a RingLifo object.
CaptureButtonStateAtomicStorage
This is "nn::hid::detail::CaptureButtonStateAtomicStorage".
CaptureButtonState
This is "nn::hid::system::CaptureButtonState".
| Offset
|
Size
|
Description
|
| 0x0
|
0x8
|
SamplingNumber
|
| 0x8
|
0x8
|
Buttons
|
InputDetectorSharedMemoryFormat
This is "nn::hid::detail::InputDetectorSharedMemoryFormat".
InputDetectorSharedMemoryEntry
This is "nn::hid::detail::InputDetectorSharedMemoryEntry".
InputDetectorLifo
This is "nn::hid::detail::InputDetectorLifo". This is a RingLifo object.
InputDetectorStateAtomicStorage
This is "nn::hid::detail::InputDetectorStateAtomicStorage".
InputDetectorState
This is "nn::hid::detail::InputDetectorState".
| Offset
|
Size
|
Description
|
| 0x0
|
0x8
|
InputSourceState
|
| 0x8
|
0x8
|
SamplingNumber
|
UniquePadSharedMemoryFormat
This is "nn::hid::detail::UniquePadSharedMemoryFormat".
[5.0.0+] This section has been removed from #SharedMemoryFormat. #UniquePadSharedMemoryFormat is now a specialization of #NpadSharedMemoryFormat.
UniquePadSharedMemoryEntry
This is "nn::hid::detail::UniquePadSharedMemoryEntry".
UniquePadLifo
This is "nn::hid::detail::UniquePadLifo". This is a RingLifo object.
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".
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.
AnalogStickCalibrationStateImplAtomicStorage
This is "nn::hid::detail::AnalogStickCalibrationStateImplAtomicStorage".
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.
SixAxisSensorUserCalibrationStateAtomicStorage
This is "nn::hid::detail::SixAxisSensorUserCalibrationStateAtomicStorage".
UniquePadConfig
This is "nn::hid::detail::UniquePadConfig".
| Offset
|
Size
|
Description
|
| 0x0
|
0x8
|
Flags
|
| 0x8
|
0x8
|
Stage
|
| 0x10
|
0x8
|
SamplingNumber
|
NpadSharedMemoryFormat
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
|
|
| 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.
|
GestureSharedMemoryFormat
This is "nn::hid::detail::GestureSharedMemoryFormat".
| 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
|
|
ConsoleSixAxisSensorSharedMemoryFormat
| Offset
|
Size
|
Description
|
| 0x0
|
0x8
|
Timestamp in samples
|
| 0x8
|
0x1
|
IsSevenSixAxisSensorAtRest
|
| 0x9
|
0x3
|
Padding
|
| 0xC
|
0x4
|
VerticalizationError
|
| 0x10
|
0xC
|
GyroBias
|
| 0x1C
|
0x4
|
Padding
|