mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-27 00:28:14 +00:00
AppMetadata throws length_error for a title or title ID that does not fit its buffer, which the title ID lookup did not catch, so a homebrew title with a long ID made sceConvertKeycodeGetImeKeyboardType throw instead of using the PS5 fallback. Catch it with the other metadata failures and cover oversized, malformed and missing metadata at the export. sceUserServiceGetKeyboardType also gets a test that a malformed ANYPS5_LANGUAGE is rejected with the output left untouched, and the debt entries say so.
1.4 KiB
1.4 KiB
libSceConvertKeycode technical debt
Functional
- sceConvertKeycodeGetVirtualKeycode and
sceConvertKeycodeGetCharacter: layouts 31–39 throw until the guest platform and compiled SDK version are exposed.GetVirtualKeycodealso throws for version-dependent Y/Z mappings in layouts 2, 3 and 12. Mapping tables and modifier behavior are recovered; no SDK version is guessed. - sceConvertKeycodeGetImeKeyboardType: implemented exactly as the repository owner (boykopovar) specified the UserService keyboard type (plus the Japanese variant for type 37 and the Traditional Chinese variant for type 39) to IME keyboard type table, the SDK compatibility rules (38 becomes 4 for PS5 SDK below 0x06000000 or PS4 SDK below 0x10000000; 39 becomes 29 for PS5 SDK below 0x08000000 and for every PS4 client), the error codes and the unmatched-type result (success, IME type 0). The PS4/PS5 client rule reads the title ID prefix from
param.sfoorparam.json(CUSAis PS4); a missing, malformed or oversized ID or title, as in homebrew, is treated as PS5. Reliable detection inspects the originaleboot.bin, which only the relinker reads, so it is not done. UserService reports the keyboard type of the configured system language, so the function returns the owner's IME type for that language (see libSceUserService.md).