इस प्रोजेक्ट के बारे में
यह रिपॉज़िटरी एक विशिष्ट इनपुट विधि संगतता समस्या का समाधान करती है: 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`) का समर्थन करती है, और संशोधन से पहले सिंटैक्स जाँच करती है, जिससे सुरक्षा सुनिश्चित होती है।
इसके अतिरिक्त दो निदान उपकरण प्रदान किए गए हैं: `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 है।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.