From b4144c8ffca00dd92e1b62b69ad3de1091850cf3 Mon Sep 17 00:00:00 2001 From: amazedturnip Date: Wed, 4 Nov 2026 04:37:11 -0600 Subject: [PATCH] test(libSceConvertKeycode): cover the IME and alternate layouts of keyboard types 23, 26, 29 and 39 and the Swiss caps lock letters Co-Authored-By: Claude Opus 5.5 --- core/libs/tests/GuestConvertKeycode.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/core/libs/tests/GuestConvertKeycode.cpp b/core/libs/tests/GuestConvertKeycode.cpp index a68c5deedc..bb93ef6e77 100644 --- a/core/libs/tests/GuestConvertKeycode.cpp +++ b/core/libs/tests/GuestConvertKeycode.cpp @@ -249,6 +249,24 @@ int main() { Require(sceConvertKeycodeGetCharacter(33, 0x4000300, 30, &character) == 0 && character == 0x200F); Require(sceConvertKeycodeGetCharacter(28, 0, 31, &character) == 0 && character == u'y'); Require(sceConvertKeycodeGetCharacter(29, 0, 39, &character) == 0 && character == u'z'); + Require(sceConvertKeycodeGetCharacter(4, 0, 23, &character) == 0 && character == u'a'); + Require(sceConvertKeycodeGetCharacter(4, 0x10000000, 23, &character) == 0 && character == 0xFF41); + Require(sceConvertKeycodeGetCharacter(4, 0x4000000, 23, &character) == 0 && character == 0x3061); + Require(sceConvertKeycodeGetCharacter(4, 0xC000000, 23, &character) == 0 && character == 0xFF81); + Require(sceConvertKeycodeGetCharacter(4, 0x1C000000, 23, &character) == 0 && character == 0x30C1); + Require(sceConvertKeycodeGetCharacter(4, 0x4000000, 26, &character) == 0 && character == 0x3107); + Require(sceConvertKeycodeGetCharacter(4, 0x10000000, 26, &character) == 0 && character == 0xFF41); + for (const std::uint32_t type : {29u, 39u}) { + Require(sceConvertKeycodeGetCharacter(4, 0, type, &character) == 0 && character == u'a'); + Require(sceConvertKeycodeGetCharacter(4, 0x4000000, type, &character) == 0 && character == 0x65E5); + Require(sceConvertKeycodeGetCharacter(5, 0x4000000, type, &character) == 0 && character == 0x6708); + } + Require(sceConvertKeycodeGetCharacter(52, 0x20000, 3, &character) == 0 && character == 196); + Require(sceConvertKeycodeGetCharacter(52, 0x20200, 3, &character) == 0 && character == 192); + Require(sceConvertKeycodeGetCharacter(51, 0x20000, 3, &character) == 0 && character == 214); + Require(sceConvertKeycodeGetCharacter(51, 0x20200, 3, &character) == 0 && character == 201); + Require(sceConvertKeycodeGetCharacter(99, 0, 4, &character) == 0 && character == 0); + Require(sceConvertKeycodeGetCharacter(99, 0x10000, 4, &character) == 0 && character == u'.'); for (std::uint32_t layout = 1; layout <= 30; ++layout) { for (std::uint16_t key : {83, 224, 225, 226, 227, 228, 229, 230, 231}) { Require(sceConvertKeycodeGetCharacter(key, 0xFFFFFFFFu, layout, &character) == 0 && character == 0);