このプロジェクトについて

このリポジトリは特定のIME互換性問題を解決する。Linuxでfcitx 4フレームワークの搜狗拼音を使用する際、VS Code統合ターミナルで単文字のコミットが失われる。例えば`ni`と入力してスペースを押すと、ターミナルは`你`ではなくリテラルのスペースを受け取る。bashプロンプトやClaude CodeなどのTUIでも発生する。複数文字のコミット(例:`nihao`+スペースで`你好`)は正常に動作する。 リポジトリにはPythonパッチスクリプト`fix-vscode-xterm-ime.py`が含まれており、VS Code内蔵のxterm.jsの`_keyDown`メソッドを変更し、`preventDefault()`を呼び出す前にパススルー文を挿入することで、単文字キー入力を`keypress`イベント経由でPTYに渡す。スクリプトはドライラン(`--check`)、ロールバック(`--revert`)、カスタムインストールパス(`--asar`)をサポートし、変更前に構文チェックを行って安全性を確保する。 さらに2つの診断ツールを提供する。`tools/ime-probe.js`はChrome DevTools Protocolを使用してxterm.jsの隠しtextarea上のDOMイベントを記録し、問題を確認する。`tools/pty-tee.py`はプログラムがstdinから受け取るバイトを記録し、文字が失われているか検証する。 READMEには根本原因の分析が詳述されている。fcitx4と搜狗は独自にプレエディットウィンドウを描画するため、ページはcompositionイベントを受け取れず、xterm.jsのCompositionHelperがアクティブにならない。単文字コミット時、Chromiumは元のキーのkeydownと文字を含むkeypressを配信するが、xterm.jsがkeydownを処理してpreventDefault()を呼び出すため、keypressが抑制される。 テスト環境はUbuntu 22.04(X11)、VS Code 1.137.0(.debインストール)、fcitx 4.2.9.8、搜狗拼音 4.2.1.145。VS Codeのアップグレードでnode_modules.asarが置き換わるため、スクリプトの再実行が必要。SnapおよびFlatpakインストールは読み取り専用のためパッチを適用できない。ライセンスはMIT。