Terminal: [المحطة] دعم VT الماوس

تم إنشاؤها على ٨ مايو ٢٠١٩  ·  38تعليقات  ·  مصدر: microsoft/terminal

  • رقم إصدار Windows الخاص بك: (اكتب ver في موجه أوامر Windows)

10.0.18890.1000

  • ماذا تفعل وما يحدث: (نسخ ولصق أوامر محددة وإخراجها ، أو تضمين لقطات شاشة)

أستخدم بشكل روتيني وضع الماوس في tmux مع WSL لتحديد النافذة ، وتغيير حجم الجزء ، والتمرير للخلف ، ممكّنًا في tmux.conf على النحو التالي:

  # -- mouse support ---------------------------------------------------------                                                                                                                                                                                        
  # Enable mouse control (clickable windows, panes, resizable panes)                                                                
  set -g mouse on

بينما يعمل هذا بشكل مثالي في conhost ، فإنه لا يعمل على الإطلاق في Terminal ؛ لا شيء يحدث ، كما لو أن أحداث الفأرة لم تصل أبدًا إلى tmux.

  • ما هو الخطأ / ما الذي يجب أن يحدث بدلاً من ذلك:

يجب أن يعمل دعم الماوس tmux (والتطبيقات الأخرى التي تدعم الماوس على الأرجح) كما هو الحال في conhost.

Area-Input Area-VT Issue-Feature Product-Terminal Resolution-Fix-Committed

التعليق الأكثر فائدة

أنتظر بفارغ الصبر ظهور هذا في إصدار مستقبلي - أواصل النقر على أجزاء tmux على أمل أن يعمل الماوس :)

ال 38 كومينتر

نعم ، هذه مشكلة معروفة في الوقت الحالي. نحتاج إلى إضافة دعم للماوس في مكانين: كلاهما في الجهاز ، حتى نتمكن من تجميع تسلسلات الماوس ، وفي مكان فارغ حتى نتمكن من قراءة تسلسل الماوس.

هذه المشكلة هي تتبع البت الأول ، وظيفة المحطة الطرفية.

بالنسبة للبت الثاني ، الجزء الفارغ ، انظر # 376.

للأسف هذا لا يعمل ، وجود أحداث الماوس مع TMUX من شأنه أن يؤجل الحاجة إلى وجود أجزاء متعددة.
آمل أن يتم تنفيذ هذه الميزة قبل الأجزاء ، هناك حاجة ماسة إليها وستحل معظم المشكلات

أود أن أشير إلى أن دعم الماوس غير مدعوم أيضًا في tmux داخل Docker (من خلال Powershell). أعلم أن السبب في ذلك هو أن الوظيفة ببساطة غير موجودة في Terminal ، لذلك بالطبع لن تعمل في WSL أو Docker ، لكنني أعتقد أنني سأذهب إلى الأمام وأذكرها.

يعمل الماوس مع TMUX في WSL

يعمل الماوس مع wsltty: https://github.com/mintty/wsltty

guibirow ربما تكون مشكلة مع Docker من داخل Terminal إذن.

لا ، إنها ليست مشكلة مع Docker. إنها مشكلة في التفريغ (هذا الريبو). جرب wsltty إذا كنت تريد دعم الماوس.

هل هناك خطط لتمكين دعم الماوس الكامل في tmux لـ Docker في المستقبل من خلال Terminal؟

لا أعرف عن Docker على وجه التحديد ، لكنني لا أفهم لماذا يجب أن يكون مختلفًا عن الجهاز العادي. هذه القضية تتعلق بذلك ، لذا ترقب!

لذلك قمت للتو بفحص tmux من خلال WSL 1 في Terminal ولم يتم دعم الماوس هناك أيضًا. لذا أعتقد أن tmux نفسه لا يعمل في Terminal في هذه المرحلة وأنه ليس مشكلة Docker. لست متأكدًا مما كان يرى guibirow في نهايته.

يجب عليك تشغيل أمر لتمكينه ، غير ممكّن افتراضيًا.
ليس لدي الآن ، لكنه بسيط مثل set mouse on
سأضطر إلى التأكيد الأسبوع المقبل عندما أحصل على جهاز الكمبيوتر المحمول الخاص بي

إنه يعمل فقط على محطة wsl ، وليس في محطة windows الجديدة

أوه مسكتك. نعم ، إنه يعمل بشكل جيد في نافذة WSL العادية. لا يعمل إلا عند تضمينه في Windows Terminal الجديد.

إذا قمت بتطبيق دعم الماوس ، فيرجى التأكد من تنفيذ امتداد SGR (1006) أيضًا.

