HID services: Difference between revisions
No edit summary |
|||
(26 intermediate revisions by 3 users not shown) | |||
Line 157: | Line 157: | ||
|- | |- | ||
| 211 || [7.0.0+] [[#IsVibrationDeviceMounted]] | | 211 || [7.0.0+] [[#IsVibrationDeviceMounted]] | ||
|- | |||
| 212 || [11.0.0+] [[#SendVibrationValueInBool]] | |||
|- | |- | ||
| 300 || [3.0.0+] [[#ActivateConsoleSixAxisSensor]] | | 300 || [3.0.0+] [[#ActivateConsoleSixAxisSensor]] | ||
Line 584: | Line 586: | ||
== IsVibrationDeviceMounted == | == IsVibrationDeviceMounted == | ||
Takes a PID, an [[#VibrationDeviceHandle]], and an u64 [[AM_services|AppletResourceUserId]], returns an output u8 bool. | Takes a PID, an [[#VibrationDeviceHandle]], and an u64 [[AM_services|AppletResourceUserId]], returns an output u8 bool. | ||
== SendVibrationValueInBool == | |||
Takes a PID, a bool, a [[#VibrationDeviceHandle]], and an [[AM_services|AppletResourceUserId]], no output. | |||
Stubbed, this just returns 0. | |||
This is currently not exposed by sdknso. | |||
== ActivateConsoleSixAxisSensor == | == ActivateConsoleSixAxisSensor == | ||
Line 713: | Line 722: | ||
sdknso uses an user-specified EventClearMode. | sdknso uses an user-specified EventClearMode. | ||
The Event is signaled when data is available with [[#GetPalmaOperationInfo]]. | |||
== GetPalmaOperationInfo == | == GetPalmaOperationInfo == | ||
Line 718: | Line 729: | ||
sdknso passes [[#PalmaOperationInfo]]+0x8 size 0x140 for the output buffer. [5.1.0+] After using the cmd successfully, [[#GetPalmaOperationResult]] is used. | sdknso passes [[#PalmaOperationInfo]]+0x8 size 0x140 for the output buffer. [5.1.0+] After using the cmd successfully, [[#GetPalmaOperationResult]] is used. | ||
This must be used at some point following using any of the other Palma cmds which trigger an Operation, once the [[#AcquirePalmaOperationCompleteEvent|Event]] is signaled. Up to 4 Operations can be queued at once, the other cmds will throw an error once there's too many operations. | |||
== PlayPalmaActivity == | == PlayPalmaActivity == | ||
Takes an input [[#PalmaConnectionHandle]], an u64 (exposed by sdknso as an u16), no output. | Takes an input [[#PalmaConnectionHandle]], an u64 (exposed by sdknso as an u16), no output. | ||
See [[#hidGetPalmaOperationInfo]]. | |||
== SetPalmaFrModeType == | == SetPalmaFrModeType == | ||
Takes an input [[#PalmaConnectionHandle]], an u64 [[#PalmaFrModeType]], no output. | Takes an input [[#PalmaConnectionHandle]], an u64 [[#PalmaFrModeType]], no output. | ||
See [[#hidGetPalmaOperationInfo]]. | |||
== ReadPalmaStep == | == ReadPalmaStep == | ||
Takes an input [[#PalmaConnectionHandle]], no output. | Takes an input [[#PalmaConnectionHandle]], no output. | ||
See [[#hidGetPalmaOperationInfo]]. | |||
[[#EnablePalmaStep]] should be used before this. | |||
== EnablePalmaStep == | == EnablePalmaStep == | ||
Takes an input bool, a [[#PalmaConnectionHandle]], no output. | Takes an input bool, a [[#PalmaConnectionHandle]], no output. | ||
See [[#hidGetPalmaOperationInfo]]. | |||
== ResetPalmaStep == | == ResetPalmaStep == | ||
Takes an input [[#PalmaConnectionHandle]], no output. | Takes an input [[#PalmaConnectionHandle]], no output. | ||
See [[#hidGetPalmaOperationInfo]]. | |||
== ReadPalmaApplicationSection == | == ReadPalmaApplicationSection == | ||
Takes an input [[#PalmaConnectionHandle]], an u64, an u64, no output. | Takes an input [[#PalmaConnectionHandle]], an u64, an u64 size, no output. | ||
sdknso exposes the first u64 as a s32. sdknso will Abort if the input value for the second u64 is >0x100. | sdknso exposes the first u64 as a s32. sdknso will Abort if the input value for the second u64 is >0x100. | ||
See [[#hidGetPalmaOperationInfo]]. | |||
== WritePalmaApplicationSection == | == WritePalmaApplicationSection == | ||
Line 743: | Line 770: | ||
sdknso exposes the first u64 as a s32. Data is copied from the input [[#PalmaApplicationSectionAccessBuffer]] with the specified size. | sdknso exposes the first u64 as a s32. Data is copied from the input [[#PalmaApplicationSectionAccessBuffer]] with the specified size. | ||
See [[#hidGetPalmaOperationInfo]]. | |||
== ReadPalmaUniqueCode == | == ReadPalmaUniqueCode == | ||
Takes an input [[#PalmaConnectionHandle]], no output. | Takes an input [[#PalmaConnectionHandle]], no output. | ||
See [[#hidGetPalmaOperationInfo]]. | |||
== SetPalmaUniqueCodeInvalid == | == SetPalmaUniqueCodeInvalid == | ||
Takes an input [[#PalmaConnectionHandle]], no output. | Takes an input [[#PalmaConnectionHandle]], no output. | ||
See [[#hidGetPalmaOperationInfo]]. | |||
== WritePalmaActivityEntry == | == WritePalmaActivityEntry == | ||
Line 754: | Line 787: | ||
sdknso exposes the first u64 as an u16, while the rest are exposed as [[#PalmaActivityEntry]]. | sdknso exposes the first u64 as an u16, while the rest are exposed as [[#PalmaActivityEntry]]. | ||
See [[#hidGetPalmaOperationInfo]]. | |||
== WritePalmaRgbLedPatternEntry == | == WritePalmaRgbLedPatternEntry == | ||
Takes an input [[#PalmaConnectionHandle]], an u64, a type-0x5 input buffer, no output. | Takes an input [[#PalmaConnectionHandle]], an u64, a type-0x5 input buffer, no output. | ||
sdknso exposes the u64 as an u16. | |||
See [[#hidGetPalmaOperationInfo]]. | |||
== WritePalmaWaveEntry == | == WritePalmaWaveEntry == | ||
Takes an input [[#PalmaConnectionHandle]], an u64, an u64, a handle, an u64, an u64, no output. | Takes an input [[#PalmaConnectionHandle]], an u64 [[#PalmaWaveSet]], an u64 (exposed by sdknso as an u16), a TransferMemory handle, an u64 tmem_size, an u64 size, no output. | ||
The TransferMemory is created from an user-specified buffer with permissions=R--. | |||
Note that the sysmodule will not properly close the TransferMemory handle if the [[#PalmaConnectionHandle]] is invalid. | |||
See [[#hidGetPalmaOperationInfo]]. | |||
== SetPalmaDataBaseIdentificationVersion == | == SetPalmaDataBaseIdentificationVersion == | ||
Takes an input s32, a [[#PalmaConnectionHandle]], no output. | Takes an input s32, a [[#PalmaConnectionHandle]], no output. | ||
See [[#hidGetPalmaOperationInfo]]. | |||
== GetPalmaDataBaseIdentificationVersion == | == GetPalmaDataBaseIdentificationVersion == | ||
Takes an input [[#PalmaConnectionHandle]], no output. | Takes an input [[#PalmaConnectionHandle]], no output. | ||
See [[#hidGetPalmaOperationInfo]]. | |||
== SuspendPalmaFeature == | == SuspendPalmaFeature == | ||
Takes an input "nn::util::BitFlagSet<32, [[#PalmaFeature]]>", a [[#PalmaConnectionHandle]], no output. | Takes an input "nn::util::BitFlagSet<32, [[#PalmaFeature]]>", a [[#PalmaConnectionHandle]], no output. | ||
See [[#hidGetPalmaOperationInfo]]. | |||
== GetPalmaOperationResult == | == GetPalmaOperationResult == | ||
Line 777: | Line 828: | ||
== ReadPalmaPlayLog == | == ReadPalmaPlayLog == | ||
Takes an input u16, a [[#PalmaConnectionHandle]], no output. | Takes an input u16, a [[#PalmaConnectionHandle]], no output. | ||
See [[#hidGetPalmaOperationInfo]]. | |||
== ResetPalmaPlayLog == | == ResetPalmaPlayLog == | ||
Takes an input u16, a [[#PalmaConnectionHandle]], no output. | Takes an input u16, a [[#PalmaConnectionHandle]], no output. | ||
See [[#hidGetPalmaOperationInfo]]. | |||
== SetIsPalmaAllConnectable == | == SetIsPalmaAllConnectable == | ||
Line 792: | Line 847: | ||
== SetPalmaBoostMode == | == SetPalmaBoostMode == | ||
Takes an input bool, no output. | Takes an input bool, no output. | ||
Stubbed, just returns 0. This was replaced by [[#EnablePalmaBoostMode]]. | |||
== CancelWritePalmaWaveEntry == | == CancelWritePalmaWaveEntry == | ||
Line 807: | Line 864: | ||
== SetNpadCommunicationMode == | == SetNpadCommunicationMode == | ||
Takes a PID, an [[AM_services|AppletResourceUserId]], a s64 [[#NpadCommunicationMode]], no output. | Takes a PID, an [[AM_services|AppletResourceUserId]], a s64 [[#NpadCommunicationMode]], no output. | ||
[2.0.0+] Stubbed, just returns 0. | |||
== GetNpadCommunicationMode == | == GetNpadCommunicationMode == | ||
Line 812: | Line 871: | ||
sdknso uses a switch-statement to determine the value to write to the output [[#NpadCommunicationMode]], with the s64 (written value is the same as the s64). sdknso will Abort if the s64 is not 0-3. | sdknso uses a switch-statement to determine the value to write to the output [[#NpadCommunicationMode]], with the s64 (written value is the same as the s64). sdknso will Abort if the s64 is not 0-3. | ||
[2.0.0+] Stubbed, just returns hard-coded output mode=3. | |||
== SetTouchScreenConfiguration == | == SetTouchScreenConfiguration == | ||
Line 868: | Line 929: | ||
|- | |- | ||
| 13 || [9.0.0+] GetTouchScreenConfiguration | | 13 || [9.0.0+] GetTouchScreenConfiguration | ||
|- | |||
| 14 || [11.0.0+] ProcessTouchScreenAutoTune | |||
|- | |- | ||
| 20 || [[#DeactivateMouse]] | | 20 || [[#DeactivateMouse]] | ||
Line 1,028: | Line 1,091: | ||
|- | |- | ||
| 246 || [9.0.0+] GetVidPid | | 246 || [9.0.0+] GetVidPid | ||
|- | |||
| 247 || [11.0.0+] GetAnalogStickCalibrationValue | |||
|- | |||
| 248 || [11.0.0+] GetUniquePadIdsFull | |||
|- | |||
| 249 || [11.0.0+] ConnectUniquePad | |||
|- | |- | ||
| 301 || [5.0.0-8.1.0] [[#GetAbstractedPadHandles]] | | 301 || [5.0.0-8.1.0] [[#GetAbstractedPadHandles]] | ||
Line 1,059: | Line 1,128: | ||
| 332 || [7.0.0+] [[#SetHdlsState]] | | 332 || [7.0.0+] [[#SetHdlsState]] | ||
|- | |- | ||
| 350 || [5.0.0+] AddRegisteredDevice | | 350 || [5.0.0+] [[#AddRegisteredDevice]] | ||
|- | |- | ||
| 400 || [6.0.0+] DisableExternalMcuOnNxDevice | | 400 || [6.0.0+] DisableExternalMcuOnNxDevice | ||
Line 1,068: | Line 1,137: | ||
|- | |- | ||
| 403 || [10.0.0+] EnableShipmentModeAutoClear | | 403 || [10.0.0+] EnableShipmentModeAutoClear | ||
|- | |||
| 404 || [11.0.0+] SetRailEnabled | |||
|- | |- | ||
| 500 || [8.0.0+] SetFactoryInt | | 500 || [8.0.0+] SetFactoryInt | ||
Line 1,281: | Line 1,352: | ||
[9.0.0+] Input order was swapped: now takes an input [[#HdlsHandle]] and a [[#HdlsState]], no output. | [9.0.0+] Input order was swapped: now takes an input [[#HdlsHandle]] and a [[#HdlsState]], no output. | ||
== AddRegisteredDevice == | |||
Takes an input [[#RegisteredDevice]], no output. | |||
[11.0.0+] Takes an input [[#DebugRegisteredDevice]], no output. | |||
= hid:sys = | = hid:sys = | ||
Line 1,402: | Line 1,478: | ||
|- | |- | ||
| 524 || [10.0.0+] IsHandheldHidsEnabled | | 524 || [10.0.0+] IsHandheldHidsEnabled | ||
|- | |||
| 525 || [11.0.0+] IsJoyConAttachedOnAllRail | |||
|- | |- | ||
| 540 || AcquirePlayReportControllerUsageUpdateEvent | | 540 || AcquirePlayReportControllerUsageUpdateEvent | ||
Line 1,557: | Line 1,635: | ||
| 1200 || [10.0.0+] [[#IsButtonConfigSupported]] | | 1200 || [10.0.0+] [[#IsButtonConfigSupported]] | ||
|- | |- | ||
| 1201 || [10.0.0 | | 1201 || [11.0.0+] [[#IsButtonConfigEmbeddedSupported]] ([10.0.0-10.2.0] [[#DeleteButtonConfig]]) | ||
|- | |- | ||
| 1202 || [10.0.0 | | 1202 || [11.0.0+] [[#DeleteButtonConfig]] ([10.0.0-10.2.0] [[#SetButtonConfigEnabled]]) | ||
|- | |- | ||
| 1203 || [10.0.0 | | 1203 || [11.0.0+] [[#DeleteButtonConfigEmbedded]] ([10.0.0-10.2.0] [[#IsButtonConfigEnabled]]) | ||
|- | |- | ||
| 1204 || [10.0.0 | | 1204 || [11.0.0+] [[#SetButtonConfigEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigEmbedded]]) | ||
|- | |- | ||
| 1205 || [10.0.0 | | 1205 || [11.0.0+] [[#SetButtonConfigEmbeddedEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigFull]]) | ||
|- | |- | ||
| 1206 || [10.0.0 | | 1206 || [11.0.0+] [[#IsButtonConfigEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigLeft]]) | ||
|- | |- | ||
| 1207 || [10.0.0 | | 1207 || [11.0.0+] [[#IsButtonConfigEmbeddedEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigRight]]) | ||
|- | |- | ||
| 1208 || [10.0.0 | | 1208 || [11.0.0+] [[#SetButtonConfigEmbedded]] ([10.0.0-10.2.0] [[#GetButtonConfigEmbedded]]) | ||
|- | |- | ||
| 1209 || [10.0.0 | | 1209 || [11.0.0+] [[#SetButtonConfigFull]] ([10.0.0-10.2.0] [[#GetButtonConfigFull]]) | ||
|- | |- | ||
| 1210 || [10.0.0 | | 1210 || [10.0.0-10.2.0] [[#GetButtonConfigLeft]] | ||
|- | |- | ||
| 1211 || [10.0.0+] [[#GetButtonConfigRight]] | | 1211 || [11.0.0+] [[#SetButtonConfigRight]] ([10.0.0-10.2.0] [[#GetButtonConfigRight]]) | ||
|- | |||
| 1212 || [11.0.0+] [[#GetButtonConfigEmbedded]] | |||
|- | |||
| 1213 || [11.0.0+] [[#GetButtonConfigFull]] | |||
|- | |||
| 1214 || [11.0.0+] [[#GetButtonConfigLeft]] | |||
|- | |||
| 1215 || [11.0.0+] [[#GetButtonConfigRight]] | |||
|- | |- | ||
| 1250 || [10.0.0+] [[#IsCustomButtonConfigSupported]] | | 1250 || [10.0.0+] [[#IsCustomButtonConfigSupported]] | ||
Line 1,597: | Line 1,683: | ||
| 1258 || [10.0.0+] [[#IsButtonConfigStorageRightEmpty]] | | 1258 || [10.0.0+] [[#IsButtonConfigStorageRightEmpty]] | ||
|- | |- | ||
| 1259 || [10.0.0 | | 1259 || [11.0.0+] [[#GetButtonConfigStorageEmbeddedDeprecated]] ([10.0.0-10.2.0] [[#GetButtonConfigStorageEmbeddedDeprecated|GetButtonConfigStorageEmbedded]]) | ||
|- | |- | ||
| 1260 || [10.0.0 | | 1260 || [11.0.0+] [[#GetButtonConfigStorageFullDeprecated]] ([10.0.0-10.2.0] [[#GetButtonConfigStorageFullDeprecated|GetButtonConfigStorageFull]]) | ||
|- | |- | ||
| 1261 || [10.0.0 | | 1261 || [11.0.0+] [[#GetButtonConfigStorageLeftDeprecated]] ([10.0.0-10.2.0] [[#GetButtonConfigStorageLeftDeprecated|GetButtonConfigStorageLeft]]) | ||
|- | |- | ||
| 1262 || [10.0.0 | | 1262 || [11.0.0+] [[#GetButtonConfigStorageRightDeprecated]] ([10.0.0-10.2.0] [[#GetButtonConfigStorageRightDeprecated|GetButtonConfigStorageRight]]) | ||
|- | |- | ||
| 1263 || [10.0.0 | | 1263 || [11.0.0+] [[#SetButtonConfigStorageEmbeddedDeprecated]] ([10.0.0-10.2.0] [[#SetButtonConfigStorageEmbeddedDeprecated|SetButtonConfigStorageEmbedded]]) | ||
|- | |- | ||
| 1264 || [10.0.0 | | 1264 || [11.0.0+] [[#SetButtonConfigStorageFullDeprecated]] ([10.0.0-10.2.0] [[#SetButtonConfigStorageFullDeprecated|SetButtonConfigStorageFull]]) | ||
|- | |- | ||
| 1265 || [10.0.0 | | 1265 || [11.0.0+] [[#SetButtonConfigStorageLeftDeprecated]] ([10.0.0-10.2.0] [[#SetButtonConfigStorageLeftDeprecated|SetButtonConfigStorageLeft]]) | ||
|- | |- | ||
| 1266 || [10.0.0 | | 1266 || [11.0.0+] [[#SetButtonConfigStorageRightDeprecated]] ([10.0.0-10.2.0] [[#SetButtonConfigStorageRightDeprecated|SetButtonConfigStorageRight]]) | ||
|- | |- | ||
| 1267 || [10.0.0+] [[#DeleteButtonConfigStorageEmbedded]] | | 1267 || [10.0.0+] [[#DeleteButtonConfigStorageEmbedded]] | ||
Line 1,646: | Line 1,732: | ||
|- | |- | ||
| 1283 || [10.0.0+] [[#GetHidButtonConfigRight]] | | 1283 || [10.0.0+] [[#GetHidButtonConfigRight]] | ||
|- | |||
| 1284 || [11.0.0+] [[#GetButtonConfigStorageEmbedded]] | |||
|- | |||
| 1285 || [11.0.0+] [[#GetButtonConfigStorageFull]] | |||
|- | |||
| 1286 || [11.0.0+] [[#GetButtonConfigStorageLeft]] | |||
|- | |||
| 1287 || [11.0.0+] [[#GetButtonConfigStorageRight]] | |||
|- | |||
| 1288 || [11.0.0+] [[#SetButtonConfigStorageEmbedded]] | |||
|- | |||
| 1289 || [11.0.0+] [[#SetButtonConfigStorageFull]] | |||
|- | |||
| 1290 || [11.0.0+] [[#SetButtonConfigStorageLeft]] | |||
|- | |||
| 1291 || [11.0.0+] [[#SetButtonConfigStorageRight]] | |||
|- | |||
| 12010 || [11.0.0+] [[#SetButtonConfigLeft]] | |||
|} | |} | ||
Line 1,747: | Line 1,851: | ||
== IsButtonConfigSupported == | == IsButtonConfigSupported == | ||
Takes an input [[#UniquePadId]], returns an output bool. | Takes an input [[#UniquePadId]], returns an output bool. | ||
[11.0.0+] Takes an input [[Bluetooth_Driver_services#Address|Address]], returns an output bool. | |||
== IsButtonConfigEmbeddedSupported == | |||
No input, returns an output bool. | |||
== DeleteButtonConfig == | == DeleteButtonConfig == | ||
Takes an input [[#UniquePadId]], no output. | Takes an input [[#UniquePadId]], no output. | ||
[11.0.0+] Takes an input [[Bluetooth_Driver_services#Address|Address]], no output. | |||
== DeleteButtonConfigEmbedded == | |||
No input/output. | |||
== SetButtonConfigEnabled == | == SetButtonConfigEnabled == | ||
Takes an input bool, an [[#UniquePadId]], no output. | Takes an input bool, an [[#UniquePadId]], no output. | ||
[11.0.0+] Takes an input bool, an [[Bluetooth_Driver_services#Address|Address]], no output. | |||
== SetButtonConfigEmbeddedEnabled == | |||
Takes an input bool, no output. | |||
== IsButtonConfigEnabled == | == IsButtonConfigEnabled == | ||
Takes an input [[#UniquePadId]], returns an output bool. | Takes an input [[#UniquePadId]], returns an output bool. | ||
[11.0.0+] Takes an input [[Bluetooth_Driver_services#Address|Address]], returns an output bool. | |||
== IsButtonConfigEmbeddedEnabled == | |||
No input, returns an output bool. | |||
== SetButtonConfigEmbedded == | == SetButtonConfigEmbedded == | ||
Takes an input [[#UniquePadId]], a type-0x15 input buffer containing a [[#SystemButtonConfigEmbedded]], no output. | Takes ([10.0.0-10.2.0] an input [[#UniquePadId]]), a type-0x15 input buffer containing a [[#SystemButtonConfigEmbedded]], no output. | ||
== SetButtonConfigFull == | == SetButtonConfigFull == | ||
Takes an input [[#UniquePadId]], a type-0x15 input buffer containing a [[#SystemButtonConfigFull]], no output. | Takes an input [[#UniquePadId]], a type-0x15 input buffer containing a [[#SystemButtonConfigFull]], no output. | ||
[11.0.0+] Takes an input [[Bluetooth_Driver_services#Address|Address]], a type-0x15 input buffer containing a [[#SystemButtonConfigFull]], no output. | |||
== SetButtonConfigLeft == | == SetButtonConfigLeft == | ||
Takes an input [[#UniquePadId]], a type-0x15 input buffer containing a [[#SystemButtonConfigLeft]], no output. | Takes an input [[#UniquePadId]], a type-0x15 input buffer containing a [[#SystemButtonConfigLeft]], no output. | ||
[11.0.0+] Takes an input [[Bluetooth_Driver_services#Address|Address]], a type-0x15 input buffer containing a [[#SystemButtonConfigLeft]], no output. | |||
== SetButtonConfigRight == | == SetButtonConfigRight == | ||
Takes an input [[#UniquePadId]], a type-0x15 input buffer containing a [[#SystemButtonConfigRight]], no output. | Takes an input [[#UniquePadId]], a type-0x15 input buffer containing a [[#SystemButtonConfigRight]], no output. | ||
[11.0.0+] Takes an input [[Bluetooth_Driver_services#Address|Address]], a type-0x15 input buffer containing a [[#SystemButtonConfigRight]], no output. | |||
== GetButtonConfigEmbedded == | == GetButtonConfigEmbedded == | ||
Takes an input [[#UniquePadId]], and a type-0x16 output buffer containing a [[#SystemButtonConfigEmbedded]]. | Takes ([10.0.0-10.2.0] an input [[#UniquePadId]]), and a type-0x16 output buffer containing a [[#SystemButtonConfigEmbedded]]. | ||
== GetButtonConfigFull == | == GetButtonConfigFull == | ||
Takes an input [[#UniquePadId]], and a type-0x16 output buffer containing a [[#SystemButtonConfigFull]]. | Takes an input [[#UniquePadId]], and a type-0x16 output buffer containing a [[#SystemButtonConfigFull]]. | ||
[11.0.0+] Takes an input [[Bluetooth_Driver_services#Address|Address]], and a type-0x16 output buffer containing a [[#SystemButtonConfigFull]]. | |||
== GetButtonConfigLeft == | == GetButtonConfigLeft == | ||
Takes an input [[#UniquePadId]], and a type-0x16 output buffer containing a [[#SystemButtonConfigLeft]]. | Takes an input [[#UniquePadId]], and a type-0x16 output buffer containing a [[#SystemButtonConfigLeft]]. | ||
[11.0.0+] Takes an input [[Bluetooth_Driver_services#Address|Address]], and a type-0x16 output buffer containing a [[#SystemButtonConfigLeft]]. | |||
== GetButtonConfigRight == | == GetButtonConfigRight == | ||
Takes an input [[#UniquePadId]], and a type-0x16 output buffer containing a [[#SystemButtonConfigRight]]. | Takes an input [[#UniquePadId]], and a type-0x16 output buffer containing a [[#SystemButtonConfigRight]]. | ||
[11.0.0+] Takes an input [[Bluetooth_Driver_services#Address|Address]], and a type-0x16 output buffer containing a [[#SystemButtonConfigRight]]. | |||
== IsCustomButtonConfigSupported == | == IsCustomButtonConfigSupported == | ||
Line 1,807: | Line 1,943: | ||
Takes an input s32 entry-index, returns an output bool. | Takes an input s32 entry-index, returns an output bool. | ||
[10.1.0 | [10.1.0-10.2.0] This will now Abort if the s32 is negative or >=5. [11.0.0+] This value must now be unsigned <=4, otherwise 0 is returned. | ||
Uses [[Settings_services#GetButtonConfigSettingsEmbedded|GetButtonConfigSettingsEmbedded]] with count=5 (output s32 ignored). The input entry-index is used with this array. Then the output bool is set to [[Settings_services#ButtonConfigSettings|IsFull]] bit0 == 0. Then 0 is returned. | Uses [[Settings_services#GetButtonConfigSettingsEmbedded|GetButtonConfigSettingsEmbedded]] with count=5 (output s32 ignored). The input entry-index is used with this array. Then the output bool is set to [[Settings_services#ButtonConfigSettings|IsFull]] bit0 == 0. Then 0 is returned. | ||
Line 1,826: | Line 1,962: | ||
Same as [[#IsButtonConfigStorageEmbeddedEmpty]] except with a different setsys cmd. | Same as [[#IsButtonConfigStorageEmbeddedEmpty]] except with a different setsys cmd. | ||
== | == GetButtonConfigStorageEmbeddedDeprecated == | ||
Takes an input s32 entry-index, and a type-0x16 output buffer containing a [[#ButtonConfigEmbedded]]. | Takes an input s32 entry-index, and a type-0x16 output buffer containing a [[#ButtonConfigEmbedded]]. | ||
[10.1.0 | [10.1.0-10.2.0] This will now Abort if the s32 is negative or >=5. | ||
[11.0.0+] This now calls the same func internally as [[#GetButtonConfigStorageEmbedded]], except the [[#StorageName]] isn't exposed. | |||
Uses [[Settings_services#GetButtonConfigSettingsEmbedded|GetButtonConfigSettingsEmbedded]] with count=5 (output s32 ignored). The input entry-index is used with this array. Then an error is thrown if [[Settings_services#ButtonConfigSettings|IsFull]] bit0 is clear. Then the data at +0x1C8 is converted to [[#ButtonConfigEmbedded]], copied to output, and returns 0. | Uses [[Settings_services#GetButtonConfigSettingsEmbedded|GetButtonConfigSettingsEmbedded]] with count=5 (output s32 ignored). The input entry-index is used with this array. Then an error is thrown if [[Settings_services#ButtonConfigSettings|IsFull]] bit0 is clear. Then the data at +0x1C8 is converted to [[#ButtonConfigEmbedded]], copied to output, and returns 0. | ||
== | == GetButtonConfigStorageFullDeprecated == | ||
Takes an input s32 entry-index, and a type-0x16 output buffer containing a [[#ButtonConfigFull]]. | Takes an input s32 entry-index, and a type-0x16 output buffer containing a [[#ButtonConfigFull]]. | ||
Same as [[# | Same as [[#GetButtonConfigStorageEmbeddedDeprecated]], except this uses a different setsys cmd, and uses a different conversion func / different output struct. | ||
== | == GetButtonConfigStorageLeftDeprecated == | ||
Takes an input s32 entry-index, and a type-0x16 output buffer containing a [[#ButtonConfigLeft]]. | Takes an input s32 entry-index, and a type-0x16 output buffer containing a [[#ButtonConfigLeft]]. | ||
Same as [[# | Same as [[#GetButtonConfigStorageEmbeddedDeprecated]], except this uses a different setsys cmd, and uses a different conversion func / different output struct. | ||
== | == GetButtonConfigStorageRightDeprecated == | ||
Takes an input s32 entry-index, and a type-0x16 output buffer containing a [[#ButtonConfigRight]]. | Takes an input s32 entry-index, and a type-0x16 output buffer containing a [[#ButtonConfigRight]]. | ||
Same as [[# | Same as [[#GetButtonConfigStorageEmbeddedDeprecated]], except this uses a different setsys cmd, and uses a different conversion func / different output struct. | ||
== | == SetButtonConfigStorageEmbeddedDeprecated == | ||
Takes an input s32 entry-index, and a type-0x15 input buffer containing a [[#ButtonConfigEmbedded]]. | Takes an input s32 entry-index, and a type-0x15 input buffer containing a [[#ButtonConfigEmbedded]]. | ||
[10.1.0 | [10.1.0-10.2.0] This will now Abort if the s32 is negative or >=5. | ||
[11.0.0+] This now calls the same func internally as [[#SetButtonConfigStorageEmbedded]], except the [[#StorageName]] isn't exposed. | |||
If the input config matches the [[#IsDefaultButtonConfigEmbedded|default]], this first does: | If the input config matches the [[#IsDefaultButtonConfigEmbedded|default]], this first does: | ||
Line 1,858: | Line 1,998: | ||
Afterwards, this uses [[Settings_services#GetButtonConfigSettingsEmbedded|GetButtonConfigSettingsEmbedded]] with count=5 (output s32 ignored). The input entry-index is used with this array. The input struct is converted, the output from that is copied to +0x1C8 size 0x3E0, IsFull is set, [[Settings_services#SetButtonConfigSettingsEmbedded|SetButtonConfigSettingsEmbedded]] is used with the updated array, and then returns 0. | Afterwards, this uses [[Settings_services#GetButtonConfigSettingsEmbedded|GetButtonConfigSettingsEmbedded]] with count=5 (output s32 ignored). The input entry-index is used with this array. The input struct is converted, the output from that is copied to +0x1C8 size 0x3E0, IsFull is set, [[Settings_services#SetButtonConfigSettingsEmbedded|SetButtonConfigSettingsEmbedded]] is used with the updated array, and then returns 0. | ||
== | == SetButtonConfigStorageFullDeprecated == | ||
Takes an input s32 entry-index, and a type-0x15 input buffer containing a [[#ButtonConfigFull]]. | Takes an input s32 entry-index, and a type-0x15 input buffer containing a [[#ButtonConfigFull]]. | ||
Same as [[# | Same as [[#SetButtonConfigStorageEmbeddedDeprecated]], except this uses different setsys cmds, and uses a different structs etc. | ||
== | == SetButtonConfigStorageLeftDeprecated == | ||
Takes an input s32 entry-index, and a type-0x15 input buffer containing a [[#ButtonConfigLeft]]. | Takes an input s32 entry-index, and a type-0x15 input buffer containing a [[#ButtonConfigLeft]]. | ||
Same as [[# | Same as [[#SetButtonConfigStorageEmbeddedDeprecated]], except this uses different setsys cmds, and uses a different structs etc. | ||
== | == SetButtonConfigStorageRightDeprecated == | ||
Takes an input s32 entry-index, and a type-0x15 input buffer containing a [[#ButtonConfigRight]]. | Takes an input s32 entry-index, and a type-0x15 input buffer containing a [[#ButtonConfigRight]]. | ||
Same as [[# | Same as [[#SetButtonConfigStorageEmbeddedDeprecated]], except this uses different setsys cmds, and uses a different structs etc. | ||
== DeleteButtonConfigStorageEmbedded == | == DeleteButtonConfigStorageEmbedded == | ||
Takes an input s32 entry-index, no output. | Takes an input s32 entry-index, no output. | ||
[10.1.0 | [10.1.0-10.2.0] This will now Abort if the s32 is negative or >=5. [11.0.0+] When the input s32 is larger than unsigned value 4, an error is returned. | ||
Uses [[Settings_services#GetButtonConfigSettingsEmbedded|GetButtonConfigSettingsEmbedded]] with count=5 (output s32 ignored). The input entry-index is used with this array. Then an error is thrown if [[Settings_services#ButtonConfigSettings|IsFull]] bit0 is clear. Then the data at +0x1C8 size 0x3E0 is cleared, IsFull bit0 is cleared, [[Settings_services#SetButtonConfigSettingsEmbedded|SetButtonConfigSettingsEmbedded]] is used with the updated array, and then returns 0. | Uses [[Settings_services#GetButtonConfigSettingsEmbedded|GetButtonConfigSettingsEmbedded]] with count=5 (output s32 ignored). The input entry-index is used with this array. Then an error is thrown if [[Settings_services#ButtonConfigSettings|IsFull]] bit0 is clear. Then the data at +0x1C8 size 0x3E0 is cleared, IsFull bit0 is cleared, [[Settings_services#SetButtonConfigSettingsEmbedded|SetButtonConfigSettingsEmbedded]] is used with the updated array, and then returns 0. | ||
Line 1,883: | Line 2,023: | ||
Takes an input s32 entry-index, no output. | Takes an input s32 entry-index, no output. | ||
Same as [[# | Same as [[#DeleteButtonConfigStorageEmbedded]] except with different setsys cmds. | ||
== DeleteButtonConfigStorageLeft == | == DeleteButtonConfigStorageLeft == | ||
Takes an input s32 entry-index, no output. | Takes an input s32 entry-index, no output. | ||
Same as [[# | Same as [[#DeleteButtonConfigStorageEmbedded]] except with different setsys cmds. | ||
== DeleteButtonConfigStorageRight == | == DeleteButtonConfigStorageRight == | ||
Takes an input s32 entry-index, no output. | Takes an input s32 entry-index, no output. | ||
Same as [[# | Same as [[#DeleteButtonConfigStorageEmbedded]] except with different setsys cmds. | ||
== IsUsingCustomButtonConfig == | == IsUsingCustomButtonConfig == | ||
Line 1,933: | Line 2,073: | ||
== GetHidButtonConfigRight == | == GetHidButtonConfigRight == | ||
Takes an input [[#UniquePadId]], and a type-0x16 output buffer containing a [[#ButtonConfigRight]]. | Takes an input [[#UniquePadId]], and a type-0x16 output buffer containing a [[#ButtonConfigRight]]. | ||
== GetButtonConfigStorageEmbedded == | |||
Takes an input s32, a type-0x16 output buffer containing a [[#ButtonConfigEmbedded]], a type-0x1A output buffer containing a [[#StorageName]]. | |||
When the input s32 is larger than unsigned value 4, an error is returned. | |||
== GetButtonConfigStorageFull == | |||
Takes an input s32, a type-0x16 output buffer containing a [[#ButtonConfigFull]], a type-0x1A output buffer containing a [[#StorageName]]. | |||
== GetButtonConfigStorageLeft == | |||
Takes an input s32, a type-0x16 output buffer containing a [[#ButtonConfigLeft]], a type-0x1A output buffer containing a [[#StorageName]]. | |||
== GetButtonConfigStorageRight == | |||
Takes an input s32, a type-0x16 output buffer containing a [[#ButtonConfigRight]], a type-0x1A output buffer containing a [[#StorageName]]. | |||
== SetButtonConfigStorageEmbedded == | |||
Takes an input s32, a type-0x15 input buffer containing a [[#ButtonConfigEmbedded]], a type-0x19 input buffer containing a [[#StorageName]]. | |||
When the input s32 is larger than unsigned value 4, this will immediately return (this cmd always returns 0 regardless). | |||
== SetButtonConfigStorageFull == | |||
Takes an input s32, a type-0x15 input buffer containing a [[#ButtonConfigFull]], a type-0x19 input buffer containing a [[#StorageName]]. | |||
== SetButtonConfigStorageLeft == | |||
Takes an input s32, a type-0x15 input buffer containing a [[#ButtonConfigLeft]], a type-0x19 input buffer containing a [[#StorageName]]. | |||
== SetButtonConfigStorageRight == | |||
Takes an input s32, a type-0x15 input buffer containing a [[#ButtonConfigRight]], a type-0x19 input buffer containing a [[#StorageName]]. | |||
== IHidbusSystemServer == | == IHidbusSystemServer == | ||
Line 5,918: | Line 6,086: | ||
This is "nn::hid::KeyboardKeySet". This is a BitFlagSet object for [[#KeyboardKey]]. | This is "nn::hid::KeyboardKeySet". This is a BitFlagSet object for [[#KeyboardKey]]. | ||
= | = KeyboardKey = | ||
This is "nn::hid:: | This is "nn::hid::KeyboardKey". This is a 256-bit flag. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 5,929: | Line 6,094: | ||
! Description | ! Description | ||
|- | |- | ||
| | | 4 | ||
| | | A | ||
|- | |- | ||
| 5 | |||
| B | |||
| 5 | |||
| | |||
|- | |- | ||
| 6 | | 6 | ||
| | | C | ||
|- | |- | ||
| 7 | | 7 | ||
| | | D | ||
|- | |- | ||
| 8 | | 8 | ||
| | | E | ||
|- | |- | ||
| 9 | |||
| F | |||
|- | |- | ||
| | | 10 | ||
| | | G | ||
|- | |- | ||
| | | 11 | ||
| | | H | ||
|- | |- | ||
| | | 12 | ||
| | | I | ||
|- | |- | ||
| | | 13 | ||
| | | J | ||
|- | |- | ||
| | | 14 | ||
| | | K | ||
|- | |- | ||
| | | 15 | ||
| L | | L | ||
|- | |- | ||
| 16 | | 16 | ||
| | | M | ||
|- | |- | ||
| 17 | | 17 | ||
| | | N | ||
|- | |- | ||
| 18 | | 18 | ||
| | | O | ||
|- | |- | ||
| 19 | | 19 | ||
| | | P | ||
|- | |- | ||
| 20 | | 20 | ||
| | | Q | ||
|- | |- | ||
| 21 | | 21 | ||
| | | R | ||
|- | |- | ||
| 22 | | 22 | ||
| | | S | ||
|- | |- | ||
| 23 | | 23 | ||
| | | T | ||
|- | |- | ||
| 24 | | 24 | ||
| | | U | ||
|- | |- | ||
| 25 | | 25 | ||
| | | V | ||
|- | |- | ||
| 26 | | 26 | ||
| | | W | ||
|- | |- | ||
| 27 | | 27 | ||
| | | X | ||
|- | |- | ||
| 28 | | 28 | ||
| | | Y | ||
|- | |- | ||
| 29 | | 29 | ||
| | | Z | ||
|- | |- | ||
| 30 | | 30 | ||
| | | D1 | ||
| | |- | ||
| 31 | |||
| D2 | |||
|- | |||
| 32 | |||
| D3 | |||
|- | |||
| 33 | |||
| D4 | |||
|- | |- | ||
| | | 34 | ||
| | | D5 | ||
|- | |- | ||
| | | 35 | ||
| | | D6 | ||
|- | |- | ||
| | | 36 | ||
| | | D7 | ||
|- | |- | ||
| | | 37 | ||
| | | D8 | ||
|- | |- | ||
| | | 38 | ||
| | | D9 | ||
|- | |- | ||
| | | 39 | ||
| | | D0 | ||
|- | |- | ||
| | | 40 | ||
| | | Return | ||
|- | |- | ||
| | | 41 | ||
| | | Escape | ||
|- | |- | ||
| | | 42 | ||
| | | Backspace | ||
|- | |- | ||
| | | 43 | ||
| | | Tab | ||
|- | |- | ||
| | | 44 | ||
| Space | |||
| | |||
|- | |- | ||
| | | 45 | ||
| | | Minus | ||
|- | |- | ||
| | | 46 | ||
| | | Plus | ||
|- | |- | ||
| | | 47 | ||
| | | OpenBracket | ||
|- | |- | ||
| 48 | |||
| CloseBracket | |||
|- | |- | ||
| | | 49 | ||
| | | Pipe | ||
|- | |- | ||
| | | 50 | ||
| | | Tilde | ||
|- | |- | ||
| | | 51 | ||
| | | Semicolon | ||
|- | |- | ||
| | | 52 | ||
| | | Quote | ||
|- | |- | ||
| | | 53 | ||
| | | Backquote | ||
|- | |- | ||
| | | 54 | ||
| | | Comma | ||
|- | |- | ||
| | | 55 | ||
| | | Period | ||
|- | |- | ||
| | | 56 | ||
| | | Slash | ||
|- | |- | ||
| | | 57 | ||
| | | CapsLock | ||
|- | |- | ||
| | | 58 | ||
| | | F1 | ||
|- | |- | ||
| | | 59 | ||
| | | F2 | ||
|- | |- | ||
| | | 60 | ||
| | | F3 | ||
|- | |- | ||
| | | 61 | ||
| | | F4 | ||
|- | |- | ||
| 62 | |||
| F5 | |||
|- | |- | ||
| | | 63 | ||
| | | F6 | ||
|- | |- | ||
| | | 64 | ||
| F7 | |||
|- | |- | ||
| | | 65 | ||
| F8 | |||
|- | |- | ||
| | | 66 | ||
| F9 | |||
|- | |- | ||
| | | 67 | ||
| F10 | |||
|- | |- | ||
| | | 68 | ||
| F11 | |||
|- | |- | ||
| | | 69 | ||
| F12 | |||
|- | |- | ||
| | | 70 | ||
| PrintScreen | |||
|- | |- | ||
| | | 71 | ||
| ScrollLock | |||
|- | |- | ||
| | | 72 | ||
| Pause | |||
|- | |- | ||
| | | 73 | ||
| Insert | |||
|- | |- | ||
| | | 74 | ||
| Home | |||
|- | |- | ||
| | | 75 | ||
| PageUp | |||
|- | |- | ||
| | | 76 | ||
| Delete | |||
|- | |- | ||
| | | 77 | ||
| End | |||
|- | |- | ||
| | | 78 | ||
| PageDown | |||
|- | |- | ||
| | | 79 | ||
| RightArrow | |||
|- | |- | ||
| | | 80 | ||
| LeftArrow | |||
|- | |- | ||
| | | 81 | ||
| DownArrow | |||
|- | |- | ||
| | | 82 | ||
| UpArrow | |||
|- | |- | ||
| | | 83 | ||
| NumLock | |||
|- | |- | ||
| | | 84 | ||
| NumPadDivide | |||
|- | |- | ||
| | | 85 | ||
| NumPadMultiply | |||
|- | |- | ||
| | | 86 | ||
| NumPadSubtract | |||
|- | |- | ||
| | | 87 | ||
| NumPadAdd | |||
|- | |- | ||
| | | 88 | ||
| NumPadEnter | |||
|- | |- | ||
| | | 89 | ||
| NumPad1 | |||
|- | |- | ||
| | | 90 | ||
| NumPad2 | |||
|- | |- | ||
| | | 91 | ||
| NumPad3 | |||
|- | |- | ||
| | | 92 | ||
| NumPad4 | |||
|- | |- | ||
| | | 93 | ||
| NumPad5 | |||
|- | |- | ||
| | | 94 | ||
| NumPad6 | |||
|- | |- | ||
| | | 95 | ||
| NumPad7 | |||
|- | |- | ||
| | | 96 | ||
| NumPad8 | |||
|- | |- | ||
| | | 97 | ||
| NumPad9 | |||
|- | |- | ||
| | | 98 | ||
| NumPad0 | |||
|- | |- | ||
| | | 99 | ||
| NumPadDot | |||
|- | |- | ||
| | | 100 | ||
| Backslash | |||
|- | |- | ||
| | | 101 | ||
| Application | |||
|- | |- | ||
| | | 102 | ||
| Power | |||
|- | |- | ||
| | | 103 | ||
| NumPadEquals | |||
|- | |- | ||
| | | 104 | ||
| F13 | |||
|- | |- | ||
| | | 105 | ||
| F14 | |||
|- | |- | ||
| | | 106 | ||
| F15 | |||
|- | |- | ||
| | | 107 | ||
| F16 | |||
|- | |- | ||
| | | 108 | ||
| F17 | |||
|- | |- | ||
| | | 109 | ||
| F18 | |||
|- | |- | ||
| | | 110 | ||
| F19 | |||
|- | |- | ||
| | | 111 | ||
| F20 | |||
|- | |- | ||
| | | 112 | ||
| F21 | |||
|- | |- | ||
| | | 113 | ||
| F22 | |||
|- | |- | ||
| | | 114 | ||
| F23 | |||
|- | |- | ||
| | | 115 | ||
| F24 | |||
|- | |- | ||
| | | 133 | ||
| NumPadComma | |||
|- | |- | ||
| | | 135 | ||
| Ro | |||
|- | |- | ||
| | | 136 | ||
| KatakanaHiragana | |||
|- | |- | ||
| | | 137 | ||
| Yen | |||
|- | |- | ||
| | | 138 | ||
| Henkan | |||
|- | |- | ||
| | | 139 | ||
| Muhenkan | |||
|- | |- | ||
| | | 140 | ||
| NumPadCommaPc98 | |||
|- | |- | ||
| | | 144 | ||
| HangulEnglish | |||
|- | |- | ||
| | | 145 | ||
| Hanja | |||
|- | |- | ||
| | | 146 | ||
| Katakana | |||
|- | |- | ||
| | | 147 | ||
| Hiragana | |||
|- | |- | ||
| | | 148 | ||
| ZenkakuHankaku | |||
|- | |- | ||
| | | 224 | ||
| LeftControl | |||
|- | |- | ||
| | | 225 | ||
| LeftShift | |||
|- | |||
| 226 | |||
| LeftAlt | |||
|- | |||
| 227 | |||
| LeftGui | |||
|- | |- | ||
| | | 228 | ||
| RightControl | |||
|- | |- | ||
| | | 229 | ||
| RightShift | |||
|- | |- | ||
| | | 230 | ||
| RightAlt | |||
|- | |- | ||
| | | 231 | ||
| RightGui | |||
|} | |} | ||
= | = KeyboardLockKeyEventSet = | ||
This is "nn::hid::system:: | This is "nn::hid::system::KeyboardLockKeyEventSet". This is a BitFlagSet object for [[#KeyboardLockKeyEvent]]. | ||
= KeyboardLockKeyEvent = | |||
This is "nn::hid::system::KeyboardLockKeyEvent". This is a 32-bit flag. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Bit | |||
! Description | |||
|- | |- | ||
| | | 0 | ||
| NumLockOn | |||
|- | |- | ||
| | | 1 | ||
| NumLockOff | |||
|- | |- | ||
| | | 2 | ||
| NumLockToggle | |||
|- | |- | ||
| | | 3 | ||
| CapsLockOn | |||
|- | |- | ||
| | | 4 | ||
| CapsLockOff | |||
|- | |- | ||
| | | 5 | ||
| CapsLockToggle | |||
|- | |- | ||
| | | 6 | ||
| ScrollLockOn | |||
|- | |- | ||
| | | 7 | ||
| ScrollLockOff | |||
|- | |- | ||
| | | 8 | ||
| ScrollLockToggle | |||
|} | |||
| | = 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]]. | |||
= NpadButton = | |||
This is "nn::hid::NpadButton". This is a 64-bit flag. | |||
{| class="wikitable" border="1" | |||
|- | |- | ||
! Bit | |||
! Description | |||
|- | |- | ||
| | | 0 | ||
| A | |||
|- | |- | ||
| | | 1 | ||
| B | |||
|- | |- | ||
| | | 2 | ||
| X | |||
|- | |- | ||
| | | 3 | ||
| Y | |||
|- | |- | ||
| | | 4 | ||
| StickL | |||
|- | |- | ||
| | | 5 | ||
| StickR | |||
|- | |- | ||
| | | 6 | ||
| L | |||
|- | |- | ||
| | | 7 | ||
| R | |||
|- | |- | ||
| | | 8 | ||
| ZL | |||
|- | |||
| 9 | |||
| ZR | |||
|- | |- | ||
| | | 10 | ||
| Plus | |||
|- | |- | ||
| | | 11 | ||
| Minus | |||
|- | |- | ||
| | | 12 | ||
| Left | |||
|- | |- | ||
| | | 13 | ||
| Up | |||
|- | |- | ||
| | | 14 | ||
| Right | |||
|- | |- | ||
| | | 15 | ||
| Down | |||
|- | |- | ||
| | | 16 | ||
| StickLLeft | |||
|- | |- | ||
| | | 17 | ||
| StickLUp | |||
|- | |- | ||
| | | 18 | ||
| StickLRight | |||
|- | |- | ||
| | | 19 | ||
| StickLDown | |||
|- | |- | ||
| | | 20 | ||
| StickRLeft | |||
|- | |- | ||
| | | 21 | ||
| StickRUp | |||
|- | |- | ||
| | | 22 | ||
| StickRRight | |||
|- | |- | ||
| | | 23 | ||
| StickRDown | |||
|- | |- | ||
| | | 24 | ||
| LeftSL | |||
|- | |- | ||
| | | 25 | ||
| LeftSR | |||
|- | |- | ||
| | | 26 | ||
| RightSL | |||
|- | |- | ||
| | | 27 | ||
| RightSR | |||
|- | |- | ||
| | | 28 | ||
| Palma | |||
|- | |- | ||
| | | 29 | ||
| | |||
|- | |- | ||
| | | 30 | ||
| HandheldLeftB (Left B button on NES controllers in Handheld mode) | |||
| | |||
|} | |} | ||
= | = AnalogStickCalibrationFlagsSet = | ||
This is "nn::hid:: | 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" | {| class="wikitable" border="1" | ||
! | ! Bits | ||
! Description | ! Description | ||
! Notes | |||
|- | |- | ||
| 0 || | | 0 | ||
| NpadStyleFullKey | |||
| Pro Controller | |||
|- | |- | ||
| 1 || | | 1 | ||
| NpadStyleHandheld | |||
| Joy-Con controller in handheld mode | |||
|- | |- | ||
| 2 || | | 2 | ||
| NpadStyleJoyDual | |||
| Joy-Con controller in dual mode | |||
|- | |- | ||
| 3 || | | 3 | ||
| NpadStyleJoyLeft | |||
| Joy-Con left controller in single mode | |||
|- | |- | ||
| 4 | | 4 | ||
| | | NpadStyleJoyRight | ||
| Joy-Con right controller in single mode | |||
|- | |- | ||
| | | 5 | ||
| NpadStyleGc | |||
| GameCube controller | |||
|- | |- | ||
| | | 6 | ||
| NpadStylePalma | |||
| Poké Ball Plus controller | |||
|- | |- | ||
| | | 7 | ||
| NpadStyleLark | |||
| NES/Famicom controller | |||
|- | |- | ||
| | | 8 | ||
| NpadStyleHandheldLark | |||
| NES/Famicom controller in handheld mode | |||
|- | |- | ||
| | | 9 | ||
| NpadStyleLucia | |||
| SNES controller | |||
|- | |- | ||
| | | 10-28 | ||
| Reserved | |||
| | |||
|- | |- | ||
| | | 29 | ||
| NpadStyleSystemExt | |||
| Generic external controller | |||
|- | |- | ||
| | | 30 | ||
| NpadStyleSystem | |||
| Generic controller | |||
|- | |- | ||
| | | 31 | ||
| | | Reserved | ||
| | | | ||
|} | |} | ||
= | = NpadDeviceTypeSet = | ||
This is "nn:: | 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]]. | |||
= | = NpadSystemProperties = | ||
This is "nn::hid:: | This is "nn::hid::NpadSystemProperties". This is a 64-bit flag. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | |- | ||
! | ! Bit | ||
! Description | |||
|- | |- | ||
| 0 | | 0 | ||
| | | IsChargingJoyDual | ||
|- | |- | ||
| 1 | | 1 | ||
| | | IsChargingJoyLeft | ||
|- | |- | ||
| 2 | | 2 | ||
| | | IsChargingJoyRight | ||
|- | |- | ||
| 3 | | 3 | ||
| | | IsPoweredJoyDual | ||
|- | |- | ||
| 4 | | 4 | ||
| | | IsPoweredJoyLeft | ||
|- | |- | ||
| 5 | | 5 | ||
| | | IsPoweredJoyRight | ||
|- | |- | ||
| 9 | | 9 | ||
| | | IsUnsuportedButtonPressedOnNpadSystem | ||
|- | |- | ||
| 10 | | 10 | ||
| | | IsUnsuportedButtonPressedOnNpadSystemExt | ||
|- | |- | ||
| 11 | | 11 | ||
| | | IsAbxyButtonOriented | ||
|- | |- | ||
| 12 | | 12 | ||
| | | IsSlSrButtonOriented | ||
|- | |- | ||
| 13 | | 13 | ||
| | | [4.0.0+] IsPlusAvailable | ||
|- | |- | ||
| 14 | | 14 | ||
| | | [4.0.0+] IsMinusAvailable | ||
|- | |- | ||
| 15 | | 15 | ||
| | | [8.0.0+] IsDirectionalButtonsAvailable | ||
|} | |||
= NpadSystemButtonPropertiesSet = | |||
This is "nn::hid::detail::NpadSystemButtonPropertiesSet". This is a BitFlagSet object for [[#NpadSystemButtonProperties]]. | |||
= NpadSystemButtonProperties = | |||
This is "nn::hid::NpadSystemButtonProperties". This is a 32-bit flag. | |||
{| class="wikitable" border="1" | |||
|- | |- | ||
! Bit | |||
! Description | |||
|- | |- | ||
| | | 0 | ||
| | | IsUnintendedHomeButtonInputProtectionEnabled | ||
|} | |} | ||
= | = AppletFooterUiAttributesSet = | ||
This is "nn::hid:: | This is "nn::hid::system::AppletFooterUiAttributesSet". This is a BitFlagSet object for [[#AppletFooterUiAttribute]]. | ||
= UniquePadType = | |||
This is "nn::hid::system::UniquePadType". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | ! Value | ||
! Description | ! Description | ||
|- | |- | ||
| 0 | | 0 || Embedded | ||
| | |||
|- | |- | ||
| | | 1 || FullKeyController | ||
| | |||
|- | |- | ||
| | | 2 || RightController | ||
| | |||
|- | |- | ||
| | | 3 || LeftController | ||
| | |||
|- | |- | ||
| | | 4 || DebugPadController | ||
| | |} | ||
= 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. | |||
= UniquePadId = | |||
This is "nn::hid::system::UniquePadId". This is a 8 byte value. | |||
= AnalogStickManualCalibrationStage = | |||
This is "nn::hid::system::AnalogStickManualCalibrationStage". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Value | ! Value | ||
! Description | ! 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 | ||
|} | |||
= NpadJoyHoldType = | |||
This is "nn::hid::NpadJoyHoldType". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |- | ||
| | | 0 || Vertical | ||
|- | |- | ||
| | | 1 || Horizontal | ||
|} | |||
= NpadJoyDeviceType = | |||
This is "nn::hid::NpadJoyDeviceType". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |- | ||
| | | 0 || Left | ||
|- | |- | ||
| | | 1 || Right | ||
|} | |||
= NpadHandheldActivationMode = | |||
This is "nn::hid::NpadHandheldActivationMode". | |||
This controls how many joycons must be attached for handheld mode to be triggered (Dual = 2, Single = 1, None = 0). | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |- | ||
| | | 0 || Dual | ||
|- | |- | ||
| | | 1 || Single | ||
|- | |- | ||
| | | 2 || None | ||
|} | |} | ||
= | = NpadJoyAssignmentMode = | ||
This is "nn::hid:: | This is "nn::hid::NpadJoyAssignmentMode". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Value | |||
! Description | |||
|- | |- | ||
| 0 || Dual | |||
|- | |- | ||
| | | 1 || Single | ||
| | |||
| | |||
|} | |} | ||
= | = NpadCommunicationMode = | ||
This is "nn::hid:: | This is "nn::hid::NpadCommunicationMode". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Value | |||
! Description | |||
|- | |- | ||
| 0 || 5ms | |||
|- | |- | ||
| | | 1 || 10ms | ||
|- | |- | ||
| | | 2 || 15ms | ||
|- | |- | ||
| | | 3 || Default | ||
|} | |} | ||
= | = AppletDetailedUiType = | ||
This is "nn::hid:: | This is "nn::hid::system::AppletDetailedUiType". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Value | |||
! Description | |||
|- | |||
| 0x00000000 || None | |||
|- | |- | ||
| 0x01000000 || HandheldNone | |||
|- | |- | ||
| | | 0x02000000 || HandheldJoyConLeftOnly | ||
|- | |- | ||
| | | 0x02000001 || HandheldLarkHvc1Only | ||
|- | |- | ||
| | | 0x02000002 || HandheldLarkNesLeftOnly | ||
|- | |- | ||
| | | 0x03000000 || HandheldJoyConRightOnly | ||
|- | |- | ||
| 0x03000001 || HandheldLarkHvc2Only | |||
|- | |- | ||
| | | 0x03000002 || HandheldLarkNesRightOnly | ||
|- | |- | ||
| | | 0x04000000 || HandheldJoyConLeftJoyConRight | ||
|- | |- | ||
| | | 0x04000001 || HandheldJoyConLeftLarkHvc2 | ||
|- | |- | ||
| | | 0x04000002 || HandheldJoyConLeftLarkNesRight | ||
|- | |- | ||
| 0x04000003 || HandheldLarkHvc1JoyConRight | |||
|- | |- | ||
| | | 0x04000004 || HandheldLarkHvc1LarkHvc2 | ||
|- | |- | ||
| | | 0x04000005 || HandheldLarkHvc1LarkNesRight | ||
|- | |- | ||
| | | 0x04000006 || HandheldLarkNesLeftJoyConRight | ||
|- | |- | ||
| | | 0x04000007 || HandheldLarkNesLeftLarkHvc2 | ||
|- | |- | ||
| | | 0x04000008 || HandheldLarkNesLeftLarkNesRight | ||
|- | |- | ||
| | | 0x05000000 || JoyDual | ||
|- | |- | ||
| | | 0x06000000 || JoyDualLeftOnly | ||
|- | |- | ||
| | | 0x07000000 || JoyDualRightOnly | ||
| | |- | ||
| 0x08000000 || JoyLeftHorizontal | |||
|- | |||
| 0x09000000 || JoyLeftVertical | |||
|- | |||
| 0x0A000000 || JoyRightHorizontal | |||
|- | |||
| 0x0B000000 || JoyRightVertical | |||
|- | |||
| 0x0C000000 || SwitchProController | |||
|- | |||
| 0x0D000000 || CompatibleProController | |||
|- | |||
| 0x0E000000 || CompatibleJoyCon | |||
|- | |||
| 0x0F000000 || LarkHvc1 | |||
|- | |||
| 0x10000000 || LarkHvc2 | |||
|- | |||
| 0x11000000 || LarkNesLeft | |||
|- | |||
| 0x12000000 || LarkNesRight | |||
|- | |- | ||
| 0x13000000 || LuciaU | |||
|- | |- | ||
| | | 0x13000001 || LuciaJ | ||
| | |||
| | |||
|- | |- | ||
| | | 0x13000002 || LuciaE | ||
| | |||
| | |||
|- | |- | ||
| | | 0x14000000 || Verification | ||
| | |||
| | |||
|- | |- | ||
| | | 0xFFFFFFFF || Unknown | ||
| | |||
| | |||
|} | |} | ||
= | = AppletFooterUiType = | ||
This is "nn::hid:: | This is "nn::hid::system::AppletFooterUiType". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Value | ! Value | ||
! Description | ! Description | ||
|- | |- | ||
| 0 || | | 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 | ||
|} | |} | ||
= | = NpadIdType = | ||
This is "nn::hid:: | This is "nn::hid::NpadIdType". This is the controller index used in [[#SharedMemoryFormat|sharedmem]]. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 6,953: | Line 7,078: | ||
! Description | ! Description | ||
|- | |- | ||
| 0 || | | 0x0 || No1 | ||
|- | |- | ||
| 1 || | | 0x1 || No2 | ||
|- | |- | ||
| 2 || | | 0x2 || No3 | ||
|} | |- | ||
| 0x3 || No4 | |||
= | |- | ||
This is "nn::hid:: | | 0x4 || No5 | ||
|- | |||
= | | 0x5 || No6 | ||
This is "nn::hid:: | |- | ||
| 0x6 || No7 | |||
{| class="wikitable" border="1" | |- | ||
|- | | 0x7 || No8 | ||
! Offset || Size || Description | |- | ||
|- | | 0x10 || Other | ||
| 0x0 || 0x4 || | |- | ||
|- | | 0x20 || Handheld | ||
| 0x4 || 0x4 || Result | |} | ||
|- | |||
| 0x8 || 0x140 || Buffer for [[#GetPalmaOperationInfo]]. | = NpadInterfaceType = | ||
|} | This is "nn::hid::NpadInterfaceType". | ||
= PalmaFrModeType = | {| class="wikitable" border="1" | ||
This is "nn::hid::PalmaFrModeType". | ! Value | ||
! Description | |||
= PalmaApplicationSectionAccessBuffer = | |- | ||
This is "nn::hid::PalmaApplicationSectionAccessBuffer". This is a 0x100-byte struct. | | 1 || Bluetooth | ||
|- | |||
= PalmaActivityEntry = | | 2 || Rail | ||
This is "nn::hid::PalmaActivityEntry". | |- | ||
| 3 || USB | |||
{| class="wikitable" border="1" | |- | ||
|- | | 4 || Unknown | ||
! Offset || Size || Description | |} | ||
|- | |||
| 0x0 || 0x2 || | = NpadLarkType = | ||
|- | This is "nn::hid::NpadLarkType". | ||
| 0x2 || 0x2 || Padding | |||
|- | {| class="wikitable" border="1" | ||
| 0x4 || 0x4 || | ! Value | ||
|- | ! Description | ||
| 0x8 || 0x2 || | |- | ||
|} | | 0 || Invalid | ||
|- | |||
= PalmaFeature = | | 1 || H1 | ||
This is "nn::hid::PalmaFeature". | |- | ||
| 2 || H2 | |||
= AbstractedPadState = | |- | ||
{| class="wikitable" border="1" | | 3 || NL | ||
|- | |- | ||
! Offset || Size || Description | | 4 || NR | ||
|- | |} | ||
| 0x0 || 0x4 || Type, only 1 bit can be set. Converted to [[#HdlsDeviceInfo]]::type internally by [[#SetAutoPilotVirtualPadState]]. | |||
|- | = NpadLuciaType = | ||
| 0x4 || 0x1 || Flags. [[#SetAutoPilotVirtualPadState]] only uses bit0: when clear it will skip using the rest of the input and run [[#UnsetAutoPilotVirtualPadState]] internally. | This is "nn::hid::NpadLuciaType". | ||
|- | |||
| 0x5 || 0x3 || Padding | {| class="wikitable" border="1" | ||
! Value | |||
! Description | |||
|- | |||
| 0 || Invalid | |||
|- | |||
| 1 || J | |||
|- | |||
| 2 || E | |||
|- | |||
| 3 || U | |||
|} | |||
= 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 | |||
|} | |||
= DeviceHandle = | |||
This is "nn::xcd::DeviceHandle". This is a 8 byte value. | |||
= DeviceType = | |||
This is "nn::hid::system::DeviceType". | |||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
|- | |||
| 0 | |||
| FullKey | |||
|- | |||
| 1 | |||
| DebugPad | |||
|- | |||
| 2 | |||
| HandheldLeft | |||
|- | |||
| 3 | |||
| HandheldRight | |||
|- | |||
| 4 | |||
| JoyLeft | |||
|- | |||
| 5 | |||
| JoyRight | |||
|- | |||
| 6 | |||
| Palma | |||
|- | |||
| 7 | |||
| LarkHvcLeft | |||
|- | |||
| 8 | |||
| LarkHvcRight | |||
|- | |||
| 9 | |||
| LarkNesLeft | |||
|- | |||
| 10 | |||
| LarkNesRight | |||
|- | |||
| 11 | |||
| HandheldLarkHvcLeft | |||
|- | |||
| 12 | |||
| HandheldLarkHvcRight | |||
|- | |||
| 13 | |||
| HandheldLarkNesLeft | |||
|- | |||
| 14 | |||
| HandheldLarkNesRight | |||
|- | |||
| 15 | |||
| Lucia | |||
|- | |||
| 16-30 | |||
| Reserved | |||
|- | |||
| 31 | |||
| System | |||
|} | |||
= DeviceTypeInternal = | |||
This is "nn::hid::detail::DeviceTypeInternal". | |||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
|- | |||
| 0-7 | |||
| BIT(N*4+0) = Pro Controller, BIT(N*4+1) = Joy-Con Left, BIT(N*4+2) = Joy-Con Right, BIT(N*4+3) = invalid. Where N is 0-1. | |||
|- | |||
| 8-10 | |||
| Pro Controller | |||
|- | |||
| 11 | |||
| Famicom left controller | |||
|- | |||
| 12 | |||
| Famicom right controller (with microphone) | |||
|- | |||
| 13 | |||
| NES left controller | |||
|- | |||
| 14 | |||
| NES right controller | |||
|- | |||
| 15-16 | |||
| Invalid | |||
|- | |||
| 17 | |||
| Generic external controller | |||
|- | |||
| 18-20 | |||
| Invalid | |||
|- | |||
| 21-23 | |||
| Generic controller | |||
|} | |||
[9.0.0+] This is "nn::hidtypes::DeviceType". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! [[#DeviceType|DeviceType]] | |||
! [[#UniquePadType|UniquePadType]] | |||
! Description | |||
|- | |||
| 1 || JoyRight, HandheldRight || JoyRight || Joy-Con right controller | |||
|- | |||
| 2 || JoyLeft, HandheldLeft || JoyLeft || Joy-Con left controller | |||
|- | |||
| 3 || FullKey || FullKey || Pro Controller | |||
|- | |||
| 4 || JoyLeft || JoyLeft || Reserved | |||
|- | |||
| 5 || JoyRight || JoyRight || Reserved | |||
|- | |||
| 6 || FullKey || FullKey || Reserved | |||
|- | |||
| 7 || LarkHvcLeft, HandheldLarkHvcLeft || JoyLeft || Famicom left controller | |||
|- | |||
| 8 || LarkHvcRight, HandheldLarkHvcRight || JoyRight || Famicom right controller (with microphone) | |||
|- | |||
| 9 || LarkNesLeft, HandheldLarkNesLeft || JoyLeft || NES left controller | |||
|- | |||
| 10 || LarkNesRight, HandheldLarkNesRight || JoyRight || NES right controller | |||
|- | |||
| 11 || Lucia || FullKey || SNES controller | |||
|- | |||
| 12 || Palma || Other || Poké Ball Plus controller | |||
|- | |||
| 13 || FullKey || FullKey || Gc controller | |||
|- | |||
| 14 || HandheldLeft || JoyLeft || Reserved | |||
|- | |||
| 15 || FullKey || FullKey || Reserved | |||
|- | |||
| 16 || FullKey || FullKey || Reserved | |||
|- | |||
| 17 || DebugPad || DebugPad || Debug controller | |||
|- | |||
| 18 || HandheldRight || JoyRight || Reserved | |||
|- | |||
| 19 || System || Other || Unknown (has [[#NpadStyleTag|NpadFullKey]] style tag) | |||
|- | |||
| 20 || System || Other || Unknown (has [[#NpadStyleTag|NpadJoyDual]] style tag) | |||
|- | |||
| 21 || System || Other || Unknown (has [[#NpadStyleTag|NpadJoyDual]] style tag) | |||
|} | |||
= NpadPowerInfo = | |||
This is "nn::hid::system::NpadPowerInfo". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x1 | |||
| IsPowered | |||
|- | |||
| 0x1 | |||
| 0x1 | |||
| IsCharging | |||
|- | |||
| 0x2 | |||
| 0x6 | |||
| Reserved | |||
|- | |||
| 0x8 | |||
| 0x6 | |||
| [[#BatteryLevel|BatteryLevel]] | |||
|} | |||
= BatteryLevel = | |||
This is "nn::hid::system::NpadBatteryLevel". This is a 4 byte value. | |||
= ConsoleSixAxisSensorHandle = | |||
This is "nn::hid::ConsoleSixAxisSensorHandle". This is a 4-byte struct with 4-byte alignment. | |||
sdknso GetConsoleSixAxisSensorHandle always returns a handle with value 0x13. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Description | |||
|- | |||
| 0x0 || 0x4 || TypeValue | |||
|- | |||
| 0x0 || 0x1 || | |||
|- | |||
| 0x1 || 0x1 || | |||
|} | |||
= SixAxisSensorHandle = | |||
This is "nn::hid::SixAxisSensorHandle". This is a 4-byte struct with 4-byte alignment. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Description | |||
|- | |||
| 0x0 || 0x4 || TypeValue | |||
|- | |||
| 0x0 || 0x1 || NpadStyleIndex | |||
|- | |||
| 0x1 || 0x1 || [[#NpadIdType|PlayerNumber]] | |||
|- | |||
| 0x2 || 0x1 || DeviceIdx | |||
|} | |||
= VibrationDeviceHandle = | |||
This is "nn::hid::VibrationDeviceHandle". This is a 4-byte struct with 4-byte alignment. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Description | |||
|- | |||
| 0x0 || 0x4 || TypeValue | |||
|- | |||
| 0x0 || 0x1 || NpadStyleIndex | |||
|- | |||
| 0x1 || 0x1 || [[#NpadIdType|PlayerNumber]] | |||
|- | |||
| 0x2 || 0x1 || DeviceIdx | |||
|} | |||
= VibrationDeviceInfo = | |||
This is "nn::hid::VibrationDeviceInfo" / "nn::hid::VibrationDeviceInfoForIpc". This is a 0x8-byte struct. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Description | |||
|- | |||
| 0x0 || 0x4 || [[#VibrationDeviceType|DeviceType]] | |||
|- | |||
| 0x4 || 0x4 || [[#VibrationDevicePosition|Position]] | |||
|} | |||
= VibrationDeviceType = | |||
This is "nn::hid::VibrationDeviceType". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Unknown | |||
|- | |||
| 1 || LinearResonantActuator | |||
|- | |||
| 2 || GcErm | |||
|} | |||
= VibrationDevicePosition = | |||
This is "nn::hid::VibrationDevicePosition". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || None | |||
|- | |||
| 1 || Left | |||
|- | |||
| 2 || Right | |||
|} | |||
= VibrationValue = | |||
This is "nn::hid::VibrationValue". This is a 0x10-byte struct, which contains 4 float values. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x4 | |||
| AmplitudeLow | |||
|- | |||
| 0x4 | |||
| 0x4 | |||
| FrequencyLow | |||
|- | |||
| 0x8 | |||
| 0x4 | |||
| AmplitudeHigh | |||
|- | |||
| 0xC | |||
| 0x4 | |||
| FrequencyHigh | |||
|} | |||
= VibrationGcErmCommand = | |||
This is "nn::hid::VibrationGcErmCommand". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Name | |||
! Description | |||
|- | |||
| 0 || Stop || Stops the vibration with a decay phase. | |||
|- | |||
| 1 || Start || Starts the vibration. | |||
|- | |||
| 2 || StopHard || Stops the vibration immediately, with no decay phase. | |||
|} | |||
= AccelerometerPlayMode = | |||
This is "nn::hid::debug::AccelerometerPlayMode" (pre-10.0.0 this is "nn::hid::AccelerometerPlayMode"). | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Loose | |||
|- | |||
| 1 || Tight | |||
|} | |||
= GyroscopeZeroDriftMode = | |||
This is "nn::hid::GyroscopeZeroDriftMode". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Loose | |||
|- | |||
| 1 || Standard | |||
|- | |||
| 2 || Tight | |||
|} | |||
= PalmaConnectionHandle = | |||
This is "nn::hid::PalmaConnectionHandle". This is a 0x8-byte struct with 8-byte alignment. | |||
= PalmaOperationInfo = | |||
This is "nn::hid::PalmaOperationInfo". This is a 0x148-byte struct. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Description | |||
|- | |||
| 0x0 || 0x4 || [[#PalmaOperationType]] | |||
|- | |||
| 0x4 || 0x4 || Result | |||
|- | |||
| 0x8 || 0x140 || Buffer for [[#GetPalmaOperationInfo]]. | |||
|} | |||
= PalmaOperationType = | |||
This is "nn::hid::PalmaOperationType". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || PlayActivity | |||
|- | |||
| 1 || SetFrModeType | |||
|- | |||
| 2 || ReadStep | |||
|- | |||
| 3 || EnableStep | |||
|- | |||
| 4 || ResetStep | |||
|- | |||
| 5 || ReadApplicationSection | |||
|- | |||
| 6 || WriteApplicationSection | |||
|- | |||
| 7 || ReadUniqueCode | |||
|- | |||
| 8 || SetUniqueCodeInvalid | |||
|- | |||
| 9 || WriteActivityEntry | |||
|- | |||
| 10 || WriteRgbLedPatternEntry | |||
|- | |||
| 11 || WriteWaveEntry | |||
|- | |||
| 12 || ReadDataBaseIdentificationVersion | |||
|- | |||
| 13 || WriteDataBaseIdentificationVersion | |||
|- | |||
| 14 || SuspendFeature | |||
|- | |||
| [[5.1.0]]+ 15 || ReadPlayLog | |||
|- | |||
| [[5.1.0]]+ 16 || ResetPlayLog | |||
|} | |||
= PalmaFrModeType = | |||
This is "nn::hid::PalmaFrModeType". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Off | |||
|- | |||
| 1 || B01 | |||
|- | |||
| 2 || B02 | |||
|- | |||
| 3 || B03 | |||
|- | |||
| 4 || Downloaded | |||
|} | |||
= PalmaApplicationSectionAccessBuffer = | |||
This is "nn::hid::PalmaApplicationSectionAccessBuffer". This is a 0x100-byte struct. | |||
= PalmaActivityEntry = | |||
This is "nn::hid::PalmaActivityEntry". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Description | |||
|- | |||
| 0x0 || 0x2 || RgbLedPatternIndex. | |||
|- | |||
| 0x2 || 0x2 || Padding | |||
|- | |||
| 0x4 || 0x4 || [[#PalmaWaveSet|WaveSet]]. | |||
|- | |||
| 0x8 || 0x2 || WaveIndex. | |||
|} | |||
= PalmaWaveSet = | |||
This is "nn::hid::PalmaWaveSet". | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Small | |||
|- | |||
| 1 || Medium | |||
|- | |||
| 2 || Large | |||
|} | |||
= PalmaFeature = | |||
This is "nn::hid::PalmaFeature". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Bit | |||
! Description | |||
|- | |||
| 0 | |||
| FrMode | |||
|- | |||
| 1 | |||
| RumbleFeedback | |||
|- | |||
| 2 | |||
| Step | |||
|- | |||
| 3 | |||
| MuteSwitch | |||
|- | |||
|} | |||
= AbstractedPadState = | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Description | |||
|- | |||
| 0x0 || 0x4 || Type, only 1 bit can be set. Converted to [[#HdlsDeviceInfo]]::type internally by [[#SetAutoPilotVirtualPadState]]. | |||
|- | |||
| 0x4 || 0x1 || Flags. [[#SetAutoPilotVirtualPadState]] only uses bit0: when clear it will skip using the rest of the input and run [[#UnsetAutoPilotVirtualPadState]] internally. | |||
|- | |||
| 0x5 || 0x3 || Padding | |||
|- | |- | ||
| 0x8 || 0x4 || RGBA Single Body Color | | 0x8 || 0x4 || RGBA Single Body Color | ||
Line 7,092: | Line 7,755: | ||
| 0x8 | | 0x8 | ||
| 0x8 | | 0x8 | ||
| [[#AnalogStickState| | | [[#AnalogStickState|AnalogStickL]] | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
| 0x8 | | 0x8 | ||
| [[#AnalogStickState| | | [[#AnalogStickState|AnalogStickR]] | ||
|} | |} | ||
Line 7,126: | Line 7,789: | ||
| 0x10 | | 0x10 | ||
| 0x4 | | 0x4 | ||
| | | WheelDelta | ||
|- | |- | ||
| 0x14 | | 0x14 | ||
| 0x4 | | 0x4 | ||
| | | [[#MouseButtonSet|Buttons]] | ||
|- | |- | ||
| 0x18 | | 0x18 | ||
| 0x4 | | 0x4 | ||
| [[#MouseAttributeSet|Attributes]] | | [[#MouseAttributeSet|Attributes]] | ||
Line 7,312: | Line 7,971: | ||
| 0x21 || 0x3 || Padding | | 0x21 || 0x3 || Padding | ||
|} | |} | ||
= DebugRegisteredDevice = | |||
This is "nn::hid::debug::RegisteredDevice". This is a 0x58-byte struct with 2-byte alignment. | |||
= RegisteredDevice = | |||
This is "nn::hid::system::RegisteredDevice". This is a 0x68-byte struct with 4-byte alignment. | |||
= NotificationLedPattern = | = NotificationLedPattern = | ||
Line 7,694: | Line 8,359: | ||
| 0x28 || 0x8 || [[#AnalogStickAssignment|HardwareStickR]] | | 0x28 || 0x8 || [[#AnalogStickAssignment|HardwareStickR]] | ||
|} | |} | ||
= StorageName = | |||
This is "nn::hidconfig::StorageName". This is a 0x81-byte struct. | |||
This is an UTF-8 NUL-terminated name string. | |||
= IrCameraHandle = | = IrCameraHandle = |