Commit Graph
22 Commits
Author SHA1 Message Date
Dean 5cb0e8eac9 Merge pull request #12824 from BunnyFl/fix/convertkeycode-keyboard-data-state
fix(libSceConvertKeycode): check key data and fold its modifiers into the state
2026-11-03 05:13:58 +13:00
Dean 46622fff7c Merge pull request #12752 from MarcZX10/feat/language-auto
feat(libSceSystemService): take the console language from the host with ANYPS5_LANGUAGE=auto
2026-11-03 02:39:32 +13:00
BunnyFlandClaude Opus 5.5 3c314f5fb7 test(libSceConvertKeycode): pin the accepted key-data bounds, state bits and check order
Adds the rows suggested in review: a full 16-key report with led 7 and
modifier_key 0xFF, the allowed state bits on layouts 4, 24 and 30, more
rejected state bits, and at SDK 0x03000000 the key-data checks before the
layout check. Every value matches firmware 13.42's module.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 13:46:58 +01:00
BunnyFl 7e382bf7e5 Merge fix/convertkeycode-sdk-layouts into fix/convertkeycode-keyboard-data-state 2026-10-29 13:29:15 +01:00
BunnyFlandClaude Opus 5.5 3cc38e5923 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]>
2026-10-29 13:28:21 +01:00
BunnyFlandClaude Opus 5.5 0740776d54 fix(libSceConvertKeycode): check key data and fold its modifiers into the state
sceConvertKeycodeGetCharacterFromKeyboardData threw for an index outside
the key data, accepted any state bits and converted with the caller's
state only. Firmware 13.42's module returns INVALID_PARAMETER for a
length above 16, an led of 8 or more, a modifier_key of 0x100 or more, a
state bit outside 0x1C000080 or an index outside the key data, before the
layout checks, and converts key_code[index] with
state | modifier_key << 8 | led << 16.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 12:34:44 +01:00
BunnyFlandClaude Opus 5.5 00bde56c33 Merge upstream main into fix/convertkeycode-sdk-layouts
Resolves the debt-entry conflict with #10437 and applies the same layout rules to sceConvertKeycodeGetCharacterFromKeyboardData.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 11:41:11 +01:00
BunnyFlandClaude Opus 5.5 525bc94840 fix(libSceConvertKeycode): apply the SDK rules instead of throwing for layouts 31-39 and Y/Z
GetVirtualKeycode and GetCharacter threw for keyboard layouts 31 to 39,
and GetVirtualKeycode for the Y and Z keys of layouts 2, 3 and 12, which
ended the title. GetImeKeyboardType returns layouts 31 to 37 for seven
system languages, and layout 2 for another.

They now follow firmware 13.42's module: a layout the title's SDK does not
know returns INVALID_KEYBOARD_TYPE, and below PS5 SDK 0x04000000 or PS4
SDK 0x09000000 the Y and Z keys of layouts 2, 3 and 12 are swapped.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 11:14:39 +01:00
MarcZX10 6a080f1a6d test(libSceConvertKeycode): the IME keyboard type follows ANYPS5_LANGUAGE=auto
With auto and a German host locale sceConvertKeycodeGetImeKeyboardType gives
the IME type of German, and a later change of the host locale does not change
it.
2026-10-29 08:51:17 +00:00
InfinitySpeed b0ed32bd6c feat(libSceConvertKeycode): implement sceConvertKeycodeGetCharacterFromKeyboardData 2026-10-28 14:27:07 +01:00
MarcZX10 89af2b225e test(libSceConvertKeycode): check the keyboard type lookup at both int32 limits at compile time
LookUp is constexpr, so static_assert evaluates it for INT32_MIN and INT32_MAX in a constant expression, where signed overflow is an error. With the previous 32-bit subtraction the test file no longer compiles ('overflow in constant expression'); the existing runtime case for 0x80000000 only showed the overflow under UBSan.
2026-10-25 12:31:23 +00:00
boykopovar f38d29fd08 refactor(sdk): add canonical headers for remaining libraries 2026-10-24 23:17:42 +03:00
Dean Galvin 835c2995ed feat(libSceUserService): report the keyboard type of the system language
sceUserServiceGetKeyboardType now returns the keyboard type of the configured
system language from the repository owner's table (languages 0 to 29), with 20
(US English) for a language outside it. The input variants stay 0, the only
value the table gives for Japanese and Traditional Chinese.

sceConvertKeycodeGetImeKeyboardType takes the PS4 client rule from the title ID
prefix (CUSA is PS4); a missing or custom ID is treated as PS5. Tests walk the
owner's table through both calls and the title ID cases; both debt entries
updated.
2026-10-23 22:40:29 +13:00
Dean Galvin 1e869157d0 fix(libSceUserService): report keyboard type 20 (US English) by default
The initial user reported keyboard type 0, which the converter maps to IME type 0
and then rejects, so a title reading the layout still could not use it. Report 20
for sceUserServiceGetKeyboardType, which the owner's table maps to IME keyboard
type 4 (English, US); the Japanese and Traditional Chinese input variants stay 0.
Tests and both debt entries updated.
2026-10-23 19:39:38 +13:00
Dean Galvin f648ad61e2 fix(libSceConvertKeycode): map the user's keyboard type to the IME keyboard type 2026-10-23 18:19:52 +13:00
boykopovar b5dbd377ed fix(keycode): restore layout modifiers and character conversion 2026-10-21 21:48:08 +03:00
boykopovar 0d237011c7 fix(keycode): restore virtual key mappings and argument types 2026-10-21 21:48:07 +03:00
al3w0f205 df0780c623 test(libSceConvertKeycode): cover space, punctuation and keypad keycode mappings 2026-10-19 23:01:34 -05:00
Nithishvelan M 0585eccbca test(libSceConvertKeycode): cover null character buffer in guest test 2026-10-18 14:35:58 +05:30
xxLnolan 127e111048 test(keycode): cover non-US backslash mapping 2026-10-16 20:24:35 +02:00
simonbronkandClaude Opus 5.5 378ac61788 fix(libSceConvertKeycode): ignore the state bit 0x4000000 RE Engine titles pass
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:02:20 +02:00
melihcanandClaude Opus 5.5 0afa191660 test(libSceConvertKeycode): cover sceConvertKeycodeGetImeKeyboardType
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-13 14:59:08 +02:00