Xterm.js: يطبع altgr + num حرفًا خاطئًا على لوحة مفاتيح azerty الفرنسية

تم إنشاؤها على ١٧ أكتوبر ٢٠١٩  ·  33تعليقات  ·  مصدر: xtermjs/xterm.js

مشكلة رمز VS: https://github.com/microsoft/vscode/issues/82489

باستخدام لوحة المفاتيح الفرنسية (فرنسا) AZERTY

متوقع:

  • 2: é
  • 7: è
  • altgr + 2: (لا شيء)
  • altgr + 7: (لا شيء)
  • altgr + 2 ، مسافة: ~
  • altgr + 7 ، مسافة: `

فعلي:

  • 2: é
  • 7: è
  • altgr + 2: é
  • altgr + 7: è
  • altgr + 2 ، مسافة: é ~
  • altgr + 7 ، مسافة: è`

هذا لا يحدث في موناكو أو التطبيقات الأخرى.

areime help wanted typbug

ال 33 كومينتر

قد تكون مرتبطة بـ https://github.com/xtermjs/xterm.js/issues/2151

جميع رموز معالجة أحداث لوحة المفاتيح موجودة في هذا الملف:

https://github.com/xtermjs/xterm.js/blob/29e53c9c1171e4e3fce7c7d172cd8f182b13aece/src/common/input/Keyboard.ts

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) مما ينتج عنه ~
image

Ctrl + Alt + 2 (1 إلى 6) ثم Space (7 إلى 11) مما ينتج عنه ~
image

AltGr + 7 (1 to 6) ثم Space (7 إلى 11) ، مما ينتج عنه حرف backtick ``
image

Ctrl + Alt + 7 (1 to 6) ثم Space (7 إلى 11) مما ينتج عنه نفس الحرف
image

لأغراض الاختبار ، أعتقد أن مفتاح Alt الصحيح على لوحات مفاتيح QWERTY يعمل كمفتاح AltGr في خرائط مفاتيح AZERTY / BEPO ، ولكن قد أكون مخطئًا

utybo إذن هذه الصفحة تُبلغ عن القيم الصحيحة؟ إذا كان الأمر كذلك ، فإن المشكلة من جانبنا بشكل كبير (اعتقدت ذلك بالفعل في المقام الأول). حسنًا ، في Keyboard.ts يحدث بعض السحر بل والأسوأ من ذلك ، لا يوجد تعليقات تقريبًا. من الصعب أن تبدأ هناك في مكان ما دون كسر شيء آخر. إذا كنت لا تزال على استعداد - فابحث عنه :)

الغريب أنني غير قادر على تكرار هذا باستخدام المصادر. إنه يعمل بشكل جيد عند استخدام خادم الويب المحلي الذي تم إطلاقه باستخدام الغزل. ربما تستخدم VS Code إصدارًا أقدم؟

Tyriar FYI ، حيث يبدو أن رقم 2151 يحدث فقط في vscode.

جرب هذه المشكلة الآن على جهاز الكمبيوتر الخاص بي في العمل ويبدو أنه جيد 😕 (باستخدام لوحة المفاتيح على الشاشة)

image
يبدو أن لوحة المفاتيح التي تظهر على الشاشة تستخدم Ctrl + Alt فقط بدلاً من AltGraph ، وبالتالي فإن الإخراج يختلف عن الناتج من لوحة المفاتيح الفعلية

من المثير للاهتمام أيضًا عندما تكون لوحة المفاتيح على الشاشة في وضع التشغيل ، لا يمكنني الكتابة ~ على الإطلاق باستخدام لوحة المفاتيح الفعلية ، فهي تكتب فقط é في محطة VS Code.

utybo متأكد من أنني اختبرت ذلك في المنزل باستخدام لوحة المفاتيح التي تظهر على الشاشة ويمكن إعادة نسخها على الرغم من

حتى مع وجود لوحة مفاتيح فعلية ، فإنها تعمل بشكل جيد في بعض الأحيان ، ولكن الخطأ موجود في معظم الأوقات. هذه القضية برمتها مربكة نوعًا ما.

حتى مع وجود لوحة مفاتيح فعلية ، فإنها تعمل بشكل جيد في بعض الأحيان ، ولكن الخطأ موجود في معظم الأوقات. هذه القضية برمتها مربكة نوعًا ما.

يرجى محاولة تضييق الظروف - ربما يتعلق الأمر بكيفية بدء vscode؟ هل يحدث ذلك في الجهاز فقط أم أن المحرر يظهر نفس السلوك الغريب؟ ما هو إصدار نظام التشغيل +؟ هل تم إعداد تخطيط لوحة المفاتيح بشكل صحيح في نظام التشغيل؟

بصراحة ليس لدي فكرة. في بعض الأحيان لا توجد المشكلة ولكن هذا نادر إلى حد ما. أنا قادر على إعادة نسخ هذا بشكل موثوق على جهازي الكمبيوتر:

  • Windows 10 (10.0.18362.418) برمز VS 1.39.2 ، مع التخطيط الفرنسي (فرنسا)
  • Windows 10 (10.0.18362.10024) مع VS Code 1.39.2 و VS Code Insider 1.40.0-insider بالتخطيط الفرنسي (فرنسا)

تخطيط لوحة المفاتيح هو التخطيط الأساسي من 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 ، والرابع هو الفضاء:

image

يبدو هذا الحدث الأول غريبًا لكنني لا أعتقد أنه سيسبب هذه المشكلة.

إذا كان key هو الخاصية التي يستخدمها xterm.js ، فإنه يشرح أن الخاصية key keydown عند الضغط على AltGr + 2 غير صحيحة في Chromium.

قارن مع FF ، الذي يولد مفتاح dead في هذه الحالة

image

أعتقد أننا بحاجة إلى الانتقال إلى input لإصلاح ذلك بشكل صحيح ، تمامًا كما هو الحال في https://github.com/xtermjs/xterm.js/issues/469

كندة تلخيص الأشياء:

البيئة المستخدمة:

  • الجهاز: Surface Pro 6 مع لوحة مفاتيح AZERTY
  • إصدار نظام التشغيل: Microsoft Windows (Pro) الإصدار 1903 (إصدار نظام التشغيل 18362.449)
  • إصدار PowerShell: 5.1.1
  • إصدار VSCode: 1.39.2

AltGraph 2 Space للحصول على ~

  • تطبيقات x86 / x64 (Office ، وما إلى ذلك): تمرير
  • PowerShell الأصلي: تمرير
  • جيت باش: تمرير
  • محرر VSCode: تمرير
  • محطة VSCode (بوويرشيل): الفشل

اختبار إضافي باستخدام لوحة مفاتيح AZERTY على الشاشة:

  • محطة VSCode (PowerShell): تمرير

اختبار إضافي مع عرض 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.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

fabiospampinato picture fabiospampinato  ·  4تعليقات

Tyriar picture Tyriar  ·  4تعليقات

pfitzseb picture pfitzseb  ·  3تعليقات

albinekb picture albinekb  ·  4تعليقات

Mlocik97-issues picture Mlocik97-issues  ·  3تعليقات