diff --git a/nx/include/switch/services/set.h b/nx/include/switch/services/set.h index 95c78957..66cbd787 100644 --- a/nx/include/switch/services/set.h +++ b/nx/include/switch/services/set.h @@ -59,6 +59,12 @@ typedef enum { SetSysPlatformRegion_China = 2, } SetSysPlatformRegion; +/// TouchScreenMode, for "Touch-Screen Sensitivity". +typedef enum { + SetSysTouchScreenMode_Stylus = 0, ///< Stylus. + SetSysTouchScreenMode_Standard = 1, ///< Standard, the default. +} SetSysTouchScreenMode; + /// Structure returned by \ref setsysGetFirmwareVersion. typedef struct { u8 major; @@ -420,9 +426,9 @@ Result setsysSetRequiresRunRepairTimeReviser(bool flag); /** * @brief Gets the \ref SetSysPlatformRegion. * @note Only available on [9.0.0+]. - * @param[out] region \ref SetSysPlatformRegion + * @param[out] out \ref SetSysPlatformRegion */ -Result setsysGetPlatformRegion(SetSysPlatformRegion *region); +Result setsysGetPlatformRegion(SetSysPlatformRegion *out); /** * @brief Sets the \ref SetSysPlatformRegion. @@ -445,3 +451,17 @@ Result setsysGetHomeMenuSchemeModel(u32 *out); * @param[out] out Output flag. */ Result setsysGetMemoryUsageRateFlag(bool *out); + +/** + * @brief Gets the \ref SetSysTouchScreenMode. + * @note Only available on [9.0.0+]. + * @param[out] out \ref SetSysTouchScreenMode + */ +Result setsysGetTouchScreenMode(SetSysTouchScreenMode *out); + +/** + * @brief Sets the \ref SetSysTouchScreenMode. + * @note Only available on [9.0.0+]. + * @param[in] mode \ref SetSysTouchScreenMode + */ +Result setsysSetTouchScreenMode(SetSysTouchScreenMode mode); diff --git a/nx/source/services/set.c b/nx/source/services/set.c index 2d7bb84f..0a5c8d8d 100644 --- a/nx/source/services/set.c +++ b/nx/source/services/set.c @@ -498,13 +498,13 @@ Result setsysGetHomeMenuScheme(SetSysHomeMenuScheme *out) { return serviceDispatchOut(&g_setsysSrv, 174, *out); } -Result setsysGetPlatformRegion(SetSysPlatformRegion *region) { +Result setsysGetPlatformRegion(SetSysPlatformRegion *out) { if (hosversionBefore(9,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); u32 tmp=0; Result rc = _setCmdNoInOutU32(&g_setsysSrv, &tmp, 183); - if (R_SUCCEEDED(rc) && region) *region = tmp; + if (R_SUCCEEDED(rc) && out) *out = tmp; return rc; } @@ -528,3 +528,20 @@ Result setsysGetMemoryUsageRateFlag(bool *out) { return _setCmdNoInOutBool(&g_setsysSrv, out, 186); } + +Result setsysGetTouchScreenMode(SetSysTouchScreenMode *out) { + if (hosversionBefore(9,0,0)) + return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); + + u32 tmp=0; + Result rc = _setCmdNoInOutU32(&g_setsysSrv, &tmp, 187); + if (R_SUCCEEDED(rc) && out) *out = tmp; + return rc; +} + +Result setsysSetTouchScreenMode(SetSysTouchScreenMode mode) { + if (hosversionBefore(9,0,0)) + return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); + + return _setCmdInU32NoOut(&g_setsysSrv, mode, 188); +}