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 290: Line 296:
| 1003 || [9.0.0+] [[#IsFirmwareUpdateNeededForNotification]]
| 1003 || [9.0.0+] [[#IsFirmwareUpdateNeededForNotification]]
|-
|-
| 1004 || [17.0.0+] SetTouchScreenResolution
| 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 543: 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 979: 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,035: Line 1,044:
|-
|-
| 17 || [13.0.0+] IsTouchScreenManaged
| 17 || [13.0.0+] IsTouchScreenManaged
|-
| 18 || [18.0.0+] SetTouchScreenAutoPilotStateWithAruid
|-
|-
| 20 || [[#DeactivateMouse]]
| 20 || [[#DeactivateMouse]]
Line 1,145: Line 1,156:
|-
|-
| 211 || [6.0.0+] StartFirmwareUpdateIndividual
| 211 || [6.0.0+] StartFirmwareUpdateIndividual
|-
| 212 || [19.0.0+] GetDetailFirmwareVersion
|-
| 213 || [20.0.0+] GetFirmwareVersionStringForDevMenu
|-
| 214 || [20.1.0+]
|-
|-
| 215 || [6.0.0+] SetUsbFirmwareForceUpdateEnabled
| 215 || [6.0.0+] SetUsbFirmwareForceUpdateEnabled
Line 1,213: Line 1,230:
|-
|-
| 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,246: Line 1,265:
| 350 || [5.0.0+] [[#AddRegisteredDevice]]
| 350 || [5.0.0+] [[#AddRegisteredDevice]]
|-
|-
| 351 || [17.0.0+] GetRegisteredDevicesCountDebug
| 351 || [17.0.0-18.1.0] GetRegisteredDevicesCountDebug
|-
|-
| 352 || [17.0.0+] DeleteRegisteredDevicesDebug
| 352 || [17.0.0-18.1.0] DeleteRegisteredDevicesDebug
|-
|-
| 400 || [6.0.0+] DisableExternalMcuOnNxDevice
| 400 || [6.0.0+] DisableExternalMcuOnNxDevice
Line 1,271: Line 1,290:
|-
|-
| 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,278: Line 1,329:
| 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,376: Line 1,427:


[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,502: Line 1,555:


[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,538: Line 1,600:
| 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,549: Line 1,635:
|-
|-
| 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,605: Line 1,707:
|-
|-
| 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,643: Line 1,751:
|-
|-
| 525 || [11.0.0+] IsJoyConAttachedOnAllRail
| 525 || [11.0.0+] IsJoyConAttachedOnAllRail
|-
| 526 || [19.0.0+] IsInvertedControllerConnectedOnRail
|-
|-
| 540 || AcquirePlayReportControllerUsageUpdateEvent
| 540 || AcquirePlayReportControllerUsageUpdateEvent
Line 1,650: Line 1,760:
| 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,663: Line 1,773:
|-
|-
| 549 || [6.0.0+] GetConnectableRegisteredDevices
| 549 || [6.0.0+] GetConnectableRegisteredDevices
|-
| 551 || [20.0.0+] GetRegisteredDevicesForControllerSupport
|-
|-
| 700 || ActivateUniquePad
| 700 || ActivateUniquePad
Line 1,669: Line 1,781:
|-
|-
| 703 || [[#GetUniquePadIds]]
| 703 || [[#GetUniquePadIds]]
|-
| 711 || [20.0.0+] AcquireUniquePadConnectionOnHandheldForNsEventHandle
|-
| 712 || [20.0.0+] GetUniquePadColor12
|-
|-
| 751 || AcquireJoyDetachOnBluetoothOffEventHandle
| 751 || AcquireJoyDetachOnBluetoothOffEventHandle
Line 1,697: Line 1,813:
|-
|-
| 812 || [8.0.0+] GetConsoleUniqueSixAxisSensorHandle
| 812 || [8.0.0+] GetConsoleUniqueSixAxisSensorHandle
|-
| 813 || [18.0.0+] GetDeviceType
|-
|-
| 821 || StartAnalogStickManualCalibration
| 821 || StartAnalogStickManualCalibration
Line 1,757: Line 1,875:
|-
|-
| 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,798: Line 1,918:
| 1157 || [10.0.0+] [[#CancelConnectionTrigger]]
| 1157 || [10.0.0+] [[#CancelConnectionTrigger]]
|-
|-
| 1200 || [10.0.0+] [[#IsButtonConfigSupported]]
| 1158 || [20.1.0+]
|-
|-
| 1201 || [11.0.0+] [[#IsButtonConfigEmbeddedSupported]] ([10.0.0-10.2.0] [[#DeleteButtonConfig]])
| 1159 || [20.1.0+]
|-
|-
| 1202 || [11.0.0+] [[#DeleteButtonConfig]] ([10.0.0-10.2.0] [[#SetButtonConfigEnabled]])
| 1200 || [10.0.0-17.0.1] [[#IsButtonConfigSupported]]
|-
|-
| 1203 || [11.0.0+] [[#DeleteButtonConfigEmbedded]] ([10.0.0-10.2.0] [[#IsButtonConfigEnabled]])
| 1201 || [11.0.0-17.0.1] [[#IsButtonConfigEmbeddedSupported]] ([10.0.0-10.2.0] [[#DeleteButtonConfig]])
|-
|-
| 1204 || [11.0.0+] [[#SetButtonConfigEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigEmbedded]])
| 1202 || [11.0.0-17.0.1] [[#DeleteButtonConfig]] ([10.0.0-10.2.0] [[#SetButtonConfigEnabled]])
|-
|-
| 1205 || [11.0.0+] [[#SetButtonConfigEmbeddedEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigFull]])
| 1203 || [11.0.0-17.0.1] [[#DeleteButtonConfigEmbedded]] ([10.0.0-10.2.0] [[#IsButtonConfigEnabled]])
|-
|-
| 1206 || [11.0.0+] [[#IsButtonConfigEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigLeft]])
| 1204 || [11.0.0-17.0.1] [[#SetButtonConfigEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigEmbedded]])
|-
|-
| 1207 || [11.0.0+] [[#IsButtonConfigEmbeddedEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigRight]])
| 1205 || [11.0.0-17.0.1] [[#SetButtonConfigEmbeddedEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigFull]])
|-
|-
| 1208 || [11.0.0+] [[#SetButtonConfigEmbedded]] ([10.0.0-10.2.0] [[#GetButtonConfigEmbedded]])
| 1206 || [11.0.0-17.0.1] [[#IsButtonConfigEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigLeft]])
|-
|-
| 1209 || [11.0.0+] [[#SetButtonConfigFull]] ([10.0.0-10.2.0] [[#GetButtonConfigFull]])
| 1207 || [11.0.0-17.0.1] [[#IsButtonConfigEmbeddedEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigRight]])
|-
| 1208 || [11.0.0-17.0.1] [[#SetButtonConfigEmbedded]] ([10.0.0-10.2.0] [[#GetButtonConfigEmbedded]])
|-
| 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,913: Line 2,037:
|-
|-
| 1291 || [11.0.0+] [[#SetButtonConfigStorageRight]]
| 1291 || [11.0.0+] [[#SetButtonConfigStorageRight]]
|-
| 1308 || [18.0.0+] SetButtonConfigVisible
|-
| 1309 || [18.0.0+] IsButtonConfigVisible
|-
|-
| 1320 || [17.0.0+] WakeTouchScreenUp
| 1320 || [17.0.0+] WakeTouchScreenUp
Line 1,918: Line 2,046:
| 1321 || [17.0.0+] PutTouchScreenToSleep
| 1321 || [17.0.0+] PutTouchScreenToSleep
|-
|-
| 12010 || [11.0.0+] [[#SetButtonConfigLeft]]
| 1322 || [20.0.0+] AcquireTouchScreenAsyncWakeCompletedEvent
|-
| 1420 || [19.0.0+] GetAppletResourceProperty
|-
| 12010 || [11.0.0-17.0.1] [[#SetButtonConfigLeft]]
|}
|}


Line 3,023: Line 3,155:
= 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,912: Line 4,046:
===== 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,392: Line 4,528:
|-
|-
| 0x160
| 0x160
| 0x40
| 0x60
| [[#SixAxisSensorUserCalibrationStateLifo]]
| [[#SixAxisSensorUserCalibrationStateLifo]]
|-
|-
| 0x1A0
| 0x1C0
| 0x40
| 0x20
| UniquePadConfigMutex
| UniquePadConfigMutex
|}
|}
Line 4,800: Line 4,936:
|-
|-
| 0x4208
| 0x4208
| 0x40
| 0x20
| [1.0.0-8.1.0] Mutex
| [1.0.0-8.1.0] Mutex
|-
|-
Line 7,299: Line 7,435:
| "FK" || Pro Controller
| "FK" || Pro Controller
|-
|-
| "MY" || [[#DeviceTypeInternal|DeviceType]] 4 and [[#DeviceTypeInternal|DeviceType]] 5
| "MY" || MiyabiLeft and MiyabiRight
|-
|-
| "LC" || "Tarragon" ([[#DeviceTypeInternal|DeviceType]] 6) and [[#DeviceTypeInternal|DeviceType]] 30
| "LC" || Tarragon and Tarragon2
|-
|-
| "HL" || Famicom left controller
| "HL" || Famicom left controller
Line 7,686: Line 7,822:
= 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,722: Line 7,860:
|}
|}


[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 || || "Tarragon" controller
| 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]]
|}
|}
== JoyConRight ==
[[Joy-Con|Joy-Con]] right controller.
== JoyConLeft ==
[[Joy-Con|Joy-Con]] left controller.
== SwitchProController ==
[[Pro_Controller|Pro Controller]].
== 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.
== Palma ==
Poké Ball Plus controller.
== GcOnGggg ==
GameCube controller.
== Lagon ==
N64 controller.
== ExternalGrip ==
Joy-Con Charging Grip.
== SwitchProControllerDfu ==
"Kotetsu" (Pro Controller MCU) in DFU mode.
== ExternalGripDfu ==
"Kuina" (Joy-Con Charging Grip MCU) in DFU mode.
== LuciaDfu ==
SNES controller MCU in DFU mode.
== LagonDfu ==
N64 controller MCU in DFU mode.
== Lager ==
Sega Genesis controller.
== LagerDfu ==
Sega Genesis controller MCU in DFU mode.
== Tarragon2 ==
Licensed Pro Controller.


= VidPidDefinition =
= VidPidDefinition =
Line 7,829: Line 8,025:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Vid || PidRangeMax || PidRangeMin || [[#DeviceTypeInternal|DeviceType]]
! Vid || PidRangeMax || PidRangeMin || [[#DeviceTypeInternal|DeviceType]] || Description
|-
|-
| 0x57E || 0x2006 || 0x2006 || 2
| 0x57E || 0x2006 || 0x2006 || 2 || Nintendo [[HID_services#JoyConLeft|JoyConLeft]]
|-
|-
| 0x57E || 0x2007 || 0x2007 || 1  
| 0x57E || 0x2007 || 0x2007 || 1 || Nintendo [[HID_services#JoyConRight|JoyConRight]]
|-
|-
| 0x57E || 0x2009 || 0x2009 || 3
| 0x57E || 0x2009 || 0x2009 || 3 || Nintendo [[HID_services#SwitchProController|SwitchProController]]
|-
|-
| 0x57E || 0x200F || 0x200F || 24
| 0x57E || 0x200F || 0x200F || 24 || Nintendo [[HID_services#SwitchProControllerDfu|SwitchProControllerDfu]]
|-
|-
| 0x57E || 0x200E || 0x200E || 23  
| 0x57E || 0x200E || 0x200E || 23 || Nintendo [[HID_services#ExternalGrip|ExternalGrip]]
|-
|-
| 0x57E || 0x2008 || 0x2008 || 25  
| 0x57E || 0x2008 || 0x2008 || 25 || Nintendo [[HID_services#ExternalGripDfu|ExternalGripDfu]]
|-
|-
| 0x57E || 0x2017 || 0x2017 || 11
| 0x57E || 0x2017 || 0x2017 || 11 || Nintendo [[HID_services#Lucia|Lucia]]
|-
|-
| 0x57E || 0x2018 || 0x2018 || 26
| 0x57E || 0x2018 || 0x2018 || 26 || Nintendo [[HID_services#LuciaDfu|LuciaDfu]]
|-
|-
| 0x57E || 0x2019 || 0x2019 || 22
| 0x57E || 0x2019 || 0x2019 || 22 || Nintendo [[HID_services#Lagon|Lagon]]
|-
|-
| 0x57E || 0x201A || 0x201A || 27
| 0x57E || 0x201A || 0x201A || 27 || Nintendo [[HID_services#LagonDfu|LagonDfu]]
|-
|-
| 0x57E || 0x201E || 0x201E || 28
| 0x57E || 0x201E || 0x201E || 28 || Nintendo [[HID_services#Lager|Lager]]
|-
|-
| 0x57E || 0x201F || 0x201F || 29
| 0x57E || 0x201F || 0x201F || 29 || Nintendo [[HID_services#LagerDfu|LagerDfu]]
|-
|-
| 0x57E || 0x337 || 0x337 || 13
| 0x57E || 0x337 || 0x337 || 13 || Nintendo [[HID_services#GcOnGggg|GcOnGggg]]
|-
|-
| 0xF0D || 0x92 || 0x92 || 15
| 0x57E || 0x300E || 0x300E || [17.0.0+] 18 || Nintendo FiftyR
|-
|-
| 0xF0D || 0xAB || 0xAA || 15
| 0x57E || 0x300D || 0x300D || [17.0.0+] 14 || Nintendo FiftyL
|-
|-
| 0xF0D || 0xC1 || 0xC1 || 15
| 0xF0D || 0x92 || 0x92 || 15 || HORI Pokken Tournament DX Pro Pad
|-
|-
| 0xF0D || 0xFF || 0xF0 || 15
| 0xF0D || 0xAB || 0xAA || 15 || HORI
|-
|-
| 0xF0D || 0x22F || 0x200 || 15
| 0xF0D || 0xC1 || 0xC1 || 15 || HORIPAD for Nintendo Switch
|-
|-
| 0xE6F || 0x193 || 0x180 || 15
| 0xF0D || 0xFF || 0xF0 || 15 || HORI
|-
|-
| 0x20D6 || 0xA719 || 0xA710 || 15
| 0xF0D || 0x22F || 0x200 || [1.0.0-20.0.1] 15 || HORI
|-
|-
| 0x20D6 || 0xA729 || 0xA720 || 15
| 0xF0D || 0x201 || 0x200 || [20.1.0+] 15 || HORI Split Pad Pro
|-
|-
| 0x33DD || 0xB || 0x1 || 15
| 0xF0D || 0x202 || 0x202 || [20.1.0+] 15 || HORI
|-
| 0xF0D || 0x21F || 0x203 || [20.1.0+] 15 || HORI
|-
| 0xF0D || 0x25F || 0x220 || [20.1.0+] 15 || HORI
|-
| 0xF0D || 0x27F || 0x260 || [20.1.0+] 15 || HORI
|-
| 0xE6F || 0x193 || 0x180 || 15 || PDP
|-
| 0x20D6 || 0xA719 || 0xA710 || [1.0.0-20.0.1] 15 || PowerA
|-
| 0x20D6 || 0xA729 || 0xA720 || [1.0.0-20.0.1] 15 || PowerA
|-
| 0x20D6 || 0xA716 || 0xA710 || [20.1.0+] 15 || PowerA
|-
| 0x20D6 || 0xA717 || 0xA717 || [20.1.0+] 15 || PowerA
|-
| 0x20D6 || 0xA719 || 0xA718 || [20.1.0+] 15 || PowerA
|-
| 0x20D6 || 0xA720 || 0xA720 || [20.1.0+] 15 || PowerA
|-
| 0x20D6 || 0xA721 || 0xA721 || [20.1.0+] 15 || PowerA
|-
| 0x20D6 || 0xA726 || 0xA722 || [20.1.0+] 15 || PowerA
|-
| 0x20D6 || 0xA731 || 0xA727 || [20.1.0+] 15 || PowerA
|-
| 0x33DD || 0xB || 0x1 || 15 || ZUIKI
|}
|}


Line 7,898: Line 8,122:
|-
|-
| 0x8
| 0x8
| 0x6
| 0x4
| [[#BatteryLevel|BatteryLevel]]
| [[#BatteryLevel|BatteryLevel]]
|}
|}
Line 8,357: Line 8,581:
|-
|-
| 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 ||
|}
|}