port 4-a: text input through CPythonIME (login typed, in-game chat)

- UserInterface/PythonIME(+Module) ported verbatim; ime module stubs removed, initime() after initdbg()
- EterLib/IME.cpp in platform/: 40250 buffer/WMChar bodies, IMM/TSF processors no-op; committed
  multi-byte text via PythonBoot::UIChar emulating GCS_RESULTSTR
- GameApplicationAdapter RunIME* -> CWindowManager; Godot keys -> ui_ime_key/ui_char
- port.login_flow/login_live type the account through the IME; chat CG_CHAT round-trip on the fake server
- python_game_render_test logs in with Godot key events

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-24 08:35:53 +09:00
co-authored by Claude Opus 5.5
parent 1bda4390d6
commit 6ea0fa9889
21 changed files with 2117 additions and 277 deletions
@@ -0,0 +1,212 @@
{
"reference": "UserInterface/PythonIMEModule.cpp",
"reference_sha256": "9d2abae41a270b10f05aceb7e04709f18fe44248ea52a9c2f391c0848d10cc31",
"priority": "P4",
"contracts": [],
"functions": {
"imeEnable": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeEnable"
]
},
"imeDisable": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeDisable"
]
},
"imeEnableCaptureInput": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeEnableCaptureInput"
]
},
"imeDisableCaptureInput": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeDisableCaptureInput"
]
},
"imeSetMax": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeSetMax"
]
},
"imeSetUserMax": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeSetUserMax"
]
},
"imeSetText": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeSetText"
]
},
"imeGetText": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeGetText"
]
},
"imeGetCodePage": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeGetCodePage"
]
},
"imeGetCandidateCount": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeGetCandidateCount"
]
},
"imeGetCandidate": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeGetCandidate"
]
},
"imeGetCandidateSelection": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeGetCandidateSelection"
]
},
"imeGetReading": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeGetReading"
]
},
"imeGetReadingError": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeGetReadingError"
]
},
"imeEnableIME": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeEnableIME"
]
},
"imeDisableIME": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeDisableIME"
]
},
"imeSetInputMode": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeSetInputMode"
]
},
"imeSetNumberMode": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeSetNumberMode"
]
},
"imeAddExceptKey": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeAddExceptKey"
]
},
"imeClearExceptKey": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeClearExceptKey"
]
},
"imeSetStringMode": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeSetStringMode"
]
},
"imeGetInputMode": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeGetInputMode"
]
},
"imeMoveLeft": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeMoveLeft"
]
},
"imeMoveRight": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeMoveRight"
]
},
"imeMoveHome": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeMoveHome"
]
},
"imeMoveEnd": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeMoveEnd"
]
},
"imeSetCursorPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeSetCursorPosition"
]
},
"imeDelete": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeDelete"
]
},
"imePasteTextFromClipBoard": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imePasteTextFromClipBoard"
]
},
"imeEnablePaste": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imeEnablePaste"
]
},
"imePasteString": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imePasteString"
]
},
"imePasteBackspace": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imePasteBackspace"
]
},
"imePasteReturn": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:imePasteReturn"
]
},
"initime": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonIMEModule.cpp:initime"
]
}
}
}