|
|
(2 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
− | 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.
| + | #REDIRECT [[HID_services]] |
− | | |
− | = SharedMemoryFormat =
| |
− | This is "nn::hid::detail::SharedMemoryFormat".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x400
| |
− | | [[#DebugPadSharedMemoryFormat|DebugPad]]
| |
− | |-
| |
− | | 0x400
| |
− | | 0x3000
| |
− | | [[#TouchScreenSharedMemoryFormat|TouchScreen]]
| |
− | |-
| |
− | | 0x3400
| |
− | | 0x400
| |
− | | [[#MouseSharedMemoryFormat|Mouse]]
| |
− | |-
| |
− | | 0x3800
| |
− | | 0x400
| |
− | | [[#KeyboardSharedMemoryFormat|Keyboard]]
| |
− | |-
| |
− | | 0x3C00
| |
− | | 0x1000
| |
− | | [1.0.0-9.2.0] [[#BasicXpadSharedMemoryFormat|BasicXpad]]
| |
− | |-
| |
− | | 0x3C00
| |
− | |
| |
− | | [10.0.0+] [[#DigitizerSharedMemoryFormat|Digitizer]]
| |
− | |-
| |
− | | 0x4C00
| |
− | | 0x200
| |
− | | [[#HomeButtonSharedMemoryFormat|HomeButton]]
| |
− | |-
| |
− | | 0x4E00
| |
− | | 0x200
| |
− | | [[#SleepButtonSharedMemoryFormat|SleepButton]]
| |
− | |-
| |
− | | 0x5000
| |
− | | 0x200
| |
− | | [[#CaptureButtonSharedMemoryFormat|CaptureButton]]
| |
− | |-
| |
− | | 0x5200
| |
− | | 0x800 (0x80 * 0x10)
| |
− | | [[#InputDetectorSharedMemoryFormat|InputDetector]]
| |
− | |-
| |
− | | 0x5A00
| |
− | | 0x4000 (0x400 * 0x10)
| |
− | | [1.0.0-4.1.0] [[#UniquePadSharedMemoryFormat|UniquePad]]
| |
− | |-
| |
− | | 0x9A00
| |
− | | 0x32000 (0x5000 * 0x0A)
| |
− | | [[#NpadSharedMemoryFormat|Npad]]
| |
− | |-
| |
− | | 0x3BA00
| |
− | | 0x800
| |
− | | [[#GestureSharedMemoryFormat|Gesture]]
| |
− | |-
| |
− | | 0x3C200
| |
− | | 0x20
| |
− | | [5.0.0+] [[#ConsoleSixAxisSensorSharedMemoryFormat|ConsoleSixAxisSensor]]
| |
− | |}
| |
− | | |
− | == DebugPadSharedMemoryFormat ==
| |
− | This is "nn::hid::detail::DebugPadSharedMemoryFormat".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x2C8
| |
− | | [[#DebugPadLifo]]
| |
− | |}
| |
− | | |
− | === DebugPadLifo ===
| |
− | This is "nn::hid::detail::DebugPadLifo". This is a RingLifo object.
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x20
| |
− | | [[#DebugPadState]]
| |
− | |}
| |
− | | |
− | ===== DebugPadState =====
| |
− | This is "nn::hid::DebugPadState".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x4
| |
− | | [[#DebugPadAttributeSet|Attributes]]
| |
− | |-
| |
− | | 0xC
| |
− | | 0x4
| |
− | | [[#DebugPadButtonSet|Buttons]]
| |
− | |-
| |
− | | 0x10
| |
− | | 0x8
| |
− | | [[#AnalogStickState|AnalogStickR]]
| |
− | |-
| |
− | | 0x18
| |
− | | 0x8
| |
− | | [[#AnalogStickState|AnalogStickL]]
| |
− | |}
| |
− | | |
− | == TouchScreenSharedMemoryFormat ==
| |
− | This is "nn::hid::detail::TouchScreenSharedMemoryFormat".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x2C38
| |
− | | [[#TouchScreenLifo]]
| |
− | |}
| |
− | | |
− | === TouchScreenLifo ===
| |
− | This is "nn::hid::detail::TouchScreenLifo". This is a RingLifo object.
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x290
| |
− | | [[#TouchScreenState]]
| |
− | |}
| |
− | | |
− | ===== TouchScreenState =====
| |
− | This is "nn::hid::detail::TouchScreenState".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x4
| |
− | | Count
| |
− | |-
| |
− | | 0xC
| |
− | | 0x4
| |
− | | Reserved
| |
− | |-
| |
− | | 0x10
| |
− | | 0x28 * 16
| |
− | | [[#TouchState|Touches]]
| |
− | |}
| |
− | | |
− | ====== TouchState ======
| |
− | This is "nn::hid::TouchState".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | DeltaTime
| |
− | |-
| |
− | | 0x8
| |
− | | 0x4
| |
− | | [[#TouchAttributeSet|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".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x350
| |
− | | [[#MouseLifo]]
| |
− | |}
| |
− | | |
− | === MouseLifo ===
| |
− | This is "nn::hid::detail::MouseLifo". This is a RingLifo object.
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x28
| |
− | | [[#MouseState]]
| |
− | |}
| |
− | | |
− | ===== MouseState =====
| |
− | This is "nn::hid::detail::MouseState".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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
| |
− | | [[#MouseButtonSet|Buttons]]
| |
− | |-
| |
− | | 0x24
| |
− | | 0x4
| |
− | | [[#MouseAttributeSet|Attributes]]
| |
− | |}
| |
− | | |
− | == KeyboardSharedMemoryFormat ==
| |
− | This is "nn::hid::detail::KeyboardSharedMemoryFormat".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x3D8
| |
− | | [[#KeyboardLifo]]
| |
− | |}
| |
− | | |
− | === KeyboardLifo ===
| |
− | This is "nn::hid::detail::KeyboardLifo". This is a RingLifo object.
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x30
| |
− | | [[#KeyboardState]]
| |
− | |}
| |
− | | |
− | ===== KeyboardState =====
| |
− | This is "nn::hid::detail::KeyboardState".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x8
| |
− | | [[#KeyboardModifierSet|Modifiers]]
| |
− | |-
| |
− | | 0x10
| |
− | | 0x20
| |
− | | [[#KeyboardKeySet|Keys]]
| |
− | |}
| |
− | | |
− | == BasicXpadSharedMemoryFormat ==
| |
− | This is "nn::hid::detail::BasicXpadSharedMemoryFormat".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x400 * 4
| |
− | | Array of [[#BasicXpadSharedMemoryEntry]]
| |
− | |}
| |
− | | |
− | === BasicXpadSharedMemoryEntry ===
| |
− | This is "nn::hid::detail::BasicXpadSharedMemoryEntry".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x2C8
| |
− | | [[#BasicXpadLifo]]
| |
− | |}
| |
− | | |
− | ==== BasicXpadLifo ====
| |
− | This is "nn::hid::detail::BasicXpadLifo". This is a RingLifo object.
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x20
| |
− | | [[#BasicXpadState]]
| |
− | |}
| |
− | | |
− | ====== BasicXpadState ======
| |
− | This is "nn::hid::detail::BasicXpadState".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x4
| |
− | | [[#BasicXpadAttributeSet|Attributes]]
| |
− | |-
| |
− | | 0xC
| |
− | | 0x4
| |
− | | [[#BasicXpadButtonSet|Buttons]]
| |
− | |-
| |
− | | 0x10
| |
− | | 0x8
| |
− | | [[#AnalogStickState|AnalogStickL]]
| |
− | |-
| |
− | | 0x18
| |
− | | 0x8
| |
− | | [[#AnalogStickState|AnalogStickR]]
| |
− | |}
| |
− | | |
− | == HomeButtonSharedMemoryFormat ==
| |
− | This is "nn::hid::detail::HomeButtonSharedMemoryFormat".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x1B8
| |
− | | [[#HomeButtonLifo]]
| |
− | |}
| |
− | | |
− | === HomeButtonLifo ===
| |
− | This is "nn::hid::detail::HomeButtonLifo". This is a RingLifo object.
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x10
| |
− | | [[#HomeButtonState]]
| |
− | |}
| |
− | | |
− | ===== HomeButtonState =====
| |
− | This is "nn::hid::system::HomeButtonState".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x8
| |
− | | [[#HomeButtonSet|Buttons]]
| |
− | |}
| |
− | | |
− | == SleepButtonSharedMemoryFormat ==
| |
− | This is "nn::hid::detail::SleepButtonSharedMemoryFormat".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x1B8
| |
− | | [[#SleepButtonLifo]]
| |
− | |}
| |
− | | |
− | === SleepButtonLifo ===
| |
− | This is "nn::hid::detail::SleepButtonLifo". This is a RingLifo object.
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x10
| |
− | | [[#SleepButtonState]]
| |
− | |}
| |
− | | |
− | ===== SleepButtonState =====
| |
− | This is "nn::hid::system::SleepButtonState".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x8
| |
− | | [[#SleepButtonSet|Buttons]]
| |
− | |}
| |
− | | |
− | == CaptureButtonSharedMemoryFormat ==
| |
− | This is "nn::hid::detail::CaptureButtonSharedMemoryFormat".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x1B8
| |
− | | [[#CaptureButtonLifo]]
| |
− | |}
| |
− | | |
− | === CaptureButtonLifo ===
| |
− | This is "nn::hid::detail::CaptureButtonLifo". This is a RingLifo object.
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x10
| |
− | | [[#CaptureButtonState]]
| |
− | |}
| |
− | | |
− | ===== CaptureButtonState =====
| |
− | This is "nn::hid::system::CaptureButtonState".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x8
| |
− | | [[#CaptureButtonSet|Buttons]]
| |
− | |}
| |
− | | |
− | == InputDetectorSharedMemoryFormat ==
| |
− | This is "nn::hid::detail::InputDetectorSharedMemoryFormat".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x80 * 16
| |
− | | Array of [[#InputDetectorSharedMemoryEntry]]
| |
− | |}
| |
− | | |
− | === InputDetectorSharedMemoryEntry ===
| |
− | This is "nn::hid::detail::InputDetectorSharedMemoryEntry".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x50
| |
− | | [[#InputDetectorLifo]]
| |
− | |}
| |
− | | |
− | ==== InputDetectorLifo ====
| |
− | This is "nn::hid::detail::InputDetectorLifo". This is a RingLifo object.
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x10
| |
− | | [[#InputDetectorState]]
| |
− | |}
| |
− | | |
− | ====== InputDetectorState ======
| |
− | This is "nn::hid::detail::InputDetectorState".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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]].
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x400 * 16
| |
− | | Array of [[#UniquePadSharedMemoryEntry]]
| |
− | |}
| |
− | | |
− | === UniquePadSharedMemoryEntry ===
| |
− | This is "nn::hid::detail::UniquePadSharedMemoryEntry".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x1E0
| |
− | | [[#UniquePadLifo]]
| |
− | |}
| |
− | | |
− | ==== UniquePadLifo ====
| |
− | This is "nn::hid::detail::UniquePadLifo". This is a RingLifo object.
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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.
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x28
| |
− | | [[#UniquePadConfig]]
| |
− | |}
| |
− | | |
− | ======= UniquePadConfig =======
| |
− | This is "nn::hid::detail::UniquePadConfig".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x4
| |
− | | [[#UniquePadType|Type]]
| |
− | |-
| |
− | | 0x4
| |
− | | 0x4
| |
− | | [[#UniquePadInterface|Interface]]
| |
− | |-
| |
− | | 0x8
| |
− | | 0x10
| |
− | | [[#UniquePadSerialNumber|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.
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x20
| |
− | | [[#AnalogStickCalibrationStateImpl]]
| |
− | |}
| |
− | | |
− | ======= AnalogStickCalibrationStateImpl =======
| |
− | This is "nn::hid::detail::AnalogStickCalibrationStateImpl".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | [[#AnalogStickState|State]]
| |
− | |-
| |
− | | 0x8
| |
− | | 0x8
| |
− | | [[#AnalogStickCalibrationFlagsSet|Flags]]
| |
− | |-
| |
− | | 0x10
| |
− | | 0x8
| |
− | | Stage
| |
− | |-
| |
− | | 0x18
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |}
| |
− | | |
− | ===== SixAxisSensorUserCalibrationStateLifo =====
| |
− | This is "nn::hid::detail::SixAxisSensorUserCalibrationStateLifo". This is a RingLifo object.
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | SamplingNumber
| |
− | |-
| |
− | | 0x8
| |
− | | 0x18
| |
− | | [[#SixAxisSensorUserCalibrationState]]
| |
− | |}
| |
− | | |
− | ======= UniquePadConfig =======
| |
− | This is "nn::hid::detail::UniquePadConfig".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | [[#SixAxisSensorUserCalibrationFlagsSet|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.
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Index
| |
− | ! Description
| |
− | |-
| |
− | | 0 to 7
| |
− | | Players 1 to 8
| |
− | |-
| |
− | | 8
| |
− | | Handheld Mode
| |
− | |-
| |
− | | 9
| |
− | | Other
| |
− | |}
| |
− | | |
− | === NpadState ===
| |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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
| |
− | | [[HID_services#DeviceType|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 [[HID_services|commands]] GetXcdHandleForNpadWithNfc/IsNfcActivated)
| |
− | |-
| |
− | | 0x41C8
| |
− | | 0x20 * 2
| |
− | | [1.0.0-3.0.2] Array of [[#NfcXcdDeviceHandleState]] (See above)
| |
− | |-
| |
− | | 0x41A8
| |
− | | 0x4
| |
− | | [9.0.0+] [[HID_services#AppletFooterUiAttribute|AppletFooterUiAttribute]]
| |
− | |-
| |
− | | 0x41AC
| |
− | | 0x1
| |
− | | [9.0.0+] [[HID_services#AppletFooterUiType|AppletFooterUiType]]
| |
− | |-
| |
− | | 0x4208
| |
− | | 0x8
| |
− | | Mutex
| |
− | |-
| |
− | | 0x4228
| |
− | | 0x20
| |
− | | NpadGcTriggerHeader
| |
− | |-
| |
− | | 0x4248
| |
− | | 0x18 * 17
| |
− | | Array of NpadGcTriggerState
| |
− | |-
| |
− | | 0x43E0
| |
− | | 0x4
| |
− | |
| |
− | |-
| |
− | | 0x43E4
| |
− | | 0x4
| |
− | |
| |
− | |-
| |
− | | 0x43E8
| |
− | | 0x4
| |
− | |
| |
− | |}
| |
− | | |
− | ==== NpadStateHeader ====
| |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x4
| |
− | | [[HID_services#NpadStyleTag|NpadStyleSet]]
| |
− | |-
| |
− | | 0x4
| |
− | | 0x4
| |
− | | [[HID_services#NpadJoyAssignmentMode|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 ====
| |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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 ====
| |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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 =====
| |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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 =====
| |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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 ====
| |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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 ====
| |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Bit
| |
− | ! Description
| |
− | |-
| |
− | | 0
| |
− | | UnintendedHomeButtonInputProtectionEnabled (if cleared)
| |
− | |}
| |
− | | |
− | ==== NfcXcdDeviceHandleState ====
| |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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 ====
| |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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".
| |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x20
| |
− | | [[#GestureHeader]]
| |
− | |-
| |
− | | 0x20
| |
− | | 0x68 * 17
| |
− | | Array of [[#GestureState]]
| |
− | |}
| |
− | | |
− | === GestureHeader ===
| |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! 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 ===
| |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | Timestamp in samples (global)
| |
− | |-
| |
− | | 0x8
| |
− | | 0x60
| |
− | |
| |
− | |}
| |
− | | |
− | == ConsoleSixAxisSensorSharedMemoryFormat ==
| |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Offset
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | 0x0
| |
− | | 0x8
| |
− | | Timestamp in samples
| |
− | |-
| |
− | | 0x8
| |
− | | 0x1
| |
− | | IsSevenSixAxisSensorAtRest
| |
− | |-
| |
− | | 0x9
| |
− | | 0x3
| |
− | | Padding
| |
− | |-
| |
− | | 0xC
| |
− | | 0x4
| |
− | | VerticalizationError
| |
− | |-
| |
− | | 0x10
| |
− | | 0xC
| |
− | | GyroBias
| |
− | |-
| |
− | | 0x1C
| |
− | | 0x4
| |
− | | Padding
| |
− | |}
| |