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:
co-authored by
Claude Opus 5.5
parent
1bda4390d6
commit
6ea0fa9889
@@ -0,0 +1,712 @@
|
||||
{
|
||||
"reference": "EterLib/IME.cpp",
|
||||
"reference_sha256": "19a16dd5ac776591a7e2def2564102ea86d7e4a98f67c4bcd585cb8a7376f611",
|
||||
"priority": "P4",
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"CIME::CIME": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::CIME"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::~CIME": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::~CIME"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::Initialize": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::Initialize"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::Uninitialize": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::Uninitialize"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::UseDefaultIME": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::UseDefaultIME"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::IsIMEEnabled": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::IsIMEEnabled"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::EnableIME": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::EnableIME"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::DisableIME": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::DisableIME"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::EnableCaptureInput": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::EnableCaptureInput"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::DisableCaptureInput": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::DisableCaptureInput"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::IsCaptureEnabled": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::IsCaptureEnabled"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::Clear": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::Clear"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::GetReading": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::GetReading"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::GetReadingError": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::GetReadingError"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::SetMax": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::SetMax"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::SetUserMax": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::SetUserMax"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::SetText": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::SetText"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::GetText": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::GetText"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::GetCodePageText": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::GetCodePageText"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::GetCodePage": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::GetCodePage"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::GetCandidatePageCount": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::GetCandidatePageCount"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::GetCandidateCount": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::GetCandidateCount"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::GetCandidate": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::GetCandidate"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::GetCandidateSelection": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::GetCandidateSelection"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::SetInputMode": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::SetInputMode"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::GetInputMode": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::GetInputMode"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::SetNumberMode": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::SetNumberMode"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::SetStringMode": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::SetStringMode"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::AddExceptKey": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::AddExceptKey"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::ClearExceptKey": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::ClearExceptKey"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::__IsWritable": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::__IsWritable"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::EnablePaste": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::EnablePaste"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::PasteTextFromClipBoard": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::PasteTextFromClipBoard"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::FinalizeString": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::FinalizeString"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::GetCompLen": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::GetCompLen"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::GetULBegin": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::GetULBegin"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::GetULEnd": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::GetULEnd"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::CloseCandidateList": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::CloseCandidateList"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::CloseReadingInformation": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::CloseReadingInformation"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::ChangeInputLanguage": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::ChangeInputLanguage"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::ChangeInputLanguageWorker": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::ChangeInputLanguageWorker"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::SetSupportLevel": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::SetSupportLevel"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::IncCurPos": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::IncCurPos"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::DecCurPos": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::DecCurPos"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::GetCurPos": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::GetCurPos"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::SetCurPos": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::SetCurPos"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::DelCurPos": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::DelCurPos"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::PasteString": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::PasteString"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::InsertString": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::InsertString"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::OnChar": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::OnChar"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::GetCodePageFromLang": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::GetCodePageFromLang"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::CompositionProcess": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::CompositionProcess"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::CompositionProcessBuilding": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::CompositionProcessBuilding"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::ResultProcess": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::ResultProcess"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::AttributeProcess": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::AttributeProcess"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::CandidateProcess": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::CandidateProcess"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::ReadingProcess": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::ReadingProcess"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::IsMax": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::IsMax"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::GetImeId": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::GetImeId"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::GetReadingWindowOrientation": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::GetReadingWindowOrientation"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::SetupImeApi": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::SetupImeApi"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"_strtoul": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:_strtoul"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::CheckInputLocale": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::CheckInputLocale"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::CheckToggleState": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::CheckToggleState"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::SetupSinks": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::SetupSinks"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::ReleaseSinks": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::ReleaseSinks"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::CUIElementSink::CUIElementSink": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::CUIElementSink::CUIElementSink"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::CUIElementSink::~CUIElementSink": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::CUIElementSink::~CUIElementSink"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::CUIElementSink::QueryInterface": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::CUIElementSink::QueryInterface"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::CUIElementSink::BeginUIElement": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::CUIElementSink::BeginUIElement"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::CUIElementSink::UpdateUIElement": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::CUIElementSink::UpdateUIElement"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::CUIElementSink::EndUIElement": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::CUIElementSink::EndUIElement"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::UpdateImeState": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::UpdateImeState"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::CUIElementSink::OnActivated": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::CUIElementSink::OnActivated"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::CUIElementSink::OnChange": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::CUIElementSink::OnChange"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::MakeReadingInformationString": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::MakeReadingInformationString"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::MakeCandidateStrings": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::MakeCandidateStrings"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::GetUIElement": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::GetUIElement"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::CurrentInputLocaleIsIme": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::CurrentInputLocaleIsIme"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::EnableUiUpdates": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::EnableUiUpdates"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::GetCompartments": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::GetCompartments"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CTsfUiLessMode::SetupCompartmentSinks": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CTsfUiLessMode::SetupCompartmentSinks"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::WMInputLanguage": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::WMInputLanguage"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::WMStartComposition": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::WMStartComposition"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::WMComposition": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::WMComposition"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::WMEndComposition": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::WMEndComposition"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::WMNotify": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::WMNotify"
|
||||
],
|
||||
"note": "no IMM/TSF under Godot: composition arrives as committed text (PythonBoot::UIChar → InsertString + OnUpdate); body is a no-op/constant",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
},
|
||||
"CIME::WMChar": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/IME.cpp:CIME::WMChar"
|
||||
],
|
||||
"note": "40250 body verbatim in platform/ (the file also holds the IMM/TSF-free no-ops); DelCurPos uses memmove for the overlapping wcscpy",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (login id/password typed via UIChar/UIIMEKeyDown incl. LEFT/DELETE/BACK/TAB/RETURN; in-game chat CG_CHAT) + project/python_game_render_test.gd (Godot key events)"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
{
|
||||
"reference": "UserInterface/PythonIME.cpp",
|
||||
"reference_sha256": "2fb5fa35249b8a2a9bb1c82d177d36b3ec083a2cafd4957d7cbea85d6be34009",
|
||||
"priority": "P4",
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"CPythonIME::CPythonIME": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::CPythonIME"
|
||||
]
|
||||
},
|
||||
"CPythonIME::~CPythonIME": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::~CPythonIME"
|
||||
]
|
||||
},
|
||||
"CPythonIME::Create": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::Create"
|
||||
]
|
||||
},
|
||||
"CPythonIME::MoveLeft": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::MoveLeft"
|
||||
]
|
||||
},
|
||||
"CPythonIME::MoveRight": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::MoveRight"
|
||||
]
|
||||
},
|
||||
"CPythonIME::MoveHome": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::MoveHome"
|
||||
]
|
||||
},
|
||||
"CPythonIME::MoveEnd": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::MoveEnd"
|
||||
]
|
||||
},
|
||||
"CPythonIME::SetCursorPosition": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::SetCursorPosition"
|
||||
]
|
||||
},
|
||||
"CPythonIME::Delete": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::Delete"
|
||||
]
|
||||
},
|
||||
"CPythonIME::OnUpdate": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::OnUpdate"
|
||||
]
|
||||
},
|
||||
"CPythonIME::OnTab": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::OnTab"
|
||||
]
|
||||
},
|
||||
"CPythonIME::OnReturn": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::OnReturn"
|
||||
]
|
||||
},
|
||||
"CPythonIME::OnEscape": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::OnEscape"
|
||||
]
|
||||
},
|
||||
"CPythonIME::OnWM_CHAR": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::OnWM_CHAR"
|
||||
]
|
||||
},
|
||||
"CPythonIME::OnChangeCodePage": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::OnChangeCodePage"
|
||||
]
|
||||
},
|
||||
"CPythonIME::OnOpenCandidateList": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::OnOpenCandidateList"
|
||||
]
|
||||
},
|
||||
"CPythonIME::OnCloseCandidateList": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::OnCloseCandidateList"
|
||||
]
|
||||
},
|
||||
"CPythonIME::OnOpenReadingWnd": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::OnOpenReadingWnd"
|
||||
]
|
||||
},
|
||||
"CPythonIME::OnCloseReadingWnd": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonIME.cpp:CPythonIME::OnCloseReadingWnd"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user