HID services: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
= hid = | = hid = | ||
This is "nn::hid::IHidServer". | This is "nn::hid::IHidServer". | ||
Line 482: | Line 480: | ||
=== GetSharedMemoryHandle === | === GetSharedMemoryHandle === | ||
No input. | No input. Returns a [[#SharedMemoryFormat|sharedmem]] handle. | ||
== IActiveVibrationDeviceList == | == IActiveVibrationDeviceList == | ||
Line 2,444: | Line 2,442: | ||
This is used by sdknso immediately after mapping [[#GetSharedMemoryHandle|sharedmem]] (before [[#Initialize]]) with hard-coded value 0x2. | This is used by sdknso immediately after mapping [[#GetSharedMemoryHandle|sharedmem]] (before [[#Initialize]]) with hard-coded value 0x2. | ||
= | = SharedMemoryFormat = | ||
This is "nn::hid:: | This is "nn::hid::detail::SharedMemoryFormat". | ||
The 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. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
| 0 || | ! Offset | ||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x400 | |||
| [[#DebugPadSharedMemoryFormat|DebugPad]] | |||
|- | |||
| 0x400 | |||
| 0x3000 | |||
| [[#TouchScreenSharedMemoryFormat|TouchScreen]] | |||
|- | |||
| 0x3400 | |||
| 0x400 | |||
| [[#MouseSharedMemoryFormat|Mouse]] | |||
|- | |||
| 0x3800 | |||
| 0x400 | |||
| [[#KeyboardSharedMemoryFormat|Keyboard]] | |||
|- | |||
| 0x3C00 | |||
| 0x1000 | |||
| [[#DigitizerSharedMemoryFormat|Digitizer]] ([1.0.0-9.2.0] [[#BasicXpadSharedMemoryFormat|BasicXpad]]) | |||
|- | |||
| 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 | ||
| 0x1C | |||
| [5.0.0+] [[#ConsoleSixAxisSensorSharedMemoryFormat|ConsoleSixAxisSensor]] | |||
|} | |} | ||
= | == DebugPadSharedMemoryFormat == | ||
This is "nn::hid:: | This is "nn::hid::detail::DebugPadSharedMemoryFormat". | ||
{| class="wikitable" border="1" | {| 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 | |||
|- | |- | ||
| 4 | | 0x20 | ||
| NpadJoyRight | | 0x298 * 17 | ||
| Joy-Con right controller in single mode | | Array of [[#TouchScreenStateAtomicStorage]] | ||
|- | |} | ||
| 5 | |||
| NpadGc | ==== TouchScreenStateAtomicStorage ==== | ||
| GameCube controller | This is "nn::hid::detail::TouchScreenStateAtomicStorage". | ||
|- | |||
| 6 | {| class="wikitable" border="1" | ||
| NpadPalma | |- | ||
| Poké Ball Plus controller | ! Offset | ||
|- | ! Size | ||
| 7 | ! Description | ||
| NpadLark | |- | ||
| NES/Famicom controller | | 0x0 | ||
|- | | 0x8 | ||
| 8 | | SamplingNumber | ||
| NpadHandheldLark | |- | ||
| NES/Famicom controller in handheld mode | | 0x8 | ||
|- | | 0x290 | ||
| 9 | | [[#TouchScreenState]] | ||
| NpadLucia | |} | ||
| SNES controller | |||
|- | ===== TouchScreenState ===== | ||
| 10-28 | This is "nn::hid::detail::TouchScreenState". | ||
| Reserved | |||
| | {| class="wikitable" border="1" | ||
|- | |- | ||
| 29 | ! Offset | ||
| NpadSystemExt | ! Size | ||
| Generic external controller | ! Description | ||
|- | |- | ||
| 30 | | 0x0 | ||
| NpadSystem | | 0x8 | ||
| Generic controller | | SamplingNumber | ||
|- | |- | ||
| 31 | | 0x8 | ||
| Reserved | | 0x4 | ||
| | | Count | ||
|- | |||
| 0xC | |||
| 0x4 | |||
| Reserved | |||
|- | |||
| 0x10 | |||
| 0x28 * 16 | |||
| [[#TouchState|Touches]] | |||
|} | |||
== 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|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 | |||
| 0x40 | |||
| 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 [[#AnalogStickCalibrationStateImplAtomicStorage]] | |||
|} | |||
===== 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]] | |||
|} | |||
====== SixAxisSensorUserCalibrationState ====== | |||
This is "nn::hid::detail::UniquePadConfig". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x4 | |||
| [[#SixAxisSensorUserCalibrationFlagsSet|Flags]] | |||
|- | |||
| 0x4 | |||
| 0x4 | |||
| Reserved | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| Stage | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| SamplingNumber | |||
|} | |||
== NpadSharedMemoryFormat == | |||
This is "nn::hid::detail::NpadSharedMemoryFormat". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x5000 * 10 | |||
| Array of [[#NpadSharedMemoryEntry]] | |||
|} | |||
Each entry describes an available controller: | |||
{| class="wikitable" border="1" | |||
|- | |||
! Entry | |||
! Description | |||
|- | |||
| 0 to 7 | |||
| Players 1 to 8 | |||
|- | |||
| 8 | |||
| Handheld Mode | |||
|- | |||
| 9 | |||
| Other | |||
|} | |||
== NpadSharedMemoryEntry == | |||
This is "nn::hid::detail::NpadSharedMemoryEntry". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x43F0 ([1.0.0-8.1.0] 0x4410) | |||
| [[#NpadInternalState]] | |||
|} | |||
=== NpadInternalState === | |||
This is "nn::hid::detail::NpadInternalState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x4 | |||
| [[HID_services#NpadStyleSet|StyleSet]] | |||
|- | |||
| 0x4 | |||
| 0x4 | |||
| [[HID_services#NpadJoyAssignmentMode|JoyAssignmentMode]] | |||
|- | |||
| 0x8 | |||
| 0xC | |||
| [[#NpadFullKeyColorState|FullKeyColor]] | |||
|- | |||
| 0x14 | |||
| 0x14 | |||
| [[#NpadJoyColorState|JoyColor]] | |||
|- | |||
| 0x28 | |||
| 0x350 | |||
| [[#NpadFullKeyLifo|FullKeyLifo]] | |||
|- | |||
| 0x378 | |||
| 0x350 | |||
| [[#NpadHandheldLifo|HandheldLifo]] | |||
|- | |||
| 0x6C8 | |||
| 0x350 | |||
| [[#NpadJoyDualLifo|JoyDualLifo]] | |||
|- | |||
| 0xA18 | |||
| 0x350 | |||
| [[#NpadJoyLeftLifo|JoyLeftLifo]] | |||
|- | |||
| 0xD68 | |||
| 0x350 | |||
| [[#NpadJoyRightLifo|JoyRightLifo]] | |||
|- | |||
| 0x10B8 | |||
| 0x350 | |||
| [[#NpadPalmaLifo|PalmaLifo]] ([1.0.0-3.0.2] [[#NpadSystemLifo|SystemLifo]]) | |||
|- | |||
| 0x1408 | |||
| 0x350 | |||
| [[#NpadSystemExtLifo|SystemExtLifo]] ([4.0.0+] also used for NpadSystem) | |||
|- | |||
| 0x1758 | |||
| 0x708 | |||
| [[#NpadSixAxisSensorLifo|FullKeySixAxisSensorLifo]] | |||
|- | |||
| 0x1E60 | |||
| 0x708 | |||
| [[#NpadSixAxisSensorLifo|HandheldSixAxisSensorLifo]] | |||
|- | |||
| 0x2568 | |||
| 0x708 | |||
| [[#NpadSixAxisSensorLifo|JoyDualLeftSixAxisSensorLifo]] | |||
|- | |||
| 0x2C70 | |||
| 0x708 | |||
| [[#NpadSixAxisSensorLifo|JoyDualRightSixAxisSensorLifo]] | |||
|- | |||
| 0x3378 | |||
| 0x708 | |||
| [[#NpadSixAxisSensorLifo|JoyLeftSixAxisSensorLifo]] | |||
|- | |||
| 0x3A80 | |||
| 0x708 | |||
| [[#NpadSixAxisSensorLifo|JoyRightSixAxisSensorLifo]] | |||
|- | |||
| 0x4188 | |||
| 0x4 | |||
| [[HID_services#DeviceType|DeviceType]] | |||
|- | |||
| 0x418C | |||
| 0x4 | |||
| Reserved | |||
|- | |||
| 0x4190 | |||
| 0x8 | |||
| [[#NpadSystemProperties|SystemProperties]] | |||
|- | |||
| 0x4198 | |||
| 0x4 | |||
| [[#NpadSystemButtonProperties|SystemButtonProperties]] | |||
|- | |||
| 0x419C | |||
| 0x4 | |||
| BatteryLevel0 | |||
|- | |||
| 0x41A0 | |||
| 0x4 | |||
| BatteryLevel1 | |||
|- | |||
| 0x41A4 | |||
| 0x4 | |||
| BatteryLevel2 | |||
|- | |||
| 0x41A8 | |||
| 0x60 | |||
| [1.0.0-8.1.0] [[#NfcXcdDeviceHandleState|NfcXcdDeviceHandle]] (replaced by [[HID_services|GetXcdHandleForNpadWithNfc/IsNfcActivated]]) | |||
|- | |||
| 0x41A8 | |||
| 0x4 | |||
| [9.0.0+] [[#AppletFooterUiAttribute|AppletFooterUiAttributes]] | |||
|- | |||
| 0x41AC | |||
| 0x1 | |||
| [9.0.0+] [[#AppletFooterUiType|AppletFooterUiType]] | |||
|- | |||
| 0x41AD | |||
| 0x7B | |||
| [9.0.0+] Reserved | |||
|- | |||
| 0x4208 | |||
| 0x40 | |||
| [1.0.0-8.1.0] Mutex | |||
|- | |||
| 0x4228 ([1.0.0-8.1.0] 0x4248) | |||
| 0x1B8 | |||
| [[#NpadGcTriggerLifo|GcTriggerLifo]] | |||
|- | |||
| 0x43E0 ([1.0.0-8.1.0] 0x4400) | |||
| 0x4 | |||
| [[#NpadLarkType|LarkTypeLAndMain]] | |||
|- | |||
| 0x43E4 ([1.0.0-8.1.0] 0x4404) | |||
| 0x4 | |||
| [[#NpadLarkType|LarkTypeR]] | |||
|- | |||
| 0x43E8 ([1.0.0-8.1.0] 0x4408) | |||
| 0x4 | |||
| [[#NpadLuciaType|LuciaType]] | |||
|- | |||
| 0x43EC ([1.0.0-8.1.0] 0x440C) | |||
| 0x4 | |||
| | |||
|} | |||
==== NpadFullKeyLifo ==== | |||
This is "nn::hid::detail::NpadFullKeyLifo". 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 [[#NpadFullKeyStateAtomicStorage]] | |||
|} | |||
===== NpadFullKeyStateAtomicStorage ===== | |||
This is "nn::hid::detail::NpadFullKeyStateAtomicStorage". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x28 | |||
| [[#NpadFullKeyState]] | |||
|} | |||
====== NpadFullKeyState ====== | |||
This is "nn::hid::NpadFullKeyState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| [[#NpadButtonSet|Buttons]] | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| [[#AnalogStickState|AnalogStickL]] | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| [[#AnalogStickState|AnalogStickR]] | |||
|- | |||
| 0x20 | |||
| 0x4 | |||
| [[#NpadAttributesSet|Attributes]] | |||
|- | |||
| 0x24 | |||
| 0x4 | |||
| Reserved | |||
|} | |||
==== NpadHandheldLifo ==== | |||
This is "nn::hid::detail::NpadHandheldLifo". 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 [[#NpadHandheldStateAtomicStorage]] | |||
|} | |||
===== NpadHandheldStateAtomicStorage ===== | |||
This is "nn::hid::detail::NpadHandheldStateAtomicStorage". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x28 | |||
| [[#NpadHandheldState]] | |||
|} | |||
====== NpadHandheldState ====== | |||
This is "nn::hid::NpadHandheldState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| [[#NpadButtonSet|Buttons]] | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| [[#AnalogStickState|AnalogStickL]] | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| [[#AnalogStickState|AnalogStickR]] | |||
|- | |||
| 0x20 | |||
| 0x4 | |||
| [[#NpadAttributesSet|Attributes]] | |||
|- | |||
| 0x24 | |||
| 0x4 | |||
| Reserved | |||
|} | |||
==== NpadJoyDualLifo ==== | |||
This is "nn::hid::detail::NpadJoyDualLifo". 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 [[#NpadJoyDualStateAtomicStorage]] | |||
|} | |||
===== NpadJoyDualStateAtomicStorage ===== | |||
This is "nn::hid::detail::NpadJoyDualStateAtomicStorage". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x28 | |||
| [[#NpadJoyDualState]] | |||
|} | |||
====== NpadJoyDualState ====== | |||
This is "nn::hid::NpadJoyDualState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| [[#NpadButtonSet|Buttons]] | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| [[#AnalogStickState|AnalogStickL]] | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| [[#AnalogStickState|AnalogStickR]] | |||
|- | |||
| 0x20 | |||
| 0x4 | |||
| [[#NpadAttributesSet|Attributes]] | |||
|- | |||
| 0x24 | |||
| 0x4 | |||
| Reserved | |||
|} | |||
==== NpadJoyLeftLifo ==== | |||
This is "nn::hid::detail::NpadJoyLeftLifo". 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 [[#NpadJoyLeftStateAtomicStorage]] | |||
|} | |||
===== NpadJoyLeftStateAtomicStorage ===== | |||
This is "nn::hid::detail::NpadJoyLeftStateAtomicStorage". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x28 | |||
| [[#NpadJoyLeftState]] | |||
|} | |||
====== NpadJoyLeftState ====== | |||
This is "nn::hid::NpadJoyLeftState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| [[#NpadButtonSet|Buttons]] | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| [[#AnalogStickState|AnalogStickL]] | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| [[#AnalogStickState|AnalogStickR]] | |||
|- | |||
| 0x20 | |||
| 0x4 | |||
| [[#NpadAttributesSet|Attributes]] | |||
|- | |||
| 0x24 | |||
| 0x4 | |||
| Reserved | |||
|} | |||
==== NpadJoyRightLifo ==== | |||
This is "nn::hid::detail::NpadJoyRightLifo". 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 [[#NpadJoyRightStateAtomicStorage]] | |||
|} | |||
===== NpadJoyRightStateAtomicStorage ===== | |||
This is "nn::hid::detail::NpadJoyRightStateAtomicStorage". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x28 | |||
| [[#NpadJoyRightState]] | |||
|} | |||
====== NpadJoyRightState ====== | |||
This is "nn::hid::NpadJoyRightState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| [[#NpadButtonSet|Buttons]] | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| [[#AnalogStickState|AnalogStickL]] | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| [[#AnalogStickState|AnalogStickR]] | |||
|- | |||
| 0x20 | |||
| 0x4 | |||
| [[#NpadAttributesSet|Attributes]] | |||
|- | |||
| 0x24 | |||
| 0x4 | |||
| Reserved | |||
|} | |||
==== NpadPalmaLifo ==== | |||
This is "nn::hid::detail::NpadPalmaLifo". 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 [[#NpadPalmaStateAtomicStorage]] | |||
|} | |||
===== NpadPalmaStateAtomicStorage ===== | |||
This is "nn::hid::detail::NpadPalmaStateAtomicStorage". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x28 | |||
| [[#NpadPalmaState]] | |||
|} | |||
====== NpadPalmaState ====== | |||
This is "nn::hid::NpadPalmaState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| [[#NpadButtonSet|Buttons]] | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| [[#AnalogStickState|AnalogStickL]] | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| [[#AnalogStickState|AnalogStickR]] | |||
|- | |||
| 0x20 | |||
| 0x4 | |||
| [[#NpadAttributesSet|Attributes]] | |||
|- | |||
| 0x24 | |||
| 0x4 | |||
| Reserved | |||
|} | |||
==== NpadSystemLifo ==== | |||
This is "nn::hid::detail::NpadSystemLifo". 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 [[#NpadSystemStateAtomicStorage]] | |||
|} | |||
===== NpadSystemStateAtomicStorage ===== | |||
This is "nn::hid::detail::NpadSystemStateAtomicStorage". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x28 | |||
| [[#NpadSystemState]] | |||
|} | |||
====== NpadSystemState ====== | |||
This is "nn::hid::system::NpadSystemState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| [[#NpadButtonSet|Buttons]] | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| [[#AnalogStickState|AnalogStickL]] | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| [[#AnalogStickState|AnalogStickR]] | |||
|- | |||
| 0x20 | |||
| 0x4 | |||
| [[#NpadAttributesSet|Attributes]] | |||
|- | |||
| 0x24 | |||
| 0x4 | |||
| Reserved | |||
|} | |||
==== NpadSystemExtLifo ==== | |||
This is "nn::hid::detail::NpadSystemExtLifo". 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 [[#NpadSystemExtStateAtomicStorage]] | |||
|} | |||
===== NpadSystemExtStateAtomicStorage ===== | |||
This is "nn::hid::detail::NpadSystemExtStateAtomicStorage". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x28 | |||
| [[#NpadSystemState]] | |||
|} | |||
====== NpadSystemExtState ====== | |||
This is "nn::hid::system::NpadSystemExtState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| [[#NpadButtonSet|Buttons]] | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| [[#AnalogStickState|AnalogStickL]] | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| [[#AnalogStickState|AnalogStickR]] | |||
|- | |||
| 0x20 | |||
| 0x4 | |||
| [[#NpadAttributesSet|Attributes]] | |||
|- | |||
| 0x24 | |||
| 0x4 | |||
| Reserved | |||
|} | |||
==== NpadSixAxisSensorLifo ==== | |||
This is "nn::hid::detail::NpadSixAxisSensorLifo". 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 | |||
| 0x68 * 17 | |||
| Array of [[#SixAxisSensorStateAtomicStorage]] | |||
|} | |||
===== SixAxisSensorStateAtomicStorage ===== | |||
This is "nn::hid::detail::SixAxisSensorStateAtomicStorage". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x60 | |||
| [[#SixAxisSensorState]] | |||
|} | |||
====== SixAxisSensorState ====== | |||
This is "nn::hid::SixAxisSensorState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| DeltaTime | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x10 | |||
| 0x4 | |||
| AccelerationX | |||
|- | |||
| 0x14 | |||
| 0x4 | |||
| AccelerationY | |||
|- | |||
| 0x18 | |||
| 0x4 | |||
| AccelerationZ | |||
|- | |||
| 0x1C | |||
| 0x4 | |||
| AngularVelocityX | |||
|- | |||
| 0x20 | |||
| 0x4 | |||
| AngularVelocityY | |||
|- | |||
| 0x24 | |||
| 0x4 | |||
| AngularVelocityZ | |||
|- | |||
| 0x28 | |||
| 0x4 | |||
| AngleX | |||
|- | |||
| 0x2C | |||
| 0x4 | |||
| AngleY | |||
|- | |||
| 0x30 | |||
| 0x4 | |||
| AngleZ | |||
|- | |||
| 0x34 | |||
| 0x24 | |||
| [[#DirectionState|Direction]] | |||
|- | |||
| 0x58 | |||
| 0x4 | |||
| [[#SixAxisSensorAttributeSet|Attributes]] | |||
|- | |||
| 0x5C | |||
| 0x4 | |||
| Reserved | |||
|} | |||
==== NfcXcdDeviceHandleState ==== | |||
This is "nn::hid::detail::NfcXcdDeviceHandleState". 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 [[#NfcXcdDeviceHandleStateImplAtomicStorage]] | |||
|} | |||
===== NfcXcdDeviceHandleStateImplAtomicStorage ===== | |||
This is "nn::hid::detail::NfcXcdDeviceHandleStateImplAtomicStorage". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x18 | |||
| [[#NfcXcdDeviceHandleStateImpl]] | |||
|} | |||
====== NfcXcdDeviceHandleStateImpl ====== | |||
This is "nn::hid::detail::NfcXcdDeviceHandleStateImpl". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| [[#DeviceHandle|Handle]] | |||
|- | |||
| 0x8 | |||
| 0x1 | |||
| IsAvailable | |||
|- | |||
| 0x9 | |||
| 0x1 | |||
| IsActivated | |||
|- | |||
| 0xA | |||
| 0x6 | |||
| Reserved | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| SamplingNumber | |||
|} | |||
==== NpadGcTriggerLifo ==== | |||
This is "nn::hid::detail::NpadGcTriggerLifo". 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 [[#NpadGcTriggerStateAtomicStorage]] | |||
|} | |||
===== NpadGcTriggerStateAtomicStorage ===== | |||
This is "nn::hid::detail::NpadGcTriggerStateAtomicStorage". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x10 | |||
| [[#NpadGcTriggerState]] | |||
|} | |||
====== NpadGcTriggerState ====== | |||
This is "nn::hid::server::NpadGcTriggerState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x4 | |||
| TriggerL | |||
|- | |||
| 0xC | |||
| 0x4 | |||
| TriggerR | |||
|} | |||
== GestureSharedMemoryFormat == | |||
This is "nn::hid::detail::GestureSharedMemoryFormat". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x708 | |||
| [[#GestureLifo]] | |||
|} | |||
=== GestureLifo === | |||
This is "nn::hid::detail::GestureLifo". 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 | |||
| 0x68 * 17 | |||
| Array of [[#GestureDummyStateAtomicStorage]] | |||
|} | |||
===== GestureDummyStateAtomicStorage ===== | |||
This is "nn::hid::detail::GestureDummyStateAtomicStorage". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x60 | |||
| [[#GestureDummyState]] | |||
|} | |||
====== GestureDummyState ====== | |||
This is "nn::hid::detail::GestureDummyState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| ContextNumber | |||
|- | |||
| 0x10 | |||
| 0x4 | |||
| [[#GestureType|Type]] | |||
|- | |||
| 0x14 | |||
| 0x4 | |||
| [[#GestureDirection|Direction]] | |||
|- | |||
| 0x18 | |||
| 0x4 | |||
| X | |||
|- | |||
| 0x1C | |||
| 0x4 | |||
| Y | |||
|- | |||
| 0x20 | |||
| 0x4 | |||
| DeltaX | |||
|- | |||
| 0x24 | |||
| 0x4 | |||
| DeltaY | |||
|- | |||
| 0x28 | |||
| 0x4 | |||
| VelocityX | |||
|- | |||
| 0x2C | |||
| 0x4 | |||
| VelocityY | |||
|- | |||
| 0x30 | |||
| 0x4 | |||
| [[#GestureAttributeSet|Attributes]] | |||
|- | |||
| 0x34 | |||
| 0x4 | |||
| Scale | |||
|- | |||
| 0x38 | |||
| 0x4 | |||
| RotationAngle | |||
|- | |||
| 0x3C | |||
| 0x4 | |||
| PointCount | |||
|- | |||
| 0x40 | |||
| 0x8 * 4 | |||
| [[#GesturePoint|Points]] | |||
|} | |||
== ConsoleSixAxisSensorSharedMemoryFormat == | |||
This is "nn::hid::detail::ConsoleSixAxisSensorSharedMemoryFormat". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x1 | |||
| IsSevenSixAxisSensorAtRest | |||
|- | |||
| 0x9 | |||
| 0x3 | |||
| Padding | |||
|- | |||
| 0xC | |||
| 0x4 | |||
| VerticalizationError | |||
|- | |||
| 0x10 | |||
| 0xC | |||
| GyroBias | |||
|} | |||
= AnalogStickState = | |||
This is "nn::hid::AnalogStickState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x4 | |||
| X | |||
|- | |||
| 0x4 | |||
| 0x4 | |||
| Y | |||
|} | |||
= 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 | |||
|} | |||
= InputSourceState = | |||
This is "nn::hid::system::InputSourceState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| Timestamp | |||
|} | |||
= NpadControllerColor = | |||
This is "nn::hid::NpadControllerColor". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x4 | |||
| Main | |||
|- | |||
| 0x4 | |||
| 0x4 | |||
| Sub | |||
|} | |||
= NpadFullKeyColorState = | |||
This is "nn::hid::detail::NpadFullKeyColorState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x4 | |||
| [[#ColorAttribute|Attribute]] | |||
|- | |||
| 0x4 | |||
| 0x8 | |||
| [[#NpadControllerColor|FullKey]] | |||
|} | |||
= NpadJoyColorState = | |||
This is "nn::hid::detail::NpadJoyColorState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x4 | |||
| [[#ColorAttribute|Attribute]] | |||
|- | |||
| 0x4 | |||
| 0x8 | |||
| [[#NpadControllerColor|Left]] | |||
|- | |||
| 0xC | |||
| 0x8 | |||
| [[#NpadControllerColor|Right]] | |||
|} | |||
= DirectionState = | |||
This is "nn::hid::DirectionState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x4 | |||
| XX | |||
|- | |||
| 0x4 | |||
| 0x4 | |||
| XY | |||
|- | |||
| 0x8 | |||
| 0x4 | |||
| XZ | |||
|- | |||
| 0xC | |||
| 0x4 | |||
| YX | |||
|- | |||
| 0x10 | |||
| 0x4 | |||
| YY | |||
|- | |||
| 0x14 | |||
| 0x4 | |||
| YZ | |||
|- | |||
| 0x18 | |||
| 0x4 | |||
| ZX | |||
|- | |||
| 0x1C | |||
| 0x4 | |||
| ZY | |||
|- | |||
| 0x20 | |||
| 0x4 | |||
| ZZ | |||
|} | |||
= GesturePoint = | |||
This is "nn::hid::GesturePoint". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x4 | |||
| X | |||
|- | |||
| 0x4 | |||
| 0x4 | |||
| Y | |||
|} | |||
= ColorAttribute = | |||
This is "nn::hid::detail::ColorAttribute". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Ok | |||
|- | |||
| 1 || ReadError | |||
|- | |||
| 2 || NoController | |||
|} | |||
= DebugPadAttributeSet = | |||
This is "nn::hid::DebugPadAttributeSet". This is a BitFlagSet object for [[#DebugPadAttribute]]. | |||
= TouchAttributeSet = | |||
This is "nn::hid::TouchAttributeSet". This is a BitFlagSet object for [[#TouchAttribute]]. | |||
= MouseAttributeSet = | |||
This is "nn::hid::MouseAttributeSet". This is a BitFlagSet object for [[#MouseAttribute]]. | |||
= BasicXpadAttributeSet = | |||
This is "nn::hid::BasicXpadAttributeSet". This is a BitFlagSet object for [[#BasicXpadAttribute]]. | |||
= NpadAttributesSet = | |||
This is "nn::hid::NpadAttributesSet". This is a BitFlagSet object for [[#NpadAttribute]]. | |||
= SixAxisSensorAttributeSet = | |||
This is "nn::hid::SixAxisSensorAttributeSet". This is a BitFlagSet object for [[#SixAxisSensorAttribute]]. | |||
= GestureAttributeSet = | |||
This is "nn::hid::GestureAttributeSet". This is a BitFlagSet object for [[#GestureAttribute]]. | |||
= DebugPadButtonSet = | |||
This is "nn::hid::DebugPadButtonSet". This is a BitFlagSet object for [[#DebugPadButton]]. | |||
= MouseButtonSet = | |||
This is "nn::hid::MouseButtonSet". This is a BitFlagSet object for [[#MouseButton]]. | |||
= KeyboardModifierSet = | |||
This is "nn::hid::KeyboardModifierSet". This is a BitFlagSet object for [[#KeyboardModifier]]. | |||
= KeyboardKeySet = | |||
This is "nn::hid::KeyboardKeySet". This is a BitFlagSet object for [[#KeyboardKey]]. | |||
= BasicXpadButtonSet = | |||
This is "nn::hid::BasicXpadButtonSet". This is a BitFlagSet object for [[#BasicXpadButton]]. | |||
= HomeButtonSet = | |||
This is "nn::hid::system::HomeButtonSet". This is a BitFlagSet object for [[#HomeButton]]. | |||
= SleepButtonSet = | |||
This is "nn::hid::system::SleepButtonSet". This is a BitFlagSet object for [[#SleepButton]]. | |||
= CaptureButtonSet = | |||
This is "nn::hid::system::CaptureButtonSet". This is a BitFlagSet object for [[#CaptureButton]]. | |||
= NpadButtonSet = | |||
This is "nn::hid::NpadButtonSet". This is a BitFlagSet object for [[#NpadButton]]. | |||
= AnalogStickCalibrationFlagsSet = | |||
This is "nn::hid::detail::AnalogStickCalibrationFlagsSet". This is a BitFlagSet object for [[#AnalogStickCalibrationFlags]]. | |||
= SixAxisSensorUserCalibrationFlagsSet = | |||
This is "nn::hid::detail::SixAxisSensorUserCalibrationFlagsSet". This is a BitFlagSet object for [[#SixAxisSensorUserCalibrationFlags]]. | |||
= NpadStyleSet = | |||
This is "nn::hid::NpadStyleSet". This is a BitFlagSet object for [[#NpadStyleTag]]. | |||
= NpadStyleTag = | |||
This is "nn::hid::NpadStyleTag". | |||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
! Notes | |||
|- | |||
| 0 | |||
| NpadFullKey | |||
| Pro Controller | |||
|- | |||
| 1 | |||
| NpadHandheld | |||
| Joy-Con controller in handheld mode | |||
|- | |||
| 2 | |||
| NpadJoyDual | |||
| Joy-Con controller in dual mode | |||
|- | |||
| 3 | |||
| NpadJoyLeft | |||
| Joy-Con left controller in single mode | |||
|- | |||
| 4 | |||
| NpadJoyRight | |||
| Joy-Con right controller in single mode | |||
|- | |||
| 5 | |||
| NpadGc | |||
| GameCube controller | |||
|- | |||
| 6 | |||
| NpadPalma | |||
| Poké Ball Plus controller | |||
|- | |||
| 7 | |||
| NpadLark | |||
| NES/Famicom controller | |||
|- | |||
| 8 | |||
| NpadHandheldLark | |||
| NES/Famicom controller in handheld mode | |||
|- | |||
| 9 | |||
| NpadLucia | |||
| SNES controller | |||
|- | |||
| 10-28 | |||
| Reserved | |||
| | |||
|- | |||
| 29 | |||
| NpadSystemExt | |||
| Generic external controller | |||
|- | |||
| 30 | |||
| NpadSystem | |||
| Generic controller | |||
|- | |||
| 31 | |||
| Reserved | |||
| | |||
|} | |||
= NpadDeviceTypeSet = | |||
This is "nn::hid::system::NpadDeviceType". This is a BitFlagSet object for [[#NpadDeviceType]]. | |||
= NpadSystemPropertiesSet = | |||
This is "nn::hid::detail::NpadSystemPropertiesSet". This is a BitFlagSet object for [[#NpadSystemProperties]]. | |||
= NpadSystemButtonPropertiesSet = | |||
This is "nn::hid::detail::NpadSystemButtonPropertiesSet". This is a BitFlagSet object for [[#NpadSystemButtonProperties]]. | |||
= AppletFooterUiAttributesSet = | |||
This is "nn::hid::system::AppletFooterUiAttributesSet". This is a BitFlagSet object for [[#AppletFooterUiAttribute]]. | |||
= UniquePadType = | |||
This is "nn::hid::system::UniquePadType". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Embedded | |||
|- | |||
| 1 || FullKeyController | |||
|- | |||
| 2 || RightController | |||
|- | |||
| 3 || LeftController | |||
|} | |||
= UniquePadInterface = | |||
This is "nn::hid::system::UniquePadInterface". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Embedded | |||
|- | |||
| 1 || Rail | |||
|- | |||
| 2 || Bluetooth | |||
|- | |||
| 3 || Usb | |||
|} | |||
= UniquePadSerialNumber = | |||
This is "nn::hid::system::UniquePadSerialNumber". This is a 0x10 byte value. | |||
= AnalogStickManualCalibrationStage = | |||
This is "nn::hid::system::AnalogStickManualCalibrationStage". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || ReleaseFromRight | |||
|- | |||
| 1 || ReleaseFromBottom | |||
|- | |||
| 2 || ReleaseFromLeft | |||
|- | |||
| 3 || ReleaseFromTop | |||
|- | |||
| 4 || Rotate | |||
|- | |||
| 5 || Update | |||
|- | |||
| 6 || Completed | |||
|- | |||
| 7 || Clear | |||
|- | |||
| 8 || ClearCompleted | |||
|} | |||
= SixAxisSensorUserCalibrationStage = | |||
This is "nn::hid::system::SixAxisSensorUserCalibrationStage". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Measuring | |||
|- | |||
| 1 || Update | |||
|- | |||
| 2 || Completed | |||
|} | |||
= NpadJoyAssignmentMode = | |||
This is "nn::hid::NpadJoyAssignmentMode". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Dual | |||
|- | |||
| 1 || Single | |||
|} | |||
= AppletFooterUiType = | |||
This is "nn::hid::system::AppletFooterUiType". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || None | |||
|- | |||
| 1 || HandheldNone | |||
|- | |||
| 2 || HandheldJoyConLeftOnly | |||
|- | |||
| 3 || HandheldJoyConRightOnly | |||
|- | |||
| 4 || HandheldJoyConLeftJoyConRight | |||
|- | |||
| 5 || JoyDual | |||
|- | |||
| 6 || JoyDualLeftOnly | |||
|- | |||
| 7 || JoyDualRightOnly | |||
|- | |||
| 8 || JoyLeftHorizontal | |||
|- | |||
| 9 || JoyLeftVertical | |||
|- | |||
| 10 || JoyRightHorizontal | |||
|- | |||
| 11 || JoyRightVertical | |||
|- | |||
| 12 || SwitchProController | |||
|- | |||
| 13 || CompatibleProController | |||
|- | |||
| 14 || CompatibleJoyCon | |||
|- | |||
| 15 || LarkHvc1 | |||
|- | |||
| 16 || LarkHvc2 | |||
|- | |||
| 17 || LarkNesLeft | |||
|- | |||
| 18 || LarkNesRight | |||
|- | |||
| 19 || Lucia | |||
|- | |||
| 20 || Verification | |||
|} | |||
= NpadLarkType = | |||
This is "nn::hid::NpadLarkType". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Invalid | |||
|- | |||
| 1 || H1 | |||
|- | |||
| 2 || H2 | |||
|- | |||
| 3 || NL | |||
|- | |||
| 4 || NR | |||
|} | |||
= NpadLuciaType = | |||
This is "nn::hid::NpadLuciaType". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Invalid | |||
|- | |||
| 1 || J | |||
|- | |||
| 2 || E | |||
|- | |||
| 3 || U | |||
|} | |||
= DeviceHandle = | |||
This is "nn::xcd::DeviceHandle". This is a 8 byte value. | |||
= GestureDirection = | |||
This is "nn::hid::GestureDirection". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || None | |||
|- | |||
| 1 || Left | |||
|- | |||
| 2 || Up | |||
|- | |||
| 3 || Right | |||
|- | |||
| 4 || Down | |||
|} | |||
= GestureType = | |||
This is "nn::hid::GestureType". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Idle | |||
|- | |||
| 1 || Complete | |||
|- | |||
| 2 || Cancel | |||
|- | |||
| 3 || Touch | |||
|- | |||
| 4 || Press | |||
|- | |||
| 5 || Tap | |||
|- | |||
| 6 || Pan | |||
|- | |||
| 7 || Swipe | |||
|- | |||
| 8 || Pinch | |||
|- | |||
| 9 || Rotate | |||
|} | |||
= GyroscopeZeroDriftMode = | |||
This is "nn::hid::GyroscopeZeroDriftMode". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Loose | |||
|- | |||
| 1 || Standard | |||
|- | |||
| 2 || Tight | |||
|} | |} | ||
= NpadIdType = | = NpadIdType = | ||
This is "nn::hid::NpadIdType". This is the controller index used in [[ | This is "nn::hid::NpadIdType". This is the controller index used in [[#SharedMemoryFormat|sharedmem]]. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 2,861: | Line 5,798: | ||
! Offset || Size || Description | ! Offset || Size || Description | ||
|- | |- | ||
| 0x0 || 0x1 || powerConnected for the main | | 0x0 || 0x1 || powerConnected for the main PowerInfo. | ||
|- | |- | ||
| 0x1 || 0x1 || ORRed with powerConnected to set the value of the first byte for the controller [[HID_Shared_Memory#Flags|flags]]. | | 0x1 || 0x1 || ORRed with powerConnected to set the value of the first byte for the controller [[HID_Shared_Memory#Flags|flags]]. | ||
Line 2,867: | Line 5,804: | ||
| 0x2 || 0x6 || Unknown | | 0x2 || 0x6 || Unknown | ||
|- | |- | ||
| 0x8 || 0x4 || batteryCharge for the main | | 0x8 || 0x4 || batteryCharge for the main PowerInfo. | ||
|- | |- | ||
| 0xC || 0x4 || [[HID_Shared_Memory#Button_State|Buttons]]. Bit18 = HOME and bit19 = Capture. | | 0xC || 0x4 || [[HID_Shared_Memory#Button_State|Buttons]]. Bit18 = HOME and bit19 = Capture. | ||
|- | |- | ||
| 0x10 || 0x10(4*2*2) || Joystick data | | 0x10 || 0x10(4*2*2) || Joystick data. | ||
|- | |- | ||
| 0x20 || 0x1 || Unused for input. Set with output from [[#DumpHdlsStates]] (zero in some cases). | | 0x20 || 0x1 || Unused for input. Set with output from [[#DumpHdlsStates]] (zero in some cases). | ||
Line 2,883: | Line 5,820: | ||
! Offset || Size || Description | ! Offset || Size || Description | ||
|- | |- | ||
| 0x0 || 0x4 || batteryCharge for the main | | 0x0 || 0x4 || batteryCharge for the main PowerInfo. | ||
|- | |- | ||
| 0x4 || 0x4 || Unknown | | 0x4 || 0x4 || Unknown | ||
|- | |- | ||
| 0x8 || 0x8 | | | 0x8 || 0x8 || Buttons, masked with 0xfffffffff00fffff. See above table regarding HOME/Capture buttons. | ||
|- | |- | ||
| 0x10 || 0x10(4*2*2) || Joystick data | | 0x10 || 0x10(4*2*2) || Joystick data. | ||
|- | |- | ||
| 0x20 || 0x1 || Unused for input. Set with output from [[#DumpHdlsStates]] (zero in some cases). | | 0x20 || 0x1 || Unused for input. Set with output from [[#DumpHdlsStates]] (zero in some cases). | ||
Line 3,276: | Line 6,213: | ||
| 0x28 || 0x8 || [[#JoystickConfig]] | | 0x28 || 0x8 || [[#JoystickConfig]] | ||
|} | |} | ||
= IrCameraHandle = | = IrCameraHandle = |