7.9 KiB
libSceImeDialog technical debt
Silent stubs
- sceImeDialogInit (libSceImeDialog) draws a keyboard over each flipped frame (KeyboardOverlay) that the first controller drives with shadPS4's bindings, and ImeTextInput forwards host keyboard typing from the game window while no IME panel is open. Text, Backspace, Delete, Left, Right, Home and End edit the text, Enter, R2 or Done accepts it (end status 0) and Escape or Circle cancels (end status 1). The title, placeholder and type are not shown or applied, and line breaks cannot be typed. While the dialog runs, key presses do not reach the keyboard-to-pad bindings of PadInput
Unknown function info
-
sceImeDialogForTestFunction (libSceImeDialog) - declared without parameters to resolve a known import, following shadPS4; not measured on a console and not an ABI claim.
-
sceImeDialogGetCurrentStarState, sceImeDialogInitInternal, sceImeDialogSetPanelPosition (libSceImeDialog) - not measured on a console; signatures and checks follow shadPS4.
sceImeDialogInitInternalrunssceImeDialogInit, as shadPS4's two share one path apart from user flags this library does not keep. There is no movable panel, sosceImeDialogSetPanelPositionnever succeeds:DIALOG_NOT_IN_USEwithout a dialog andIME_SUSPENDINGwhile one is running or finished, the states in which shadPS4 refuses it too. The star state is always 0 -
sceImeDialogForceClose (libSceImeDialog) - not measured on a PS5: its
int (void)signature and behaviour follow shadPS4 (PS4). It closes a running or finished dialog, assceImeDialogTermdoes, without writing the typed text to the title's buffer, which shadPS4 updates while typing and this library only when the text is accepted, and returns0x80bc0107with no dialog open, theNotInUsecode of SharpProspero, while this library'ssceImeDialogTermreturns0x80bc0002in the same state. Closes when: measured on a PS5 -
sceImeDialogInit, sceImeDialogGetStatus, sceImeDialogGetResult, sceImeDialogAbort, sceImeDialogTerm (libSceImeDialog) - the statuses (none 0, running 1, finished 2), the end statuses (ok 0, user canceled 1, aborted 2) and the errors of
sceImeDialogInitfor an open dialog (0x80bc0001), a null parameter (0x80bc0031), a maximum text length outside 1 to 2048 (0x80bc0016) and a null text buffer (0x80bc0017) follow shadPS4; none is measured on a PS5. A result, abort or term on a dialog that is not finished, running or open returns0x80bc0002, where shadPS4 returns0x80bc0105to0x80bc0107, andsceImeDialogTermalso closes a running dialog, which shadPS4 refuses. The text reaches the title's buffer only when it is accepted -
Pad capture (libSceImeDialog) - while the dialog's keyboard holds the controller, every pad read of every port (PadState) returns a neutral sample: buttons
0x80000000and nothing else, sticks centred, triggers released, no touch and no motion, as shadPS4 (PS4) reports itsInterceptedbit. Neither the bit nor the rest of the sample is measured on a PS5. Buttons still held when the keyboard closes stay hidden from the title until each is released. Closes when: measured on a PS5 -
sceImeDialogGetResult, sceImeDialogTerm (libSceImeDialog) - while the keyboard is open,
sceImeDialogGetResultreturns0x80bc0002andsceImeDialogTermcloses the keyboard and returns 0. shadPS4 (PS4) returnsDIALOG_NOT_FINISHED(0x80bc0106) from both and keeps its keyboard open (Term). Neither is measured on a PS5. Closes when: measured on a PS5 -
The following pending declarations have unverified signatures and behavior; they are parameterless import-resolution declarations and throw through
NotImplemented_nid_no_patch:sceImeDialogInitInternalWithSubInfo.
Functional
- Text written on Done (libSceImeDialog) - the typed text reaches the title's buffer once, when Done, R2 or Enter accepts it. shadPS4 (PS4) writes it after every edit, and calls the title's text filter from
sceImeDialogGetStatuswhile the dialog runs (ime_dialog.cpp) and again before the result. This library never calls the filter. A title that reads its buffer or relies on the filter while typing sees neither. Closes when: measured on a PS5 - Keyboard redraw (libSceImeDialog) - the keyboard is drawn into the frames the title flips, from the dialog's state at each flip (VideoOutDriver). A title that stops flipping while the dialog runs shows the last keyboard it flipped, and typing changes nothing on screen until it flips again. Closes when: a title is seen to wait on the dialog without flipping
- Held-button repeat (libSceImeDialog) - held Cross (on a character, Space, Backspace or arrow key), D-pad, Square, L1 and R1 repeat after 0.275 s and then every 0.050 s, Dear ImGui's
ImGuiIOdefaultsKeyRepeatDelayandKeyRepeatRate, which shadPS4 (PS4) reads. The left stick repeats on shadPS4's own tilt-scaled timings. None of these is measured on a PS5. Closes when: measured on a PS5 - Keyboard extras (libSceImeDialog) - the language switch,
...menu and R3 settings keys of shadPS4 (PS4) are left as empty cells, and there is no R3 control mode, no right-stick panel drag, no prediction pane, no top close panel (kTopPanelDefaultElements) and no copy or paste. Glyphs outside the pages, such as CJK text, are drawn as a box