test(libSceConvertKeycode): cover both sides of each SDK threshold on PS4 and PS5

Adds the boundary rows suggested in review: PS5 SDK 0x03FFFFFF/0x04000000
for Y/Z, 0x05FFFFFF/0x06000000 for layout 38, 0x07FFFFFF/0x08000000 for 39,
and a PS4 run of the cusa title case for 0x04FFFFFF/0x05000000,
0x08FFFFFF/0x09000000, 0x0FFFFFFF/0x10000000 and layout 39. Every expected
value matches firmware 13.42's module.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
BunnyFlandClaude Opus 5.5 committed 2026-10-29 13:28:21 +01:00
1 parent 00bde56c33
commit 3cc38e5923
3 files changed
+47 -2

No files matched your search

+29 -1
View File
@@ -7,7 +7,7 @@
#include <cstdlib>
#include <cstring>
int main() {
int main(int argc, char** argv) {
#ifdef _WIN32
if (_putenv_s("ANYPS5_LANGUAGE", "") != 0) return 2;
#else
@@ -27,5 +27,33 @@ int main() {
if (sceConvertKeycodeGetCharacter(0, 0, 0, &character) != static_cast<int>(0x80BC001Du)) return 1;
if (sceConvertKeycodeGetCharacter(0, 0, 40, &character) != static_cast<int>(0x80BC001Du)) return 1;
if (sceConvertKeycodeGetImeKeyboardType(0x10000000, nullptr) != static_cast<int>(0x80BC0031u)) return 1;
if (argc > 1 && std::strcmp(argv[1], "ps4") == 0) {
constexpr int rejected = static_cast<int>(0x80BC001Du);
KeyboardData keyData{};
keyData.length = 1;
keyData.key_code[0] = 4;
const auto setSdkVersion = [](std::uint32_t version) { std::memcpy(process.data() + 16, &version, sizeof(version)); };
setSdkVersion(0x04FFFFFFu);
virtualKey = 0xABCD;
character = u'?';
if (sceConvertKeycodeGetVirtualKeycode(28, 31, &virtualKey) != rejected || virtualKey != 0xABCD) return 1;
if (sceConvertKeycodeGetCharacter(28, 0, 31, &character) != rejected || character != u'?') return 1;
if (sceConvertKeycodeGetCharacterFromKeyboardData(&keyData, 0, 0, 31, &character) != rejected || character != u'?') return 1;
setSdkVersion(0x05000000u);
if (sceConvertKeycodeGetVirtualKeycode(28, 31, &virtualKey) != 0 || virtualKey != 89) return 1;
if (sceConvertKeycodeGetVirtualKeycode(28, 38, &virtualKey) != rejected) return 1;
setSdkVersion(0x08FFFFFFu);
if (sceConvertKeycodeGetVirtualKeycode(28, 2, &virtualKey) != 0 || virtualKey != 89) return 1;
setSdkVersion(0x09000000u);
if (sceConvertKeycodeGetVirtualKeycode(28, 2, &virtualKey) != 0 || virtualKey != 90) return 1;
setSdkVersion(0x0FFFFFFFu);
if (sceConvertKeycodeGetVirtualKeycode(28, 38, &virtualKey) != rejected) return 1;
setSdkVersion(0x10000000u);
if (sceConvertKeycodeGetVirtualKeycode(28, 38, &virtualKey) != 0 || virtualKey != 89) return 1;
setSdkVersion(0xFFFFFFFFu);
if (sceConvertKeycodeGetVirtualKeycode(28, 39, &virtualKey) != rejected) return 1;
if (sceConvertKeycodeGetCharacter(28, 0, 39, &character) != rejected) return 1;
setSdkVersion(sdkVersion);
}
return sceConvertKeycodeGetImeKeyboardType(0x10000000, &type) == 0 && type == 4 ? 0 : 1;
}