يسمح البروتوكول القديم المستند إلى البايت فقط بأرقام الصفوف والأعمدة حتى 223 ، لأنه يتم إضافة 32 إلى هذا الرقم ويتم إرسال هذا على هيئة بايت واحد. ليس من غير المألوف أن يكون حد العمود صغيرًا جدًا. (بالمناسبة ، بدءًا من العمود 95 ، فإن البيانات التي تم إنشاؤها ليست نظيفة 7 بت وليست UTF-8 صالحة والتي تمثل مشكلة في ترميز طبقات التحويل مثل luit.)

يعمل ملحق SGR 1006 على إصلاح هذه المشكلات عن طريق ترميز الأرقام كأرقام عشرية ، وهو مدعوم بالعديد من التطبيقات.

إذا لم يتم طلب هذا التمديد ، فالرجاء عدم إنشاء أي حدث إذا تجاوز الصف أو العمود 223. وإلا فقد يكون للتجاوز عواقب وخيمة. على سبيل المثال ، قد يؤدي النقر فوق العمود 227 إلى إنشاء البايت 32 + 227 = 259 = 3 = Ctrl + C وهو عادةً حرف المقاطعة الذي يرسل SIGINT إلى العملية الجارية.

وبالتالي! يدعم Conhost بالفعل DECSET 1006 ! نظرًا لأن لدينا هذه الطبقة المتداخلة (وحدة التحكم الزائفة ، التي تحتاج إلى التحدث إلى مضيف) ، فإننا نختار نوع وضع الماوس الذي تطلبه وحدة التحكم الزائفة ويدعمها. لا أرى أي سبب يجعل ذلك لا يجب أن يكون فقط 1006 : ابتسم: شكرًا على المعلومات!

للتوضيح ، نظرًا لأن لدينا conhost في المنتصف ، سيبدو هذا كما يلي:

                                      |                 |
                 DECSET 1002, 1005    | Windows conhost |
+-------------+                       |  (in PTY mode)  |
|             +----------------------->                 |
| Application |                       |                 |
|             <-----------------------+                 |
+-------------+                       |                 |
                 mouse information    |                 |
                 1002 in 1005 format  |                 |
                                      |                 |
                                      +---+---------^---+
                                          |         |
                                          |         | mouse information in
                         DECSET 1002,1006 |         | SGR Extended Format
                                          |         | (1002+1006)
                                          |         |
                                      +---v---------+---+
                                      |                 |
                                      | Windows         |
                                      |  Terminal       |
                                      |                 |
                                      |                 |
                                      |                 |
                                      |                 |
                                      +-----------------+

هل تقصد 1005 بين التطبيق و conhost ، أم أن هذا خطأ مطبعي في هذه الصورة؟ توجد أيضًا امتدادات الماوس 1005 و 1015 ولكنها بالكاد تستخدم (على الإطلاق) بسبب عيوبها ، فهذا ليس شيئًا تهتم به التطبيقات.

1005 (xterm's two-byte UTF-8) و 1015 (urxvt) و 1006 (xterm SGR) ، بالترتيب الزمني ، هي ثلاثة امتدادات متنافية لمعالجة قيود رقم العمود. انظر على سبيل المثال إصدار Midnight Commander 2662 و 2956 للحصول على وصف تقني حول عيوب الأولين. لاحظ أن هذه القصة الآن عمرها 6-8 سنوات. لست على دراية بأي تطبيق يدعم المشكلة 1005 و / أو 1015 ولكن ليس موافقًا 1006. على هذا النحو ، لا أرى أي فائدة في تنفيذ الدعم لأول اثنين (على الرغم من أنه يجب أن يكون من السهل جدًا تنفيذهما ).

قد يكون هذا جيدًا خطأ مطبعيًا ، في الوقت الحالي ، يدعم conhost مجموعة من أوضاع الماوس المختلفة ، بما في ذلك ، على سبيل المثال لا الحصر ، 1005 و 1006.

إنه ليس خطأ مطبعي. عذرًا ، كان القصد من ذلك توضيح كيف يمكن لنظام وحدة التحكم الزائفة أن يدعم مجموعة من أوضاع الماوس على طرف العميل (يطلب التطبيق 1005 ، 1015 ، VT220 القديم ، وما إلى ذلك) ولكن يقدم واجهة وضع الماوس الموحدة (1006) إلى أنبوب pty مالك.

من المسلم به أن هذا الرسم البياني يناسب بشكل أفضل رقم 376 ، وهو جزء البنية التحتية لهذا الخطأ.

@ DHowett-MSFT رائع ، شكرًا للتوضيح!

أنتظر بفارغ الصبر ظهور هذا في إصدار مستقبلي - أواصل النقر على أجزاء tmux على أمل أن يعمل الماوس :)

