HID services
See here for the HID shared-memory.
hid
This is "nn::hid::IHidServer".
Cmd | Name |
---|---|
0 | #CreateAppletResource |
1 | ActivateDebugPad |
11 | ActivateTouchScreen |
21 | ActivateMouse |
31 | ActivateKeyboard |
40 | AcquireXpadIdEventHandle |
41 | ReleaseXpadIdEventHandle |
51 | ActivateXpad |
55 | GetXpadIds |
56 | ActivateJoyXpad |
58 | GetJoyXpadLifoHandle |
59 | GetJoyXpadIds |
60 | ActivateSixAxisSensor |
61 | DeactivateSixAxisSensor |
62 | GetSixAxisSensorLifoHandle |
63 | ActivateJoySixAxisSensor |
64 | DeactivateJoySixAxisSensor |
65 | GetJoySixAxisSensorLifoHandle |
66 | StartSixAxisSensor |
67 | StopSixAxisSensor |
68 | IsSixAxisSensorFusionEnabled |
69 | EnableSixAxisSensorFusion |
70 | SetSixAxisSensorFusionParameters |
71 | GetSixAxisSensorFusionParameters |
72 | ResetSixAxisSensorFusionParameters |
73 | SetAccelerometerParameters |
74 | GetAccelerometerParameters |
75 | ResetAccelerometerParameters |
76 | SetAccelerometerPlayMode |
77 | GetAccelerometerPlayMode |
78 | ResetAccelerometerPlayMode |
79 | SetGyroscopeZeroDriftMode |
80 | GetGyroscopeZeroDriftMode |
81 | ResetGyroscopeZeroDriftMode |
82 | IsSixAxisSensorAtRest |
91 | ActivateGesture |
100 | SetSupportedNpadStyleSet |
101 | GetSupportedNpadStyleSet |
102 | SetSupportedNpadIdType |
103 | ActivateNpad |
104 | DeactivateNpad |
106 | AcquireNpadStyleSetUpdateEventHandle |
107 | DisconnectNpad |
108 | GetPlayerLedPattern |
120 | SetNpadJoyHoldType |
121 | GetNpadJoyHoldType |
122 | SetNpadJoyAssignmentModeSingleByDefault |
123 | SetNpadJoyAssignmentModeSingle |
124 | #SetNpadJoyAssignmentModeDual |
125 | MergeSingleJoyAsDualJoy |
126 | StartLrAssignmentMode |
127 | StopLrAssignmentMode |
128 | SetNpadHandheldActivationMode |
129 | #GetNpadHandheldActivationMode |
130 | SwapNpadAssignment |
131 | IsUnintendedHomeButtonInputProtectionEnabled |
132 | EnableUnintendedHomeButtonInputProtection |
200 | GetVibrationDeviceInfo |
201 | #SendVibrationValue |
202 | #GetActualVibrationValue |
203 | CreateActiveVibrationDeviceList |
204 | PermitVibration |
205 | IsVibrationPermitted |
206 | SendVibrationValues |
300 | ActivateConsoleSixAxisSensor |
301 | StartConsoleSixAxisSensor |
302 | StopConsoleSixAxisSensor |
400 | IsUsbFullKeyControllerEnabled |
401 | EnableUsbFullKeyController |
402 | IsUsbFullKeyControllerConnected |
1000 | SetNpadCommunicationMode |
1001 | GetNpadCommunicationMode |
CreateAppletResource
Takes a PID and an u64 AppletResourceUserId. Returns an #IAppletResource.
SetNpadJoyAssignmentModeDual
Takes a PID-descriptor, an u32, and an AppletResourceUserId. No output.
GetNpadHandheldActivationMode
Takes a PID and an u64 AppletResourceUserId. Returns an output u64. Official user-processes panic if the output u64 is not 0-2.
SendVibrationValue
Takes a PID-descriptor, an u32 VibrationDeviceHandle, 0x10-byte VibrationValue immediately after that, and an u64 AppletResourceUserId.
GetActualVibrationValue
Takes a PID-descriptor, an u32 VibrationDeviceHandle, and an u64 AppletResourceUserId. Returns the 0x10-byte VibrationValue.
IAppletResource
Cmd | Name |
---|---|
0 | #GetSharedMemoryHandle |
No input. Returned a sharedmem handle.
hid:dbg
This is "nn::hid::IHidDebugServer".
Cmd | Name |
---|---|
0 | DeactivateDebugPad |
1 | SetDebugPadAutoPilotState |
2 | UnsetDebugPadAutoPilotState |
10 | DeactivateTouchScreen |
11 | SetTouchScreenAutoPilotState |
12 | UnsetTouchScreenAutoPilotState |
20 | DeactivateMouse |
21 | SetMouseAutoPilotState |
22 | UnsetMouseAutoPilotState |
30 | DeactivateKeyboard |
31 | SetKeyboardAutoPilotState |
32 | UnsetKeyboardAutoPilotState |
50 | DeactivateXpad |
51 | SetXpadAutoPilotState |
52 | UnsetXpadAutoPilotState |
60 | DeactivateJoyXpad |
91 | DeactivateGesture |
110 | DeactivateHomeButton |
111 | SetHomeButtonAutoPilotState |
112 | UnsetHomeButtonAutoPilotState |
120 | DeactivateSleepButton |
121 | SetSleepButtonAutoPilotState |
122 | UnsetSleepButtonAutoPilotState |
123 | DeactivateInputDetector |
130 | DeactivateCaptureButton |
131 | SetCaptureButtonAutoPilotState |
132 | UnsetCaptureButtonAutoPilotState |
133 | SetShiftAccelerometerCalibrationValue |
134 | GetShiftAccelerometerCalibrationValue |
135 | SetShiftGyroscopeCalibrationValue |
136 | GetShiftGyroscopeCalibrationValue |
140 | DeactivateConsoleSixAxisSensor |
201 | ActivateFirmwareUpdate |
202 | DeactivateFirmwareUpdate |
203 | StartFirmwareUpdate |
204 | GetFirmwareUpdateStage |
205 | GetFirmwareVersion |
206 | GetDestinationFirmwareVersion |
207 | DiscardFirmwareInfoCacheForRevert |
208 | StartFirmwareUpdateForRevert |
209 | GetAvailableFirmwareVersionForRevert |
211 | UpdateControllerColor |
hid:sys
This is "nn::hid::IHidSystemServer".
Cmd | Name |
---|---|
31 | SendKeyboardLockKeyEvent |
101 | AcquireHomeButtonEventHandle |
111 | ActivateHomeButton |
121 | AcquireSleepButtonEventHandle |
131 | ActivateSleepButton |
141 | AcquireCaptureButtonEventHandle |
151 | ActivateCaptureButton |
210 | AcquireNfcDeviceUpdateEventHandle |
211 | GetNpadsWithNfc |
212 | AcquireNfcActivateEventHandle |
213 | ActivateNfc |
230 | AcquireIrSensorEventHandle |
231 | ActivateIrSensor |
301 | ActivateNpadSystem |
303 | ApplyNpadSystemCommonPolicy |
304 | EnableAssigningSingleOnSlSrPress |
305 | DisableAssigningSingleOnSlSrPress |
306 | GetLastActiveNpad |
307 | GetNpadSystemExtStyle |
311 | SetNpadPlayerLedBlinkingDevice |
321 | GetUniquePadsFromNpad |
322 | GetIrSensorState |
323 | GetXcdHandleForNpadWithIrSensor |
500 | SetAppletResourceUserId |
501 | RegisterAppletResourceUserId |
502 | UnregisterAppletResourceUserId |
503 | EnableAppletToGetInput |
504 | SetAruidValidForVibration |
505 | EnableAppletToGetSixAxisSensor |
510 | #SetVibrationMasterVolume |
511 | GetVibrationMasterVolume |
512 | BeginPermitVibrationSession |
513 | EndPermitVibrationSession |
520 | EnableHandheldHids |
521 | DisableHandheldHids |
540 | AcquirePlayReportControllerUsageUpdateEvent |
541 | GetPlayReportControllerUsages |
542 | AcquirePlayReportRegisteredDeviceUpdateEvent |
543 | GetRegisteredDevices |
544 | AcquireConnectionTriggerTimeoutEvent |
545 | SendConnectionTrigger |
546 | AcquireDeviceRegisteredEventForControllerSupport |
547 | GetAllowedBluetoothLinksCount |
700 | ActivateUniquePad |
702 | AcquireUniquePadConnectionEventHandle |
703 | GetUniquePadIds |
751 | AcquireJoyDetachOnBluetoothOffEventHandle |
800 | ListSixAxisSensorHandles |
801 | IsSixAxisSensorUserCalibrationSupported |
802 | ResetSixAxisSensorCalibrationValues |
803 | StartSixAxisSensorUserCalibration |
804 | CancelSixAxisSensorUserCalibration |
805 | GetUniquePadBluetoothAddress |
806 | DisconnectUniquePad |
821 | StartAnalogStickManualCalibration |
822 | RetryCurrentAnalogStickManualCalibrationStage |
823 | CancelAnalogStickManualCalibration |
824 | ResetAnalogStickManualCalibration |
850 | IsUsbFullKeyControllerEnabled |
851 | EnableUsbFullKeyController |
852 | IsUsbConnected |
900 | ActivateInputDetector |
901 | NotifyInputDetector |
1000 | InitializeFirmwareUpdate |
1001 | GetFirmwareVersion |
1002 | GetAvailableFirmwareVersion |
1003 | IsFirmwareUpdateAvailable |
1004 | CheckFirmwareUpdateRequired |
1005 | StartFirmwareUpdate |
1006 | AbortFirmwareUpdate |
1007 | GetFirmwareUpdateState |
SetVibrationMasterVolume
Takes an input 32bit float.
irs
This is "nn::irsensor::IIrSensorServer".
Cmd | Name |
---|---|
302 | #ActivateIrsensor |
303 | #DeactivateIrsensor |
304 | #GetIrsensorSharedMemoryHandle |
305 | #StopImageProcessor |
306 | #RunMomentProcessor |
307 | #RunClusteringProcessor |
308 | #RunImageTransferProcessor |
309 | #GetImageTransferProcessorState |
310 | #RunTeraPluginProcessor |
311 | #GetNpadIrCameraHandle |
312 | #RunDpdProcessor |
313 | #SuspendImageProcessor |
314 | [3.0.0+] #CheckFirmwareVersion |
ActivateIrsensor
Takes a PID-descriptor and an AppletResourceUserId. No output.
DeactivateIrsensor
Takes a PID-descriptor and an AppletResourceUserId. No output.
Takes a PID-descriptor and an AppletResourceUserId. Returns a SharedMemory handle.
The SharedMemory is mapped with permissions=read-only and size=0x8000.
StopImageProcessor
Takes a PID-descriptor, an #IrCameraHandle, and an AppletResourceUserId. No output.
RunMomentProcessor
Takes a PID-descriptor, an #IrCameraHandle, an AppletResourceUserId, and a #PackedMomentProcessorConfig. No output.
RunClusteringProcessor
Takes a PID-descriptor, an #IrCameraHandle, an AppletResourceUserId, and a #PackedClusteringProcessorConfig. No output.
RunImageTransferProcessor
Takes a PID-descriptor, an #IrCameraHandle, an AppletResourceUserId, a #PackedImageTransferProcessorConfig, an u64 for the TransferMemory_size, and a TransferMemory handle. No output.
Official sw creates the TransferMemory with an user-specified buffer and permissions=0.
GetImageTransferProcessorState
Takes a PID-descriptor, a type-0x6 output buffer, an #IrCameraHandle, and an AppletResourceUserId. Returns an #ImageTransferProcessorState. No output.
RunTeraPluginProcessor
Takes a PID-descriptor, an #IrCameraHandle, a #PackedTeraPluginProcessorConfig (immediately after the previous word), and an AppletResourceUserId. No output.
GetNpadIrCameraHandle
Takes an input u32. Returns an output #IrCameraHandle.
RunDpdProcessor
Takes a PID-descriptor, an #IrCameraHandle, a #PackedDpdProcessorConfig (immediately after the previous word), and an AppletResourceUserId. No output.
SuspendImageProcessor
Takes a PID-descriptor, an #IrCameraHandle, and an AppletResourceUserId. No output.
CheckFirmwareVersion
Takes a PID-descriptor, an #IrCameraHandle, a #PackedMcuVersion, and an AppletResourceUserId. No output.
IrCameraHandle
This is an u32.
PackedMomentProcessorConfig
This is a 0x20-byte struct. This is converted from another structure by the official user-process.
Offset | Size | Description | DefaultConfig |
---|---|---|---|
0x0 | 0x8 | ? | 0x493E0 |
0x8 | 0x1 | ? | 0x0 |
0x9 | 0x1 | ? | 0x8 |
0xA | 0x1 | ? | 0x0 |
0xB | 0x5 | Padding | |
0x10 | 0x8 | u16, u32, u16 | {Not written}, 0x1400000, 0xF0 |
0x18 | 0x4 | Hard-coded to 0xA0003. | |
0x1C | 0x1 | ? | 0x1 |
0x1D | 0x1 | ? | 0x50 |
0x1E | 0x2 | Padding |
PackedClusteringProcessorConfig
This is a 0x28-byte struct.
PackedImageTransferProcessorConfig
This is a 0x18-byte struct. This is converted from another structure by the official user-process. The conversion is the same as PackedMomentProcessorConfig, except the code using out +0x1C/+0x1D was removed, and the constant is now located at out+0x10. The code which wrote to out u64 +0x10 from in+0x24 was replaced with code which writes an u8 to out+0x14.
ImageTransferProcessorState
This is a 0x10-byte struct.
PackedTeraPluginProcessorConfig
This is an u64.
PackedDpdProcessorConfig
This is a 0x10-byte struct.
PackedMcuVersion
This is an u32.
RomFS
The hid-sysmodule RomFS contains:
ftmFwUpdate ├── NTD_4CD_1801.fts256 └── NTD_4CD_2602.fts256
These are firmware files for the touchscreen controller.
Firmware update
Starting with 3.0.0 HID-sysmodule now contains strings for data stored in title 0100000000000822.