منصوبے کے بارے میں
یہ ریپوزٹری ایک مخصوص ان پٹ میتھڈ مطابقت کا مسئلہ حل کرتی ہے: لینکس پر 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.