প্রকল্প সম্পর্কে
এই রিপোজিটরি একটি নির্দিষ্ট ইনপুট পদ্ধতির সামঞ্জস্য সমস্যার সমাধান করে: লিনাক্সে 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.