Commit Graph
6 Commits
Author SHA1 Message Date
Yunus Shaikh 163f88e7fa feat(libSceImeDialog): drive the dialog from the pad
sceImeDialogInit opens the pad keyboard beside the host-text sink and
registers the pad sink and the keyboard view; Finish, Term and
ForceClose release all three. Pad edits go through the same text,
caret and cap as host text: Done copies the text and its terminator
and ends Ok, Cancel ends UserCanceled with the buffer untouched, as
Enter and Escape do. Typed characters end a one-shot shift only when
they fit.

The options follow the dialog's parameters: the multiline option,
the supported languages' currency, the enter label, the extended
parameters' starting page and shift lock (SET_PRIORITY,
PRIORITY_SHIFT), and disable_device, whose controller bit keeps the
pad from editing.
2026-10-27 05:19:41 +01:00
boykopovar f38d29fd08 refactor(sdk): add canonical headers for remaining libraries 2026-10-24 23:17:42 +03:00
al3w0f205 c2042431e5 test(libSceImeDialog): cover panel dimensions and position validation 2026-10-23 11:31:17 -05:00
Yossi Yadgar 0e82cc6484 test(libSceImeDialog): cover the star state, internal init and panel position 2026-10-21 14:52:11 +03:00
erickerxhalliandClaude Opus 5.5 bdebcbde96 feat(libSceImeDialog): close an open dialog in sceImeDialogForceClose
sceImeDialogForceClose threw. It now closes a running or finished
dialog the way sceImeDialogTerm does, without writing the typed text to
the title's buffer, and returns NOT_IN_USE (0x80bc0107) when no dialog
is open. The behaviour follows shadPS4 and the error code is the one
SharpProspero lists for PS5. The ImeDialog guest test covers each case.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Arbzg9c2DA4DEFKVSvRgYv
2026-10-20 13:39:58 +00:00
RickandClaude Opus 5.5 6c5686d7ea feat(libSceImeDialog): take the dialog's text from the host keyboard
sceImeDialogInit wrote "Slayer" into an empty text buffer and the
dialog finished on the second status poll, so a title never got text
from the user: ProsperoRadio's search typed "Slayer" by itself and
found no station.

The dialog now runs until the user answers on the host keyboard, the
way #4756 made sceImeOpen's panel-less IME take it. While no IME panel
is open, libSceIme hands the game window's text and editing keys to
a sink that the dialog registers. Typing edits the text up to
maxTextLength without splitting a surrogate pair, Enter writes it to
the title's buffer and finishes with end status 0, and Escape finishes
with 1. Abort still finishes with 2. A second Init reports busy, and a
null parameter or buffer or a maximum length outside 1 to 2048 is
refused, as in shadPS4.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-15 19:52:28 +02:00