HID services: Difference between revisions

No edit summary
 
(13 intermediate revisions by 2 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 149: Line 151:
|-
|-
| 136 || [8.0.0+] [[#ClearNpadCaptureButtonAssignment]]
| 136 || [8.0.0+] [[#ClearNpadCaptureButtonAssignment]]
|-
| 137 || [20.0.0+] SetNpadGcAnalogStick8bitRawValue
|-
|-
| 200 || [[#GetVibrationDeviceInfo]]
| 200 || [[#GetVibrationDeviceInfo]]
Line 292: 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 982: 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,150: 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,218: 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,251: 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,315: 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,541: 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,577: 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,588: 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,644: 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,682: Line 1,751:
|-
|-
| 525 || [11.0.0+] IsJoyConAttachedOnAllRail
| 525 || [11.0.0+] IsJoyConAttachedOnAllRail
|-
| 526 || [19.0.0+] IsInvertedControllerConnectedOnRail
|-
|-
| 540 || AcquirePlayReportControllerUsageUpdateEvent
| 540 || AcquirePlayReportControllerUsageUpdateEvent
Line 1,689: 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,702: Line 1,773:
|-
|-
| 549 || [6.0.0+] GetConnectableRegisteredDevices
| 549 || [6.0.0+] GetConnectableRegisteredDevices
|-
| 551 || [20.0.0+] GetRegisteredDevicesForControllerSupport
|-
|-
| 700 || ActivateUniquePad
| 700 || ActivateUniquePad
Line 1,708: Line 1,781:
|-
|-
| 703 || [[#GetUniquePadIds]]
| 703 || [[#GetUniquePadIds]]
|-
| 711 || [20.0.0+] AcquireUniquePadConnectionOnHandheldForNsEventHandle
|-
| 712 || [20.0.0+] GetUniquePadColor12
|-
|-
| 751 || AcquireJoyDetachOnBluetoothOffEventHandle
| 751 || AcquireJoyDetachOnBluetoothOffEventHandle
Line 1,798: 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,838: Line 1,917:
|-
|-
| 1157 || [10.0.0+] [[#CancelConnectionTrigger]]
| 1157 || [10.0.0+] [[#CancelConnectionTrigger]]
|-
| 1158 || [20.1.0+]
|-
| 1159 || [20.1.0+]
|-
|-
| 1200 || [10.0.0-17.0.1] [[#IsButtonConfigSupported]]
| 1200 || [10.0.0-17.0.1] [[#IsButtonConfigSupported]]
Line 1,962: Line 2,045:
|-
|-
| 1321 || [17.0.0+] PutTouchScreenToSleep
| 1321 || [17.0.0+] PutTouchScreenToSleep
|-
| 1322 || [20.0.0+] AcquireTouchScreenAsyncWakeCompletedEvent
|-
| 1420 || [19.0.0+] GetAppletResourceProperty
|-
|-
| 12010 || [11.0.0-17.0.1] [[#SetButtonConfigLeft]]
| 12010 || [11.0.0-17.0.1] [[#SetButtonConfigLeft]]
Line 3,068: 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,957: 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 7,840: Line 7,931:


== JoyConRight ==
== JoyConRight ==
[[#Joy-Con|Joy-Con]] right controller. USB PID is 0x2007.
[[Joy-Con|Joy-Con]] right controller.


== JoyConLeft ==
== JoyConLeft ==
[[#Joy-Con|Joy-Con]] left controller. USB PID is 0x2006.
[[Joy-Con|Joy-Con]] left controller.


== SwitchProController ==
== SwitchProController ==
[[#Pro_Controller|Pro Controller]]. USB PID is 0x2009.
[[Pro_Controller|Pro Controller]].


== Tarragon ==
== Tarragon ==
Line 7,864: Line 7,955:


== Lucia ==
== Lucia ==
SNES controller. USB PID is 0x2017.
SNES controller.


== Palma ==
== Palma ==
Line 7,873: Line 7,964:


== Lagon ==
== Lagon ==
N64 controller. USB PID is 0x2019.
N64 controller.


== ExternalGrip ==
== ExternalGrip ==
Joy-Con Charging Grip. USB PID is 0x200E.
Joy-Con Charging Grip.


== SwitchProControllerDfu ==
== SwitchProControllerDfu ==
"Kotetsu" (Pro Controller MCU) in DFU mode. USB PID is 0x200F.
"Kotetsu" (Pro Controller MCU) in DFU mode.


== ExternalGripDfu ==
== ExternalGripDfu ==
"Kuina" (Joy-Con Charging Grip MCU) in DFU mode. USB PID is 0x2008.
"Kuina" (Joy-Con Charging Grip MCU) in DFU mode.


== LuciaDfu ==
== LuciaDfu ==
SNES controller MCU in DFU mode. USB PID is 0x2018.
SNES controller MCU in DFU mode.


== LagonDfu ==
== LagonDfu ==
N64 controller MCU in DFU mode. USB PID is 0x201A.
N64 controller MCU in DFU mode.


== Lager ==
== Lager ==
Sega Genesis controller. USB PID is 0x201E.
Sega Genesis controller.


== LagerDfu ==
== LagerDfu ==
Sega Genesis controller MCU in DFU mode. USB PID is 0x201F.
Sega Genesis controller MCU in DFU mode.


== Tarragon2 ==
== Tarragon2 ==
Line 7,934: 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 || Nintendo [[HID_services#JoyConLeft|JoyConLeft]]
|-
| 0x57E || 0x2007 || 0x2007 || 1 || Nintendo [[HID_services#JoyConRight|JoyConRight]]
|-
| 0x57E || 0x2009 || 0x2009 || 3 || Nintendo [[HID_services#SwitchProController|SwitchProController]]
|-
| 0x57E || 0x200F || 0x200F || 24 || Nintendo [[HID_services#SwitchProControllerDfu|SwitchProControllerDfu]]
|-
| 0x57E || 0x200E || 0x200E || 23 || Nintendo [[HID_services#ExternalGrip|ExternalGrip]]
|-
|-
| 0x57E || 0x2006 || 0x2006 || 2
| 0x57E || 0x2008 || 0x2008 || 25 || Nintendo [[HID_services#ExternalGripDfu|ExternalGripDfu]]
|-
|-
| 0x57E || 0x2007 || 0x2007 || 1
| 0x57E || 0x2017 || 0x2017 || 11 || Nintendo [[HID_services#Lucia|Lucia]]
|-
|-
| 0x57E || 0x2009 || 0x2009 || 3
| 0x57E || 0x2018 || 0x2018 || 26 || Nintendo [[HID_services#LuciaDfu|LuciaDfu]]
|-
|-
| 0x57E || 0x200F || 0x200F || 24
| 0x57E || 0x2019 || 0x2019 || 22 || Nintendo [[HID_services#Lagon|Lagon]]
|-
|-
| 0x57E || 0x200E || 0x200E || 23
| 0x57E || 0x201A || 0x201A || 27 || Nintendo [[HID_services#LagonDfu|LagonDfu]]
|-
|-
| 0x57E || 0x2008 || 0x2008 || 25
| 0x57E || 0x201E || 0x201E || 28 || Nintendo [[HID_services#Lager|Lager]]
|-
|-
| 0x57E || 0x2017 || 0x2017 || 11
| 0x57E || 0x201F || 0x201F || 29 || Nintendo [[HID_services#LagerDfu|LagerDfu]]
|-
|-
| 0x57E || 0x2018 || 0x2018 || 26
| 0x57E || 0x337 || 0x337 || 13 || Nintendo [[HID_services#GcOnGggg|GcOnGggg]]
|-
|-
| 0x57E || 0x2019 || 0x2019 || 22
| 0x57E || 0x300E || 0x300E || [17.0.0+] 18 || Nintendo FiftyR
|-
|-
| 0x57E || 0x201A || 0x201A || 27
| 0x57E || 0x300D || 0x300D || [17.0.0+] 14 || Nintendo FiftyL
|-
|-
| 0x57E || 0x201E || 0x201E || 28
| 0xF0D || 0x92 || 0x92 || 15 || HORI Pokken Tournament DX Pro Pad
|-
|-
| 0x57E || 0x201F || 0x201F || 29
| 0xF0D || 0xAB || 0xAA || 15 || HORI
|-
|-
| 0x57E || 0x337 || 0x337 || 13
| 0xF0D || 0xC1 || 0xC1 || 15 || HORIPAD for Nintendo Switch
|-
|-
| 0x57E || 0x300E || 0x300E || [17.0.0+] 18
| 0xF0D || 0xFF || 0xF0 || 15 || HORI
|-
|-
| 0x57E || 0x300D || 0x300D || [17.0.0+] 14
| 0xF0D || 0x22F || 0x200 || [1.0.0-20.0.1] 15 || HORI
|-
|-
| 0xF0D || 0x92 || 0x92 || 15
| 0xF0D || 0x201 || 0x200 || [20.1.0+] 15 || HORI Split Pad Pro
|-
|-
| 0xF0D || 0xAB || 0xAA || 15
| 0xF0D || 0x202 || 0x202 || [20.1.0+] 15 || HORI
|-
|-
| 0xF0D || 0xC1 || 0xC1 || 15
| 0xF0D || 0x21F || 0x203 || [20.1.0+] 15 || HORI
|-
|-
| 0xF0D || 0xFF || 0xF0 || 15
| 0xF0D || 0x25F || 0x220 || [20.1.0+] 15 || HORI
|-
|-
| 0xF0D || 0x22F || 0x200 || 15
| 0xF0D || 0x27F || 0x260 || [20.1.0+] 15 || HORI
|-
|-
| 0xE6F || 0x193 || 0x180 || 15
| 0xE6F || 0x193 || 0x180 || 15 || PDP
|-
|-
| 0x20D6 || 0xA719 || 0xA710 || 15
| 0x20D6 || 0xA719 || 0xA710 || [1.0.0-20.0.1] 15 || PowerA
|-
|-
| 0x20D6 || 0xA729 || 0xA720 || 15
| 0x20D6 || 0xA729 || 0xA720 || [1.0.0-20.0.1] 15 || PowerA
|-
|-
| 0x33DD || 0xB || 0x1 || 15
| 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 8,466: 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 ||
|}
|}