Sobre o projeto

Este repositório resolve um problema específico de compatibilidade de método de entrada: ao usar o Sogou Pinyin sob o framework fcitx 4 no Linux, o terminal integrado do VS Code perde o envio de caracteres únicos. Por exemplo, após digitar `ni` e pressionar espaço, o terminal recebe um espaço literal em vez de `你`, tanto no prompt do bash quanto em TUIs como o Claude Code. Envios de múltiplos caracteres (como `nihao` + espaço resultando em `你好`) funcionam normalmente. O repositório contém um script de patch em Python `fix-vscode-xterm-ime.py`, que modifica o método `_keyDown` do xterm.js embutido no VS Code, inserindo uma instrução de passagem direta antes da chamada a `preventDefault()`, permitindo que pressionamentos de tecla de caractere único sejam transmitidos ao PTY via evento `keypress`. O script suporta simulação (`--check`), reversão (`--revert`) e caminho de instalação personalizado (`--asar`), além de realizar verificação de sintaxe antes de modificar, garantindo segurança. Além disso, fornece duas ferramentas de diagnóstico: `tools/ime-probe.js` registra eventos DOM no textarea oculto do xterm.js via Chrome DevTools Protocol, para confirmar o problema; `tools/pty-tee.py` registra os bytes recebidos pelo programa via stdin, verificando se caracteres são perdidos. O README documenta detalhadamente a análise da causa raiz: o fcitx4 e o Sogou desenham sua própria janela de pré-edição, a página não recebe eventos de composition, e o CompositionHelper do xterm.js não é ativado; no envio de caractere único, o Chromium entrega o keydown da tecla original mais o keypress com o caractere, e o xterm.js processa o keydown e chama `preventDefault()`, suprimindo o keypress. O ambiente de teste é Ubuntu 22.04 (X11), VS Code 1.137.0 (instalação .deb), fcitx 4.2.9.8, Sogou Pinyin 4.2.1.145. Observação: atualizações do VS Code substituem o node_modules.asar, sendo necessário executar o script novamente; instalações via Snap e Flatpak não podem ser corrigidas por serem somente leitura. Licença MIT.