mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-22 00:22:57 -05:00
fix(keycode): restore layout modifiers and character conversion
This commit is contained in:
1 parent
0d237011c7
commit
b5dbd377ed
3 files changed
+2218
-55
No files matched your search
@@ -45,38 +45,48 @@ int main() {
|
||||
Require(sceConvertKeycodeGetImeKeyboardType(-1, &type) == invalidUserId);
|
||||
Require(type == 0xFFFFFFFFu);
|
||||
|
||||
Require(sceConvertKeycodeGetImeKeyboardType(0, &type) == 0);
|
||||
Require(type == 0);
|
||||
bool rejected = false;
|
||||
try {
|
||||
sceConvertKeycodeGetImeKeyboardType(0, &type);
|
||||
} catch (const std::runtime_error&) {
|
||||
rejected = true;
|
||||
}
|
||||
Require(rejected && type == 0xFFFFFFFFu);
|
||||
|
||||
type = 0xFFFFFFFFu;
|
||||
Require(sceConvertKeycodeGetImeKeyboardType(1, &type) == 0);
|
||||
Require(type == 0);
|
||||
|
||||
Require(sceConvertKeycodeGetCharacter(0x04, 0, 0, nullptr) == invalidAddress);
|
||||
Require(sceConvertKeycodeGetCharacter(4, 0, 0, nullptr) == invalidAddress);
|
||||
char16_t character = u'?';
|
||||
Require(sceConvertKeycodeGetCharacter(4, 0, 0, &character) == static_cast<int>(0x80BC001Du));
|
||||
Require(character == u'?');
|
||||
Require(sceConvertKeycodeGetCharacter(4, 0, 40, &character) == static_cast<int>(0x80BC001Du));
|
||||
for (std::uint32_t state : {0u, 0x4000000u}) {
|
||||
char16_t character[3] = {u'?', 0, 0};
|
||||
Require(sceConvertKeycodeGetCharacter(0x04, state, 0, character) == 0);
|
||||
Require(character[0] == u'a');
|
||||
Require(sceConvertKeycodeGetCharacter(0x1E, state, 0, character) == 0);
|
||||
Require(character[0] == u'1');
|
||||
Require(sceConvertKeycodeGetCharacter(0x3A, state, 0, character) == 0);
|
||||
Require(character[0] == 0);
|
||||
Require(sceConvertKeycodeGetCharacter(0x64, state, 0, character) == 0);
|
||||
Require(character[0] == u'\\');
|
||||
Require(sceConvertKeycodeGetCharacter(0x32, state, 0, character) == 0);
|
||||
Require(character[0] == 0);
|
||||
Require(sceConvertKeycodeGetCharacter(0x27, state, 0, character) == 0);
|
||||
Require(character[0] == u'0');
|
||||
Require(sceConvertKeycodeGetCharacter(0x2C, state, 0, character) == 0);
|
||||
Require(character[0] == u' ');
|
||||
Require(sceConvertKeycodeGetCharacter(0x2D, state, 0, character) == 0);
|
||||
Require(character[0] == u'-');
|
||||
Require(sceConvertKeycodeGetCharacter(0x54, state, 0, character) == 0);
|
||||
Require(character[0] == u'/');
|
||||
Require(sceConvertKeycodeGetCharacter(0x59, state, 0, character) == 0);
|
||||
Require(character[0] == u'1');
|
||||
Require(sceConvertKeycodeGetCharacter(0x63, state, 0, character) == 0);
|
||||
Require(character[0] == u'.');
|
||||
Require(sceConvertKeycodeGetCharacter(4, state, 4, &character) == 0 && character == u'a');
|
||||
Require(sceConvertKeycodeGetCharacter(30, state, 4, &character) == 0 && character == u'1');
|
||||
Require(sceConvertKeycodeGetCharacter(58, state, 4, &character) == 0 && character == 0);
|
||||
Require(sceConvertKeycodeGetCharacter(65535, state, 4, &character) == 0 && character == 0);
|
||||
}
|
||||
Require(sceConvertKeycodeGetCharacter(4, 0x200, 4, &character) == 0 && character == u'A');
|
||||
Require(sceConvertKeycodeGetCharacter(4, 0x20000, 4, &character) == 0 && character == u'A');
|
||||
Require(sceConvertKeycodeGetCharacter(4, 0x20200, 4, &character) == 0 && character == u'a');
|
||||
Require(sceConvertKeycodeGetCharacter(30, 0x200, 4, &character) == 0 && character == u'!');
|
||||
Require(sceConvertKeycodeGetCharacter(89, 0, 4, &character) == 0 && character == 0);
|
||||
Require(sceConvertKeycodeGetCharacter(89, 0x10000, 4, &character) == 0 && character == u'1');
|
||||
Require(sceConvertKeycodeGetCharacter(89, 0x10200, 4, &character) == 0 && character == u'1');
|
||||
Require(sceConvertKeycodeGetCharacter(4, 0, 9, &character) == 0 && character == u'q');
|
||||
Require(sceConvertKeycodeGetCharacter(28, 0, 2, &character) == 0 && character == u'z');
|
||||
Require(sceConvertKeycodeGetCharacter(20, 0x4000, 2, &character) == 0 && character == u'@');
|
||||
Require(sceConvertKeycodeGetCharacter(47, 0x20000, 3, &character) == 0 && character == 220);
|
||||
Require(sceConvertKeycodeGetCharacter(47, 0x20200, 3, &character) == 0 && character == 200);
|
||||
Require(sceConvertKeycodeGetCharacter(4, 0x4000000, 24, &character) == 0 && character == 0x3141);
|
||||
Require(sceConvertKeycodeGetCharacter(5, 0x4000000, 30, &character) == 0 && character == 1575);
|
||||
Require(sceConvertKeycodeGetCharacter(5, 0x4000200, 30, &character) == 0 && character == 1570);
|
||||
Require(sceConvertKeycodeGetCharacter(30, 0x4000300, 30, &character) == 0 && character == 0x200D);
|
||||
Require(sceConvertKeycodeGetCharacter(31, 0x4000300, 30, &character) == 0 && character == 0x200C);
|
||||
Require(sceConvertKeycodeGetCharacter(32, 0x4000300, 30, &character) == 0 && character == 0x200E);
|
||||
Require(sceConvertKeycodeGetCharacter(33, 0x4000300, 30, &character) == 0 && character == 0x200F);
|
||||
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);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in new issue
Block a user