أي تقدم في هذا؟

sandric ليس بشكل خاص - عندما يكون هناك شيء مميز لمشاركته ، سنحرص على النشر في هذا الموضوع 😜

@ carlos-zamora يبدأ هذا العمل هذا الشهر (كما ترون من حقلي "معين إلى" و "معلم" على اليمين). لقد حصل على PR (# 3963) يبدأ العمل في # 376 ، أحد المتطلبات الأساسية لهذه الميزة.

@ zadjii-msft العلاقات العامة التي قمت بربطها تقول أنه تم دمجها هل هذا صحيح الآن؟

بناءً على التعليق في ملاحظات الإصدار:

ستعمل وحدة التحكم الزائفة الآن على معالجة هروب الماوس ، لكنها لن تفيدهم كثيرًا حتى الآن (# 3963)

لا يبدو (بعد). أنا لا تنزعج!

fpqc نعم ، هذا صحيح ، تم دمج هذا العلاقات العامة. من تلك المناقشة ، لا يزال هناك مجموعة من الأعمال المطلوبة قبل أن يعمل هذا بشكل كامل في Terminal:

  • [] يصدر فارغ [تسلسل] عند الدخول إلى أي وضع للماوس لإخبار الأجهزة الطرفية بضرورة توليف إدخال VT Mouse Mode كتسلسلات SGR (مع التمرير والتمرير وما إلى ذلك)
  • [] يترجم Conhost مدخلات الفأرة إلى VT من كلاهما فارغ و HWND بنفس الطريقة
  • [] يمكن أن تستهلك المحطة الطرفية [التسلسل] لتجميع إدخال وضع الماوس VT

ثم بالطبع هذه المسألة:

  • [] تقوم الوحدة الطرفية بتوليف تسلسلات إدخال الماوس

كيف ننسخ النص عند تمكين VT Mouse؟ لم أستطع فعل ذلك على Vim أو Tmux.

اضغط باستمرار على مفتاح shift للتفاعل مع الجهاز نفسه بدلاً من التطبيق الموجود بداخله.

هذا شيء عظيم جدا! متى سنرى معاينة لهذا في المتجر؟

ابقوا متابعين

تم تنزيله من المتجر! يعمل الماوس بشكل رائع في VIM و htop و Tmux. أخيرًا ، حان الوقت للانتقال من جميع WSL Terminal الأخرى إلى Microsoft one! عمل جيد يا رفاق وشكرا جزيلا!

ملاحظة: التحول يعمل بشكل رائع أيضًا!

لقد جئت للتو إلى هنا للبحث عن سبب عدم عمل الماوس ... اقرأ أحدث تعليق من yveslange ثم قم بتحديث التطبيق ... والآن يعمل الماوس بشكل مثالي.

شكرا يا شباب!

@ DHowett-MSFT: لا يزال الماوس لا يعمل معي مع Micro (https://github.com/zyedidia/micro) ، بينما يعمل كل من الماوس وعجلة التمرير بشكل لا تشوبه شائبة في powerhell الافتراضي أو cmd.exe الطرفية. هل دعم الماوس يعمل فقط في WSL في الوقت الحالي؟

nicolus بالفعل ، لا يعمل إدخال الماوس إلا مع تطبيقات WSL حاليًا. إذا كنت تستخدم إصدار Win32 من micro ، فأنا أراهن أنه لن يعمل بعد. ربما يمكنك حل هذه المشكلة عن طريق تشغيل إصدار WSL في الوقت الحالي. # 376 هي المشكلة التي نستخدمها لإدخال الماوس في Windows

@ zadjii-msft
لا تعمل أحداث الماوس بالنسبة لي مع ملف تعريف مخصص بـ "commandline": "ssh [...]" . هل هذا متوقع أيضًا حتى يتم حل رقم 376؟ هل هناك حل جيد؟

تحرير : أم أن هذا مجرد نتيجة PowerShell / Win32-OpenSSH # 1310 وسيعمل بطريقة أخرى؟

هذا نتيجة https://github.com/PowerShell/Win32-OpenSSH/issues/1310 ، والذي تم إصلاحه (برحمة) في سلسلة 8.x.

@ DHowett-MSFT شكرا على الرد السريع. في هذه الحالة ، هل هناك طريقة عقلانية للترقية يدويًا إلى إصدار مع الإصلاح في الوقت الحالي أم أنه من الأفضل الانتظار فقط؟

بالتأكيد ، ما عليك سوى تنزيل أحدث إصدار من صفحة الإصدارات الخاصة بهم!

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