مشكلة رمز VS: https://github.com/microsoft/vscode/issues/82489
باستخدام لوحة المفاتيح الفرنسية (فرنسا) AZERTY
متوقع:
فعلي:
هذا لا يحدث في موناكو أو التطبيقات الأخرى.
قد تكون مرتبطة بـ https://github.com/xtermjs/xterm.js/issues/2151
جميع رموز معالجة أحداث لوحة المفاتيح موجودة في هذا الملف:
Tyriar ما نوع المساعدة التي تبحث عنها؟ (في حال كنت قادرًا على ذلك).
willemavjc يحتاج شخص ما إلى التحقق من سبب طباعة الحرف الإضافي (في Keyboard.ts) كما لو أن محرر نص موناكو لا ينبغي أن نكون قادرين على تجنب المشكلة أيضًا. قد يكون هناك شيء آخر على KeyboardEvent نحتاج إلى النظر فيه؟
لقد تمكنت من إعادة إنتاج هذا على جميع المفاتيح الميتة التي تتطلب استخدام مفتاح AltGr ، بما في ذلك على خريطة مفاتيح return
أو break
مفقودًا في مكان ما يخبر xterm.js بالتوقف عن محاولة تحديد المفتاح إذا كان مفتاحًا معطلاً. تجدر الإشارة إلى أن المفاتيح الميتة التي لا تستخدم مفتاح AltGr لا تزال تعمل بشكل جيد (لكل من AZERTY و BÉPO).
لست على دراية بلغة TypeScript ولكن يمكن العثور على السبب الدقيق من خلال تصحيح أخطاء ملف Keyboard.ts
أيضًا ، اكتشفت للتو أن كتابة Ctrl + Alt ثم المفتاح يعمل بشكل جيد ، لأن AltGr هو نوع من الاسم المستعار لـ Ctrl + Alt على Windows.
إلى خلاصة:
| تسلسل المفتاح | متوقع | الفعلي |
| --- | --- | --- |
| Ctrl + Alt + 2 ثم مسافة | ~ | ~ |
| AltGr + 2 ثم مسافة | ~ | é ~ (تظهر é في AltGr + 2 ، تظهر ~ في الفضاء) |
| Ctrl + Alt + 7 ثم مسافة | `| `|
| AltGr + 7 ثم مسافة | `| è` (تظهر è في AltGr + 7 ، `تظهر في مسافة) |
من المؤكد أن هناك خطأ ما في كيفية التعامل مع مفتاح AltGr
utybo حسنًا إذا كنت ترغب في المساعدة في البحث عن هذا (لا يمكننا جميعًا استخدام تخطيطات QWERTY المشتقة - الإنجليزية والألمانية) ، فربما يكون هذا مفيدًا https://w3c.github.io/uievents/tools/key-event-viewer .لغة البرمجة. نحن نعتمد نوعًا ما على الأشياء المبلغ عنها من الأحداث المعروضة هناك ، ولست متأكدًا حتى الآن من كيفية تشغيل AltGr على AZERTY في ذلك.
تضمين التغريدة
AltGr + 2 (1 to 6) ثم Space (7 to 11) مما ينتج عنه ~
Ctrl + Alt + 2 (1 إلى 6) ثم Space (7 إلى 11) مما ينتج عنه ~
AltGr + 7 (1 to 6) ثم Space (7 إلى 11) ، مما ينتج عنه حرف backtick ``
Ctrl + Alt + 7 (1 to 6) ثم Space (7 إلى 11) مما ينتج عنه نفس الحرف
لأغراض الاختبار ، أعتقد أن مفتاح Alt الصحيح على لوحات مفاتيح QWERTY يعمل كمفتاح AltGr في خرائط مفاتيح AZERTY / BEPO ، ولكن قد أكون مخطئًا
utybo إذن هذه الصفحة تُبلغ عن القيم الصحيحة؟ إذا كان الأمر كذلك ، فإن المشكلة من جانبنا بشكل كبير (اعتقدت ذلك بالفعل في المقام الأول). حسنًا ، في Keyboard.ts يحدث بعض السحر بل والأسوأ من ذلك ، لا يوجد تعليقات تقريبًا. من الصعب أن تبدأ هناك في مكان ما دون كسر شيء آخر. إذا كنت لا تزال على استعداد - فابحث عنه :)
الغريب أنني غير قادر على تكرار هذا باستخدام المصادر. إنه يعمل بشكل جيد عند استخدام خادم الويب المحلي الذي تم إطلاقه باستخدام الغزل. ربما تستخدم VS Code إصدارًا أقدم؟
Tyriar FYI ، حيث يبدو أن رقم 2151 يحدث فقط في vscode.
جرب هذه المشكلة الآن على جهاز الكمبيوتر الخاص بي في العمل ويبدو أنه جيد 😕 (باستخدام لوحة المفاتيح على الشاشة)
يبدو أن لوحة المفاتيح التي تظهر على الشاشة تستخدم Ctrl + Alt فقط بدلاً من AltGraph ، وبالتالي فإن الإخراج يختلف عن الناتج من لوحة المفاتيح الفعلية
من المثير للاهتمام أيضًا عندما تكون لوحة المفاتيح على الشاشة في وضع التشغيل ، لا يمكنني الكتابة ~ على الإطلاق باستخدام لوحة المفاتيح الفعلية ، فهي تكتب فقط é
في محطة VS Code.
utybo متأكد من أنني اختبرت ذلك في المنزل باستخدام لوحة المفاتيح التي تظهر على الشاشة ويمكن إعادة نسخها على الرغم من
حتى مع وجود لوحة مفاتيح فعلية ، فإنها تعمل بشكل جيد في بعض الأحيان ، ولكن الخطأ موجود في معظم الأوقات. هذه القضية برمتها مربكة نوعًا ما.
حتى مع وجود لوحة مفاتيح فعلية ، فإنها تعمل بشكل جيد في بعض الأحيان ، ولكن الخطأ موجود في معظم الأوقات. هذه القضية برمتها مربكة نوعًا ما.
يرجى محاولة تضييق الظروف - ربما يتعلق الأمر بكيفية بدء vscode؟ هل يحدث ذلك في الجهاز فقط أم أن المحرر يظهر نفس السلوك الغريب؟ ما هو إصدار نظام التشغيل +؟ هل تم إعداد تخطيط لوحة المفاتيح بشكل صحيح في نظام التشغيل؟
بصراحة ليس لدي فكرة. في بعض الأحيان لا توجد المشكلة ولكن هذا نادر إلى حد ما. أنا قادر على إعادة نسخ هذا بشكل موثوق على جهازي الكمبيوتر:
تخطيط لوحة المفاتيح هو التخطيط الأساسي من Windows.
jerch كما هو مذكور في https://github.com/microsoft/vscode/issues/82489 فإنه يظهر فقط في قسم Terminal بمحرر VSCode. لا توجد مشكلة في قسم الكود أو في أي مكان آخر في المحرر. مهما كان الغلاف الأساسي (PowerShell ، git-bash ، إلخ) ، فإنه يتأثر. ويعمل نفس الغلاف خارج VSCode بشكل جيد تمامًا.
Tyriar لست متأكدًا من كيفية التعامل مع هذا - يبدو أنه مشكلة تشغيل / إيقاف عشوائية. نظرًا لأن الكمبيوتر لا يزال آلة حتمية ، فهناك بعض الأسباب الجذرية الخفية imho.
willemavjc ، utybo هل يمكنك تأكيد أن هذا لم يحدث أبدًا في العرض التوضيحي xterm.js ، فقط في محطة vscode؟
أؤكد أنه لا يحدث أبدًا في العرض التوضيحي لـ xterm.js وفقط في المحطة الطرفية للتشفير مقابل ، حتى عند المحاولة الجادة مع أشياء مثل خرائط المفاتيح البديلة. تضمين التغريدة
بالنسبة إلى "مشكلة التشغيل / الإيقاف العشوائي" ، أقول إن المشكلة تحدث 90٪ من الوقت في حزني. فقط اعلم أنه لا يمكنك استخدام لوحة المفاتيح التي تظهر على الشاشة لتجربة ذلك (فهي تتعامل مع AltGr بشكل مختلف): بقدر ما حاولت ، يجب أن تكون خريطة مفاتيح AZERTY الفعلية على لوحة المفاتيح.
تمت تجربته على جهاز كمبيوتر منزلي ، ويبدو أنه يحدث 100٪ من الوقت على كل من vscode و xterm.js demo
هل يمكن أن تكون هناك مشكلة أخرى تتعلق بعدم استخدام الحدث input
؟ أول 2 من الضغط على alt ، والثالث هو 2
، والرابع هو الفضاء:
يبدو هذا الحدث الأول غريبًا لكنني لا أعتقد أنه سيسبب هذه المشكلة.
إذا كان key
هو الخاصية التي يستخدمها xterm.js ، فإنه يشرح أن الخاصية key
keydown
عند الضغط على AltGr + 2 غير صحيحة في Chromium.
قارن مع FF ، الذي يولد مفتاح dead
في هذه الحالة
أعتقد أننا بحاجة إلى الانتقال إلى input
لإصلاح ذلك بشكل صحيح ، تمامًا كما هو الحال في https://github.com/xtermjs/xterm.js/issues/469
كندة تلخيص الأشياء:
البيئة المستخدمة:
AltGraph
2
Space
للحصول على ~
اختبار إضافي باستخدام لوحة مفاتيح AZERTY على الشاشة:
اختبار إضافي مع عرض xterm.js :
ينتج عن استخدام موقع Keyboard Event Viewer نفس لقطات الشاشة التي أشار إليها utybo هنا . تم إجراء الاختبارات باستخدام متصفح Brave (يعني Chromium).
يجب أن يكون بيانutybo الصحيح: AltGraph
يتم التعامل في لوحة المفاتيح التي تظهر على الشاشة كما Control
و Alt
الجمع.
Tyriarjerchrebornix لن يكون هذا هو فكرة سهلة في نهاية المطاف؟ تعيين AltGraph
كـ Control
plus Alt
ضمن xterm.js أيضًا؟
willemavjc أعتقد أننا حددنا السبب هو أننا لا نستخدم الإدخال (بالإضافة إلى أن Chrome قد يكون به خطأ حيث لا يشير إلى أن المفتاح ميت على keydown
) ، الإصلاح ليس تافهًا للغاية مثل لقد اشتملت على تبديل كيفية معالجة جميع المدخلات التي تحتاج إلى الكثير من التحقق.
تضمين التغريدة إذا كنت بحاجة إلى نوع من الاختبار أو ما شابه ، فقط أخبرني. سأكون سعيدا للمساعدة.
أعتقد أن الكود المصدري للحدث الرئيسي عالق بين النماذج القديمة (اختراق سيء حقًا keypress
مقابل keydown
، ينشأ في الأوقات التي قامت فيها المتصفحات بكل ما يخصها) والحالات الخاصة نحن بحاجة إلى إرسال مفتاح المحطة الطرفية المناسب.
خمن أن الوقت قد حان لإعادة كتابة نظيفة باستخدام مستندات أفضل (دوه ، كل تلك الثوابت السحرية لا يوجد بها أي تعليق). لست متأكدًا أيضًا مما إذا كانت خرائط input
جميع القطع المطلوبة أو إذا كنا لا نزال بحاجة إلى حشوات keydown
- سيحتاج هذا إلى اختبار جاد ذهابًا وإيابًا. بما أنني لا أستطيع إعادة معالجة المشكلة التي نحن بصددها - فهل هناك من يريد أن يتسخ أيديهم؟
لا يمكنني إعادة إنتاج هذا بعد الآن 🤔 هل ما زال لدى أي شخص آخر هذه المشكلة؟
لقد جربت للتو كل من vscode insider و xterm.js وما زلت أعاني من هذه المشكلة.
لدي هذه المشكلة أيضا. ما زلت تأمل في حل ... مثل هذا الألم للمتحدثين الأجانب.
إذا أراد أي شخص معالجة هذا الأمر ، فيرجى الاطلاع على تعليقي الأخير في PR # 2976.