HID services: Difference between revisions

No edit summary
(21 intermediate revisions by 3 users not shown)
Line 13: Line 13:
|-
|-
| 21 || [[#ActivateMouse]]
| 21 || [[#ActivateMouse]]
|-
| 22 || [19.0.0+] AddMouseWheelDelta
|-
|-
| 26 || [16.0.0+] ActivateDebugMouse
| 26 || [16.0.0+] ActivateDebugMouse
Line 95: Line 97:
|-
|-
| 91 || [[#ActivateGesture]]
| 91 || [[#ActivateGesture]]
|-
| 92 || [18.0.0+] SetGestureOutputRanges
|-
|-
| 100 || [[#SetSupportedNpadStyleSet]]
| 100 || [[#SetSupportedNpadStyleSet]]
Line 147: Line 151:
|-
|-
| 136 || [8.0.0+] [[#ClearNpadCaptureButtonAssignment]]
| 136 || [8.0.0+] [[#ClearNpadCaptureButtonAssignment]]
|-
| 137 || [20.0.0+] SetNpadGcAnalogStick8bitRawValue
|-
|-
| 200 || [[#GetVibrationDeviceInfo]]
| 200 || [[#GetVibrationDeviceInfo]]
Line 173: Line 179:
|-
|-
| 212 || [11.0.0+] [[#SendVibrationValueInBool]]
| 212 || [11.0.0+] [[#SendVibrationValueInBool]]
|-
| 213 || [17.0.0+] SendVibrationValueInMode
|-
| 214 || [17.0.0+] SendVibrationValuesInMode
|-
|-
| 300 || [3.0.0+] [[#ActivateConsoleSixAxisSensor]]
| 300 || [3.0.0+] [[#ActivateConsoleSixAxisSensor]]
Line 195: Line 205:
|-
|-
| 310 || [6.0.0+] [[#ResetSevenSixAxisSensorTimestamp]]
| 310 || [6.0.0+] [[#ResetSevenSixAxisSensorTimestamp]]
|-
| 311 || [17.0.0+] ForceActivateConsoleSixAxisSensor
|-
| 312 || [17.0.0+] ForceDeactivateConsoleSixAxisSensor
|-
|-
| 400 || [3.0.0+] [[#IsUsbFullKeyControllerEnabled]]
| 400 || [3.0.0+] [[#IsUsbFullKeyControllerEnabled]]
Line 281: Line 295:
|-
|-
| 1003 || [9.0.0+] [[#IsFirmwareUpdateNeededForNotification]]
| 1003 || [9.0.0+] [[#IsFirmwareUpdateNeededForNotification]]
|-
| 1004 || [20.0.0+] SetTouchScreenOutputRanges ([17.0.0-19.0.1] SetTouchScreenResolution)
|-
| 1005 || [20.0.0+] EnableNxTouchScreenEmulationForTouchEnter
|-
|-
| 2000 || [10.0.0+] [[#ActivateDigitizer]]
| 2000 || [10.0.0+] [[#ActivateDigitizer]]
Line 533: Line 551:
* 0x2: [6.0.0+]
* 0x2: [6.0.0+]
* 0x3: [8.0.0+]
* 0x3: [8.0.0+]
* 0x5: [18.0.0+]


== SetNpadJoyHoldType ==
== SetNpadJoyHoldType ==
Line 969: Line 988:


== ActivateDigitizer ==
== ActivateDigitizer ==
Takes a PID and an [[AM_services|AppletResourceUserId]], no output.
Takes a PID and an [[AM_services|AppletResourceUserId]]. No output.


== IAppletResource ==
== IAppletResource ==
Line 1,025: Line 1,044:
|-
|-
| 17 || [13.0.0+] IsTouchScreenManaged
| 17 || [13.0.0+] IsTouchScreenManaged
|-
| 18 || [18.0.0+] SetTouchScreenAutoPilotStateWithAruid
|-
|-
| 20 || [[#DeactivateMouse]]
| 20 || [[#DeactivateMouse]]
Line 1,135: Line 1,156:
|-
|-
| 211 || [6.0.0+] StartFirmwareUpdateIndividual
| 211 || [6.0.0+] StartFirmwareUpdateIndividual
|-
| 212 || [19.0.0+] GetDetailFirmwareVersion
|-
| 213 || [20.0.0+] GetFirmwareVersionStringForDevMenu
|-
|-
| 215 || [6.0.0+] SetUsbFirmwareForceUpdateEnabled
| 215 || [6.0.0+] SetUsbFirmwareForceUpdateEnabled
|-
|-
| 216 || [6.0.0+] SetAllKuinaDevicesToFirmwareUpdateMode
| 216 || [6.0.0+] SetAllKuinaDevicesToFirmwareUpdateMode
|-
| 217 || [17.0.0+] StartFirmwareUpdateFromImageSet
|-
|-
| 221 || [3.0.0+] [[#UpdateControllerColor]]
| 221 || [3.0.0+] [[#UpdateControllerColor]]
Line 1,201: Line 1,228:
|-
|-
| 251 || [12.0.0+] GetAnalogStickModuleParam
| 251 || [12.0.0+] GetAnalogStickModuleParam
|-
| 253 || [19.0.0+] ClearStorageForShipment
|-
|-
| 301 || [5.0.0-8.1.0] [[#GetAbstractedPadHandles]]
| 301 || [5.0.0-8.1.0] [[#GetAbstractedPadHandles]]
Line 1,233: Line 1,262:
|-
|-
| 350 || [5.0.0+] [[#AddRegisteredDevice]]
| 350 || [5.0.0+] [[#AddRegisteredDevice]]
|-
| 351 || [17.0.0-18.1.0] GetRegisteredDevicesCountDebug
|-
| 352 || [17.0.0-18.1.0] DeleteRegisteredDevicesDebug
|-
|-
| 400 || [6.0.0+] DisableExternalMcuOnNxDevice
| 400 || [6.0.0+] DisableExternalMcuOnNxDevice
Line 1,255: Line 1,288:
|-
|-
| 600 || [10.0.0+] ConvertPadState
| 600 || [10.0.0+] ConvertPadState
|-
| 601 || [18.0.0+] [[#IsButtonConfigSupported]]
|-
| 602 || [18.0.0+] [[#IsButtonConfigEmbeddedSupported]]
|-
| 603 || [18.0.0+] [[#DeleteButtonConfig]]
|-
| 604 || [18.0.0+] [[#DeleteButtonConfigEmbedded]]
|-
| 605 || [18.0.0+] [[#SetButtonConfigEnabled]]
|-
| 606 || [18.0.0+] [[#SetButtonConfigEmbeddedEnabled]]
|-
| 607 || [18.0.0+] [[#IsButtonConfigEnabled]]
|-
| 608 || [18.0.0+] [[#IsButtonConfigEmbeddedEnabled]]
|-
| 609 || [18.0.0+] [[#SetButtonConfigEmbedded]]
|-
| 610 || [18.0.0+] [[#SetButtonConfigFull]]
|-
| 611 || [18.0.0+] [[#SetButtonConfigLeft]]
|-
| 612 || [18.0.0+] [[#SetButtonConfigRight]]
|-
| 613 || [18.0.0+] [[#GetButtonConfigEmbedded]]
|-
| 614 || [18.0.0+] [[#GetButtonConfigFull]]
|-
| 615 || [18.0.0+] [[#GetButtonConfigLeft]]
|-
| 616 || [18.0.0+] [[#GetButtonConfigRight]]
|-
|-
| 650 || [12.0.0+] AddButtonPlayData
| 650 || [12.0.0+] AddButtonPlayData
Line 1,262: Line 1,327:
| 652 || [12.0.0+] StopButtonPlayData
| 652 || [12.0.0+] StopButtonPlayData
|-
|-
| 2000 || [10.0.0+] DeactivateDigitizer
| 2000 || [10.0.0+] [[#DeactivateDigitizer]]
|-
|-
| 2001 || [10.0.0+] SetDigitizerAutoPilotState
| 2001 || [10.0.0+] [[#SetDigitizerAutoPilotState]]
|-
|-
| 2002 || [10.0.0+] UnsetDigitizerAutoPilotState
| 2002 || [10.0.0+] [[#UnsetDigitizerAutoPilotState]]
|-
|-
| 3000 || [16.0.0+] ReloadFirmwareDebugSettings
| 3000 || [16.0.0+] ReloadFirmwareDebugSettings
Line 1,360: Line 1,425:


[9.0.0+] Now takes a total of 8-bytes of input, returns a total of 0x18-bytes of output.
[9.0.0+] Now takes a total of 8-bytes of input, returns a total of 0x18-bytes of output.
[18.0.0+] Now takes a total of 8-bytes of input, returns a total of 0x20-bytes of output.


== GetSixAxisSensorDriverStates ==
== GetSixAxisSensorDriverStates ==
Line 1,486: Line 1,553:


[11.0.0+] Takes an input [[#DebugRegisteredDevice]], no output.
[11.0.0+] Takes an input [[#DebugRegisteredDevice]], no output.
== DeactivateDigitizer ==
No input/output.
== SetDigitizerAutoPilotState ==
Takes an input [[#DigitizerAutoPilotState]]. No output.
== UnsetDigitizerAutoPilotState ==
No input/output.


= hid:sys =
= hid:sys =
Line 1,522: Line 1,598:
| 213 || ActivateNfc
| 213 || ActivateNfc
|-
|-
| 214 || [4.0.0+] GetXcdHandleForNpadWithNfc
| 214 || [4.0.0-18.1.0] GetXcdHandleForNpadWithNfc
|-
|-
| 215 || [4.0.0+] IsNfcActivated
| 215 || [4.0.0+] IsNfcActivated
|-
| 216 || [19.0.0+] GetAbstractedPadIdForNpadWithNfc
|-
| 217 || [19.0.0+] [[#SetNfcEvent]]
|-
| 218 || [19.0.0+] [[#GetNfcInfo]]
|-
| 219 || [19.0.0+] StartNfcDiscovery
|-
| 220 || [19.0.0+] StopNfcDiscovery
|-
| 221 || [19.0.0+] StartNtagRead
|-
| 222 || [19.0.0+] StartNtagWrite
|-
| 223 || [19.0.0+] SendNfcRawData
|-
| 224 || [19.0.0+] RegisterMifareKey
|-
| 225 || [19.0.0+] ClearMifareKey
|-
| 226 || [19.0.0+] StartMifareRead
|-
| 227 || [19.0.0+] StartMifareWrite
|-
|-
| 230 || AcquireIrSensorEventHandle
| 230 || AcquireIrSensorEventHandle
Line 1,533: Line 1,633:
|-
|-
| 233 || [10.0.0+] GetXcdHandleForNpadWithIrSensor
| 233 || [10.0.0+] GetXcdHandleForNpadWithIrSensor
|-
| 234 || [19.0.0+] GetNpadJoyHoldType
|-
| 241 || [19.0.0+] [[#GetDataFormat]]
|-
| 242 || [19.0.0+] [[#SetDataFormat]]
|-
| 243 || [19.0.0+] [[#GetMcuState]]
|-
| 244 || [19.0.0+] [[#SetMcuState]]
|-
| 245 || [19.0.0+] [[#GetMcuVersionForNfc]]
|-
| 246 || [19.0.0+] [[#CheckNfcDevicePower]]
|-
| 247 || [19.0.0+] [[#SetMcuStateImmediate]]
|-
|-
| 301 || ActivateNpadSystem
| 301 || ActivateNpadSystem
Line 1,589: Line 1,705:
|-
|-
| 330 || [14.0.0+] CheckAbstractedPadConnection
| 330 || [14.0.0+] CheckAbstractedPadConnection
|-
| 332 || [19.0.0+] ConvertAppletDetailedUiTypeFromPlayReportType
|-
| 333 || [20.0.0+] SetNpadUserSpgApplet
|-
| 334 || [20.0.0+] AcquireUniquePadButtonStateChangedEventHandle
|-
|-
| 500 || SetAppletResourceUserId
| 500 || SetAppletResourceUserId
Line 1,627: Line 1,749:
|-
|-
| 525 || [11.0.0+] IsJoyConAttachedOnAllRail
| 525 || [11.0.0+] IsJoyConAttachedOnAllRail
|-
| 526 || [19.0.0+] IsInvertedControllerConnectedOnRail
|-
|-
| 540 || AcquirePlayReportControllerUsageUpdateEvent
| 540 || AcquirePlayReportControllerUsageUpdateEvent
Line 1,634: Line 1,758:
| 542 || AcquirePlayReportRegisteredDeviceUpdateEvent
| 542 || AcquirePlayReportRegisteredDeviceUpdateEvent
|-
|-
| 543 || GetRegisteredDevicesOld ([1.0.0-4.1.0] GetRegisteredDevices)
| 543 || [5.0.0-18.1.0] GetRegisteredDevicesOld ([1.0.0-4.1.0] GetRegisteredDevices)
|-
|-
| 544 || [3.0.0+] AcquireConnectionTriggerTimeoutEvent
| 544 || [3.0.0+] AcquireConnectionTriggerTimeoutEvent
Line 1,647: Line 1,771:
|-
|-
| 549 || [6.0.0+] GetConnectableRegisteredDevices
| 549 || [6.0.0+] GetConnectableRegisteredDevices
|-
| 551 || [20.0.0+] GetRegisteredDevicesForControllerSupport
|-
|-
| 700 || ActivateUniquePad
| 700 || ActivateUniquePad
Line 1,653: Line 1,779:
|-
|-
| 703 || [[#GetUniquePadIds]]
| 703 || [[#GetUniquePadIds]]
|-
| 711 || [20.0.0+] AcquireUniquePadConnectionOnHandheldForNsEventHandle
|-
| 712 || [20.0.0+] GetUniquePadColor12
|-
|-
| 751 || AcquireJoyDetachOnBluetoothOffEventHandle
| 751 || AcquireJoyDetachOnBluetoothOffEventHandle
Line 1,681: Line 1,811:
|-
|-
| 812 || [8.0.0+] GetConsoleUniqueSixAxisSensorHandle
| 812 || [8.0.0+] GetConsoleUniqueSixAxisSensorHandle
|-
| 813 || [18.0.0+] GetDeviceType
|-
|-
| 821 || StartAnalogStickManualCalibration
| 821 || StartAnalogStickManualCalibration
Line 1,741: Line 1,873:
|-
|-
| 1011 || [4.0.0+] DeactivateAudioControl
| 1011 || [4.0.0+] DeactivateAudioControl
|-
| 1012 || [20.0.0+] GetFirmwareVersionStringForUserSupportPage
|-
|-
| 1050 || [5.0.0+] IsSixAxisSensorAccurateUserCalibrationSupported
| 1050 || [5.0.0+] IsSixAxisSensorAccurateUserCalibrationSupported
Line 1,782: Line 1,916:
| 1157 || [10.0.0+] [[#CancelConnectionTrigger]]
| 1157 || [10.0.0+] [[#CancelConnectionTrigger]]
|-
|-
| 1200 || [10.0.0+] [[#IsButtonConfigSupported]]
| 1200 || [10.0.0-17.0.1] [[#IsButtonConfigSupported]]
|-
|-
| 1201 || [11.0.0+] [[#IsButtonConfigEmbeddedSupported]] ([10.0.0-10.2.0] [[#DeleteButtonConfig]])
| 1201 || [11.0.0-17.0.1] [[#IsButtonConfigEmbeddedSupported]] ([10.0.0-10.2.0] [[#DeleteButtonConfig]])
|-
|-
| 1202 || [11.0.0+] [[#DeleteButtonConfig]] ([10.0.0-10.2.0] [[#SetButtonConfigEnabled]])
| 1202 || [11.0.0-17.0.1] [[#DeleteButtonConfig]] ([10.0.0-10.2.0] [[#SetButtonConfigEnabled]])
|-
|-
| 1203 || [11.0.0+] [[#DeleteButtonConfigEmbedded]] ([10.0.0-10.2.0] [[#IsButtonConfigEnabled]])
| 1203 || [11.0.0-17.0.1] [[#DeleteButtonConfigEmbedded]] ([10.0.0-10.2.0] [[#IsButtonConfigEnabled]])
|-
|-
| 1204 || [11.0.0+] [[#SetButtonConfigEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigEmbedded]])
| 1204 || [11.0.0-17.0.1] [[#SetButtonConfigEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigEmbedded]])
|-
|-
| 1205 || [11.0.0+] [[#SetButtonConfigEmbeddedEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigFull]])
| 1205 || [11.0.0-17.0.1] [[#SetButtonConfigEmbeddedEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigFull]])
|-
|-
| 1206 || [11.0.0+] [[#IsButtonConfigEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigLeft]])
| 1206 || [11.0.0-17.0.1] [[#IsButtonConfigEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigLeft]])
|-
|-
| 1207 || [11.0.0+] [[#IsButtonConfigEmbeddedEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigRight]])
| 1207 || [11.0.0-17.0.1] [[#IsButtonConfigEmbeddedEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigRight]])
|-
|-
| 1208 || [11.0.0+] [[#SetButtonConfigEmbedded]] ([10.0.0-10.2.0] [[#GetButtonConfigEmbedded]])
| 1208 || [11.0.0-17.0.1] [[#SetButtonConfigEmbedded]] ([10.0.0-10.2.0] [[#GetButtonConfigEmbedded]])
|-
|-
| 1209 || [11.0.0+] [[#SetButtonConfigFull]] ([10.0.0-10.2.0] [[#GetButtonConfigFull]])
| 1209 || [11.0.0-17.0.1] [[#SetButtonConfigFull]] ([10.0.0-10.2.0] [[#GetButtonConfigFull]])
|-
|-
| 1210 || [10.0.0-10.2.0] [[#GetButtonConfigLeft]]
| 1210 || [10.0.0-10.2.0] [[#GetButtonConfigLeft]]
|-
|-
| 1211 || [11.0.0+] [[#SetButtonConfigRight]] ([10.0.0-10.2.0] [[#GetButtonConfigRight]])
| 1211 || [11.0.0-17.0.1] [[#SetButtonConfigRight]] ([10.0.0-10.2.0] [[#GetButtonConfigRight]])
|-
|-
| 1212 || [11.0.0+] [[#GetButtonConfigEmbedded]]
| 1212 || [11.0.0-17.0.1] [[#GetButtonConfigEmbedded]]
|-
|-
| 1213 || [11.0.0+] [[#GetButtonConfigFull]]
| 1213 || [11.0.0-17.0.1] [[#GetButtonConfigFull]]
|-
|-
| 1214 || [11.0.0+] [[#GetButtonConfigLeft]]
| 1214 || [11.0.0-17.0.1] [[#GetButtonConfigLeft]]
|-
|-
| 1215 || [11.0.0+] [[#GetButtonConfigRight]]
| 1215 || [11.0.0-17.0.1] [[#GetButtonConfigRight]]
|-
|-
| 1250 || [10.0.0+] [[#IsCustomButtonConfigSupported]]
| 1250 || [10.0.0+] [[#IsCustomButtonConfigSupported]]
Line 1,898: Line 2,032:
| 1291 || [11.0.0+] [[#SetButtonConfigStorageRight]]
| 1291 || [11.0.0+] [[#SetButtonConfigStorageRight]]
|-
|-
| 12010 || [11.0.0+] [[#SetButtonConfigLeft]]
| 1308 || [18.0.0+] SetButtonConfigVisible
|-
| 1309 || [18.0.0+] IsButtonConfigVisible
|-
| 1320 || [17.0.0+] WakeTouchScreenUp
|-
| 1321 || [17.0.0+] PutTouchScreenToSleep
|-
| 1322 || [20.0.0+] AcquireTouchScreenAsyncWakeCompletedEvent
|-
| 1420 || [19.0.0+] GetAppletResourceProperty
|-
| 12010 || [11.0.0-17.0.1] [[#SetButtonConfigLeft]]
|}
|}


Line 3,003: Line 3,149:
= xcd:sys =
= xcd:sys =
This is "nn::xcd::detail::ISystemServer".
This is "nn::xcd::detail::ISystemServer".
This was removed with [19.0.0+].


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 3,892: Line 4,040:
===== DigitizerState =====
===== DigitizerState =====
This is "nn::hid::DigitizerState".
This is "nn::hid::DigitizerState".
This is managed by the sysmodule "cs" (development only) through [[HID_services#hid:dbg|hid:dbg]] commands. No actual physical device is supported on NX.


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 4,372: Line 4,522:
|-
|-
| 0x160
| 0x160
| 0x40
| 0x60
| [[#SixAxisSensorUserCalibrationStateLifo]]
| [[#SixAxisSensorUserCalibrationStateLifo]]
|-
|-
| 0x1A0
| 0x1C0
| 0x40
| 0x20
| UniquePadConfigMutex
| UniquePadConfigMutex
|}
|}
Line 4,780: Line 4,930:
|-
|-
| 0x4208
| 0x4208
| 0x40
| 0x20
| [1.0.0-8.1.0] Mutex
| [1.0.0-8.1.0] Mutex
|-
|-
Line 7,279: Line 7,429:
| "FK" || Pro Controller
| "FK" || Pro Controller
|-
|-
| "MY" || [[#DeviceTypeInternal|DeviceType]] 4 and [[#DeviceTypeInternal|DeviceType]] 5
| "MY" || MiyabiLeft and MiyabiRight
|-
|-
| "LC" || [[#DeviceTypeInternal|DeviceType]] 6 and [[#DeviceTypeInternal|DeviceType]] 30
| "LC" || Tarragon and Tarragon2
|-
|-
| "HL" || Famicom left controller
| "HL" || Famicom left controller
Line 7,477: Line 7,627:
| 2 || Rail
| 2 || Rail
|-
|-
| 3 || USB
| 3 || Usb
|-
|-
| 4 || Embedded
| 4 || Embedded
Line 7,666: Line 7,816:
= DeviceTypeInternal =
= DeviceTypeInternal =
This is "nn::hid::detail::DeviceTypeInternal".
This is "nn::hid::detail::DeviceTypeInternal".
[9.0.0+] This has been superseded by [[#DeviceType_2|DeviceType]].


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 7,702: Line 7,854:
|}
|}


[9.0.0+] This is "nn::hidtypes::DeviceType".
= DeviceType =
This is "nn::hidtypes::DeviceType".


{| class="wikitable" border="1"
{| class="wikitable" border="1"
!  Value
!  Value
!  [[#DeviceType|DeviceType]]
!  [[#UniquePadType|UniquePadType]]
!  [[#AppletDetailedUiType|AppletDetailedUiType]]
!  Description
!  Description
|-
|-
| 0 || || || || Invalid
| 0 || Unknown
|-
|-
| 1 || JoyRight, HandheldRight || RightController || JoyDual, JoyRightHorizontal, JoyRightVertical, JoyDualRightOnly, HandheldJoyConRightOnly, HandheldJoyConLeftJoyConRight, HandheldLarkHvc1JoyConRight, HandheldLarkNesLeftJoyConRight, HandheldNone || Joy-Con right controller (USB PID 0x2007)
| 1 || [[#JoyConRight|JoyConRight]]
|-
|-
| 2 || JoyLeft, HandheldLeft || LeftController || JoyDual, JoyLeftHorizontal, JoyLeftVertical, JoyDualLeftOnly, HandheldJoyConLeftOnly, HandheldJoyConLeftJoyConRight, HandheldJoyConLeftLarkHvc2, HandheldJoyConLeftLarkNesRight, HandheldNone || Joy-Con left controller (USB PID 0x2006)
| 2 || [[#JoyConLeft|JoyConLeft]]
|-
|-
| 3 || FullKey || FullKeyController || SwitchProController || Pro Controller (USB PID 0x2009)
| 3 || [[#SwitchProController|SwitchProController]]
|-
|-
| 4 || JoyLeft || LeftController || ||
| 4 || MiyabiLeft
|-
|-
| 5 || JoyRight || RightController || ||
| 5 || MiyabiRight
|-
|-
| 6 || FullKey || FullKeyController || ||
| 6 || [[#Tarragon|Tarragon]]
|-
|-
| 7 || LarkHvcLeft, HandheldLarkHvcLeft || LeftController || LarkHvc1, HandheldLarkHvc1Only, HandheldLarkHvc1JoyConRight, HandheldLarkHvc1LarkHvc2, HandheldLarkHvc1LarkNesRight, HandheldNone || Famicom left controller
| 7 || [[#LarkH1|LarkH1]]
|-
|-
| 8 || LarkHvcRight, HandheldLarkHvcRight || RightController || LarkHvc2, HandheldLarkHvc2Only, HandheldJoyConLeftLarkHvc2, HandheldLarkHvc1LarkHvc2, HandheldLarkNesLeftLarkHvc2, HandheldNone || Famicom right controller (with microphone)
| 8 || [[#LarkH2|LarkH2]]
|-
|-
| 9 || LarkNesLeft, HandheldLarkNesLeft || LeftController || LarkNesLeft, HandheldLarkNesLeftOnly, HandheldLarkNesLeftJoyConRight, HandheldLarkNesLeftLarkHvc2, HandheldLarkNesLeftLarkNesRight, HandheldNone || NES left controller
| 9 || [[#LarkNL|LarkNL]]
|-
|-
| 10 || LarkNesRight, HandheldLarkNesRight || RightController || LarkNesRight, HandheldLarkNesRightOnly, HandheldJoyConLeftLarkNesRight, HandheldLarkHvc1LarkNesRight, HandheldLarkNesLeftLarkNesRight, HandheldNone || NES right controller
| 10 || [[#LarkNR|LarkNR]]
|-
|-
| 11 || Lucia || FullKeyController || LuciaU, LuciaJ, LuciaE || SNES controller (USB PID 0x2017)
| 11 || [[#Lucia|Lucia]]
|-
|-
| 12 || Palma || Embedded || Unknown || Poké Ball Plus controller
| 12 || [[#Palma|Palma]]
|-
|-
| 13 || FullKey || FullKeyController || || Gc controller
| 13 || [[#GcOnGggg|GcOnGggg]]
|-
|-
| 14 || HandheldLeft || LeftController || || "Fifty" left controller
| 14 || FiftyL
|-
|-
| 15 || FullKey || FullKeyController || ||
| 15 || UsbPad
|-
|-
| 16 || FullKey || FullKeyController || ||
| 16 || WinGenericPad
|-
|-
| 17 || DebugPad || DebugPadController || Verification || Debug controller
| 17 || Sio
|-
|-
| 18 || HandheldRight || RightController || || "Fifty" right controller
| 18 || FiftyR
|-
|-
| 19 || System || Embedded || CompatibleProController || Third party Pro Controller
| 19 || DebugSwitchProControllerCompatibleDevice
|-
|-
| 20 || System || Embedded || CompatibleJoyCon, HandheldNone || Third party Joy-Con right controller
| 20 || DebugJoyConLeftCompatibleDevice
|-
|-
| 21 || System || Embedded || CompatibleJoyCon, HandheldNone || Third party Joy-Con left controller
| 21 || DebugJoyConRightCompatibleDevice
|-
|-
| [12.0.0+] 22 || Lagon || FullKeyController || Lagon || N64 controller (USB PID 0x2019)
| 22 || [12.0.0+] [[#Lagon|Lagon]]
|-
|-
| [12.0.0+] 23 || || || || Joy-Con Charging Grip (USB PID 0x200E)
| 23 || [12.0.0+] [[#ExternalGrip|ExternalGrip]]
|-
|-
| [13.0.0+] 24 || || || || "Kotetsu" (Pro Controller MCU) in DFU mode (USB PID 0x200F)
| 24 || [13.0.0+] [[#SwitchProControllerDfu|SwitchProControllerDfu]]
|-
|-
| [13.0.0+] 25 || || || || "Kuina" (Joy-Con Charging Grip MCU) in DFU mode (USB PID 0x2008)
| 25 || [13.0.0+] [[#ExternalGripDfu|ExternalGripDfu]]
|-
|-
| [13.0.0+] 26 || || || || SNES controller MCU in DFU mode (USB PID 0x2018)
| 26 || [13.0.0+] [[#LuciaDfu|LuciaDfu]]
|-
|-
| [13.0.0+] 27 || || || || N64 controller MCU in DFU mode (USB PID 0x201A)
| 27 || [13.0.0+] [[#LagonDfu|LagonDfu]]
|-
|-
| [13.0.0+] 28 || Lager || FullKeyController || || Sega Genesis controller (USB PID 0x201E)
| 28 || [13.0.0+] [[#Lager|Lager]]
|-
|-
| [14.0.0+] 29 || || || || Sega Genesis controller MCU in DFU mode (USB PID 0x201F)
| 29 || [14.0.0+] [[#LagerDfu|LagerDfu]]
|-
|-
| [14.0.0+] 30 || FullKey || FullKeyController || ||
| 30 || [14.0.0+] [[#Tarragon2|Tarragon2]]
|}
|}


= NpadPowerInfo =
== JoyConRight ==
This is "nn::hid::system::NpadPowerInfo".
[[Joy-Con|Joy-Con]] right controller. USB PID is 0x2007.
 
== JoyConLeft ==
[[Joy-Con|Joy-Con]] left controller. USB PID is 0x2006.
 
== SwitchProController ==
[[Pro_Controller|Pro Controller]]. USB PID is 0x2009.
 
== Tarragon ==
Licensed Pro Controller.
 
== LarkH1 ==
Famicom left controller.
 
== LarkH2 ==
Famicom right controller (with microphone).
 
== LarkNL ==
NES left controller.
 
== LarkNR ==
NES right controller.
 
== Lucia ==
SNES controller. USB PID is 0x2017.
 
== Palma ==
Poké Ball Plus controller.
 
== GcOnGggg ==
GameCube controller.
 
== Lagon ==
N64 controller. USB PID is 0x2019.
 
== ExternalGrip ==
Joy-Con Charging Grip. USB PID is 0x200E.
 
== SwitchProControllerDfu ==
"Kotetsu" (Pro Controller MCU) in DFU mode. USB PID is 0x200F.
 
== ExternalGripDfu ==
"Kuina" (Joy-Con Charging Grip MCU) in DFU mode. USB PID is 0x2008.
 
== LuciaDfu ==
SNES controller MCU in DFU mode. USB PID is 0x2018.
 
== LagonDfu ==
N64 controller MCU in DFU mode. USB PID is 0x201A.
 
== Lager ==
Sega Genesis controller. USB PID is 0x201E.
 
== LagerDfu ==
Sega Genesis controller MCU in DFU mode. USB PID is 0x201F.
 
== Tarragon2 ==
Licensed Pro Controller.
 
= VidPidDefinition =
This is "nn::hidtypes::VidPidDefinition".


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 7,784: Line 7,994:
|-
|-
| 0x0
| 0x0
| 0x1
| 0x2
| IsPowered
| Vid
|-
|-
| 0x1
| 0x2
| 0x1
| 0x2
| IsCharging
| PidRangeMax
|-
|-
| 0x4
| 0x2
| 0x2
| PidRangeMin
|-
| 0x6
| 0x6
| 0x1
| [[#DeviceTypeInternal|DeviceType]]
|-
| 0x7
| 0x1
| Reserved
| Reserved
|-
|}
| 0x8
 
| 0x6
= VidPidDefinitions =
| [[#BatteryLevel|BatteryLevel]]
This is "nn::hidtypes::detail::VidPidDefinitions". This is a list of [[#VidPidDefinition|VidPidDefinition]] objects maintained by the hid-sysmodule.
 
{| class="wikitable" border="1"
|-
! Vid || PidRangeMax || PidRangeMin || [[#DeviceTypeInternal|DeviceType]]
|-
| 0x57E || 0x2006 || 0x2006 || 2
|-
| 0x57E || 0x2007 || 0x2007 || 1
|-
| 0x57E || 0x2009 || 0x2009 || 3
|-
| 0x57E || 0x200F || 0x200F || 24
|-
| 0x57E || 0x200E || 0x200E || 23
|-
| 0x57E || 0x2008 || 0x2008 || 25
|-
| 0x57E || 0x2017 || 0x2017 || 11
|-
| 0x57E || 0x2018 || 0x2018 || 26
|-
| 0x57E || 0x2019 || 0x2019 || 22
|-
| 0x57E || 0x201A || 0x201A || 27
|-
| 0x57E || 0x201E || 0x201E || 28
|-
| 0x57E || 0x201F || 0x201F || 29
|-
| 0x57E || 0x337 || 0x337 || 13
|-
| 0x57E || 0x300E || 0x300E || [17.0.0+] 18
|-
| 0x57E || 0x300D || 0x300D || [17.0.0+] 14
|-
| 0xF0D || 0x92 || 0x92 || 15
|-
| 0xF0D || 0xAB || 0xAA || 15
|-
| 0xF0D || 0xC1 || 0xC1 || 15
|-
| 0xF0D || 0xFF || 0xF0 || 15
|-
| 0xF0D || 0x22F || 0x200 || 15
|-
| 0xE6F || 0x193 || 0x180 || 15
|-
| 0x20D6 || 0xA719 || 0xA710 || 15
|-
| 0x20D6 || 0xA729 || 0xA720 || 15
|-
| 0x33DD || 0xB || 0x1 || 15
|}
 
= NpadPowerInfo =
This is "nn::hid::system::NpadPowerInfo".
 
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0
| 0x1
| IsPowered
|-
| 0x1
| 0x1
| IsCharging
|-
| 0x2
| 0x6
| Reserved
|-
| 0x8
| 0x4
| [[#BatteryLevel|BatteryLevel]]
|}
|}


Line 8,255: Line 8,551:
|-
|-
| 0x0 || 0x8 || Buttons (only bit0 is used)
| 0x0 || 0x8 || Buttons (only bit0 is used)
|}
= DigitizerAutoPilotState =
This is "nn::hid::debug::DigitizerAutoPilotState".
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0 || 0x44 ||
|}
|}


Line 8,771: Line 9,079:
| 2 || Rail
| 2 || Rail
|-
|-
| 3 || USB
| 3 || Usb
|-
|-
| 4 || Embedded
| 4 || Embedded
Line 8,950: Line 9,258:
|-
|-
| 2
| 2
| HasLeftSixAxisSensor
| HasLeftJoySixAxisSensor
|-
|-
| 3
| 3
| HasRightSixAxisSensor
| HasRightJoySixAxisSensor
|-
|-
| 4
| 4
| HasExternalSixAxisSensor
| HasFullKeySixAxisSensor
|-
|-
| 5
| 5
Line 8,980: Line 9,288:
|-
|-
| 12
| 12
| HasPalmaIc
| IsPalma
|-
|-
| 13
| 13
Line 8,995: Line 9,303:
|-
|-
| 17
| 17
| HasLeftRightBattery
| HasLeftJoyRightJoyBattery
|-
|-
| 18
| 18
| HasStandardBattery
| HasFullKeyBattery
|-
|-
| 19
| 19
| HasBattery
| IsDisconnectControllerIfBatteryNone
|-
|-
| 20
| 20
| HasMainColor
| HasControllerColor
|-
|-
| 21
| 21
| HasSubColor
| HasGripColor
|-
|-
| 22
| 22
Line 9,028: Line 9,336:
|-
|-
| 28
| 28
| IsEmbeddedController
| IsButtonConfigEmbeddedSupported
|-
|-
| 29
| 29
| IsFullController
| IsButtonConfigFullSupported
|-
|-
| 30
| 30
| IsLeftController
| IsButtonConfigLeftSupported
|-
|-
| 31
| 31
| IsRightController
| IsButtonConfigRightSupported
|-
|-
| 32
| 32
Line 9,049: Line 9,357:
|-
|-
| 35
| 35
| NormalizeAnalogStickWithInnerCross
| IsNormalizeAnalogStickWithInnerCross
|}
|}


Line 9,088: Line 9,396:
|-
|-
| 0x2C || 0x4 || Reserved
| 0x2C || 0x4 || Reserved
|}
= DeviceDescriptionList =
This is "nn::hidtypes::detail::DeviceDescriptionList". This is a list of [[#DeviceDescriptorType|DeviceDescriptorType]] objects maintained by the hid-sysmodule.
{| class="wikitable" border="1"
|-
! [[#DeviceTypeInternal|DeviceType]] || [[#FeatureType|FeatureType]] || [[#DigitalButton|DigitalButton]] || [[#AssignmentStyle|AssignmentStyle]] || [[#Color|DeviceColor]]
|-
| 1 || 0x18BDBE44A || 0x18F0406AF || 0x24 || 0xFF828282, 0xFF0F0F0F, 0x00000000, 0x00000000
|-
| 2 || 0x14CDB8225 || 0x6F8F950 || 0x12 || 0xFF828282, 0xFF0F0F0F, 0x00000000, 0x00000000
|-
| 3 || 0x72BBDA073 || 0xFFCFFFF || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
|-
| 4 || 0x108000025 || 0x6F8F950 || 0x2 || 0xFF828282, 0xFF0F0F0F, 0x00000000, 0x00000000
|-
| 5 || 0x10800004A || 0x18F0406AF || 0x4 || 0xFF828282, 0xFF0F0F0F, 0x00000000, 0x00000000
|-
| 6 || 0x108800013 || 0xFFCFFFF || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
|-
| 7 || 0x108CA0000 || 0x2008FCC3 || 0x11 || 0xFF322891, 0xFFFFFFFF, 0x00000000, 0x00000000
|-
| 8 || 0x108CA0800 || 0x4F0C3 || 0x21 || 0xFF322891, 0xFFFFFFFF, 0x00000000, 0x00000000
|-
| 9 || 0x108CA0000 || 0x2008FCC3 || 0x11 || 0xFFD9D7D7, 0xFFFFFFFF, 0x00000000, 0x00000000
|-
| 10 || 0x108CA0000 || 0x4FCC3 || 0x21 || 0xFFD9D7D7, 0xFFFFFFFF, 0x00000000, 0x00000000
|-
| 11 || 0x700CC0000 || 0xFFCF || 0x0 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
|-
| 12 || 0x841011 || 0x10000010 || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
|-
| 13 || 0x83 || 0xFF0F6CF || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
|-
| 14 || 0x1 || 0xF8F950 || 0x10 || 0xFF828282, 0xFF0F0F0F, 0x00000000, 0x00000000
|-
| 15 || 0x3 || 0xFFCFFFF || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
|-
| 16 || 0x3 || 0xFFCFFFF || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
|-
| 17 || 0x1001A013 || 0xFFCFFFF || 0x8 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
|-
| 18 || 0x2 || 0xF0406AF || 0x20 || 0xFF828282, 0xFF0F0F0F, 0x00000000, 0x00000000
|-
| 19 || 0x1088DA073 || 0xFFCF3FF || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
|-
| 20 || 0x108CA0025 || 0x6F8F150 || 0x12 || 0xFF828282, 0xFF0F0F0F, 0x00000000, 0x00000000
|-
| 21 || 0x108CA604A || 0x18F0402AF || 0x24 || 0xFF828282, 0xFF0F0F0F, 0x00000000, 0x00000000
|-
| [12.0.0+] 22 || 0xF00CC8101 || 0x1E1FCF6C3 || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
|-
| [12.0.0+] 23 || 0x100000000 || 0x0 || 0x0 || 0x00000000, 0x00000000, 0x00000000, 0x00000000
|-
| [13.0.0+] 28 || 0x700CC0000 || 0xCF6CF || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
|-
| [14.0.0+] 30 || 0x108800003 || 0xFFCFFFF || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
|}
|}


Line 9,104: Line 9,470:
|-
|-
| 0x8 || 0x8 || [[#FeatureType|FeatureType]]
| 0x8 || 0x8 || [[#FeatureType|FeatureType]]
|}
= UnmaskFeatureDescriptorList =
This is "nn::hid::server::UnmaskFeatureDescriptorList". This is a list of [[#UnmaskFeatureDescriptorType|UnmaskFeatureDescriptorType]] objects maintained by the hid-sysmodule.
{| class="wikitable" border="1"
|-
! [[#DeviceTypeInternal|DeviceType]] || [[#InterfaceType|InterfaceType]] || [[#FeatureType|FeatureType]]
|-
| 3 || 3 || 0x2000
|-
| 2 || 2 || 0x200
|-
| 1 || 2 || 0x400
|-
| 19 || 3 || 0x2000
|-
| 2 || 3 || 0x200
|-
| 1 || 3 || 0x6400
|}
|}


Line 9,912: Line 10,298:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! System Version
! SystemVersion
! Firmware Version
! FirmwareVersion
|-
|-
| [1.0.0]
| [1.0.0+]
| 0348
| 0348
|-
|-
| [5.0.0-5.1.0]
| [5.0.0+]
| 0389
| 0389
|-
|-
| [6.0.0-6.2.0]
| [6.0.0+]
| 038B
| 038B
|-
|-
| [7.0.0-7.0.1]
| [7.0.0+]
| 03A6
| 03A6
|-
|-
| [8.0.0-8.1.1]
| [8.0.0+]
| 03B5
| 03B5
|-
|-
| [9.0.0-9.2.0]
| [9.0.0+]
| 0400
| 0400
|-
|-
| [10.0.0-10.2.0]
| [10.0.0+]
| 0406
| 0406
|-
|-
| [11.0.0-12.0.3]
| [11.0.0+]
| 0407
| 0407
|-
|-
| [12.1.0]
| [12.1.0+]
| 0410
| 0410
|-
|-
| [13.0.0-13.2.1]
| [13.0.0+]
| 0417
| 0417
|-
|-
Line 9,952: Line 10,338:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! System Version
! SystemVersion
! Firmware Version
! FirmwareVersion
|-
|-
| [1.0.0-14.1.2]
| [1.0.0+]
| 0348
| 0348
|-
|-
Line 9,965: Line 10,351:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! System Version
! SystemVersion
! Firmware Version
! FirmwareVersion
|-
|-
| [1.0.0]
| [1.0.0+]
| 030B
| 030B
|-
|-
| [5.0.0-5.1.0]
| [4.0.0+]
| 0412
|-
| [5.0.0+]
| 0518
| 0518
|-
|-
| [6.0.0-7.0.1]
| [6.0.0+]
| 061A
| 061A
|-
|-
Line 9,984: Line 10,373:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! System Version
! SystemVersion
! Firmware Version
! FirmwareVersion
|-
|-
| [1.0.0+]
| [1.0.0+]
Line 9,994: Line 10,383:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! System Version
! SystemVersion
! Firmware Version
! FirmwareVersion
|-
|-
| -
| -
Line 10,007: Line 10,396:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! System Version
! SystemVersion
! Firmware Version
! FirmwareVersion
|-
|-
| -
| -
Line 10,020: Line 10,409:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! System Version
! SystemVersion
! Firmware Version
! FirmwareVersion
|-
|-
| -
| -
| 000D
| 000D
|-
|-
| [8.1.1-9.2.0]
| [8.1.1+]
| 0200
| 0200
|-
|-
| [10.0.0-10.2.0]
| [10.0.0+]
| 0301
| 0301
|-
|-