export function installImeBypass(term, sendFunction) { if (typeof window.__zjImeBypass === "undefined") { window.__zjImeBypass = { installed: false, sendFn: sendFunction, lastKeyWasProcess: false, }; } window.__zjImeBypass.sendFn = sendFunction; if (window.__zjImeBypass.installed) { return; } window.__zjImeBypass.installed = true; const state = window.__zjImeBypass; document.addEventListener( "keydown", (ev) => { state.lastKeyWasProcess = ev.key === "Process"; }, true ); const attach = () => { const ta = term && term._core && term._core.textarea; if (!ta) { setTimeout(attach, 50); return; } ta.addEventListener( "input", (ev) => { if ( state.lastKeyWasProcess && ev.inputType === "insertText" && !ev.isComposing && ev.data ) { state.sendFn(ev.data); ev.target.value = ""; state.lastKeyWasProcess = false; } }, true ); }; attach(); }