Terminal: [Terminal] Dukungan Mouse VT

Dibuat pada 8 Mei 2019  ·  38Komentar  ·  Sumber: microsoft/terminal

  • Nomor build Windows Anda: (Ketik ver di Command Prompt Windows)

10.0.18890.1000

  • Apa yang Anda lakukan dan apa yang terjadi: (Salin & tempel perintah tertentu dan hasilnya, atau sertakan tangkapan layar)

Saya secara rutin menggunakan mode mouse di tmux dengan WSL untuk pemilihan jendela, pengubahan ukuran panel, dan scrollback, diaktifkan di tmux.conf demikian:

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

Meskipun ini berfungsi dengan baik di conhost, ini tidak berfungsi sama sekali di Terminal; tidak ada yang terjadi, seolah-olah peristiwa mouse tidak pernah mencapai tmux.

  • Apa yang salah / apa yang seharusnya terjadi:

dukungan mouse tmux (dan mungkin aplikasi pendukung mouse lainnya) harus bekerja seperti yang mereka lakukan di conhost.

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

Komentar yang paling membantu

Saya tidak sabar menunggu ini muncul di rilis mendatang - saya terus mengklik panel tmux dengan harapan mouse akan berfungsi :)

Semua 38 komentar

Ya, ini adalah masalah yang diketahui saat ini. Kita perlu menambahkan dukungan untuk mouse di dua tempat: baik di terminal, untuk dapat mensintesis urutan mouse, dan di conpty untuk dapat membaca urutan mouse.

Masalah ini melacak bit pertama, fungsionalitas Terminal.

Untuk bit kedua, bagian conpty, lihat #376.

Sayangnya ini tidak berhasil, memiliki acara mouse dengan TMUX akan menunda kebutuhan untuk memiliki banyak panel.
Saya harap fitur ini diimplementasikan sebelum panel, sangat dibutuhkan dan akan menyelesaikan sebagian besar masalah

Saya ingin menunjukkan bahwa dukungan mouse juga tidak didukung di tmux di dalam Docker (melalui Powershell). Saya tahu ini karena fungsinya tidak ada di Terminal jadi tentu saja itu tidak akan berfungsi di WSL atau Docker, tetapi saya pikir saya akan melanjutkan dan menyebutkannya.

mouse berfungsi dengan TMUX di WSL

Mouse berfungsi dengan wsltty: https://github.com/mintty/wsltty

@guibirow Mungkin itu masalah dengan Docker dari dalam Terminal.

Tidak. Ini bukan masalah dengan Docker. Ini masalah dengan conpty (repo ini). Coba wsltty jika Anda ingin dukungan mouse.

Apakah ada rencana untuk mengaktifkan dukungan mouse penuh di tmux untuk Docker di masa mendatang melalui Terminal?

Saya tidak tahu tentang Docker secara khusus, tetapi saya tidak melihat mengapa itu harus berbeda dari terminal normal. Masalah ini tentang itu, jadi awasi!

Jadi saya baru saja memeriksa tmux melalui WSL 1 di Terminal dan mouse juga tidak didukung di sana. Jadi tebakan saya adalah bahwa tmux sendiri tidak berfungsi di Terminal pada saat ini dan itu bukan masalah Docker. Tidak yakin apa yang dilihat oleh

Anda harus menjalankan perintah untuk mengaktifkannya, tidak diaktifkan secara default.
Saya tidak memilikinya sekarang, tetapi sederhana seperti ini set mouse on
Saya harus mengkonfirmasi minggu depan ketika saya mendapatkan laptop saya

Ini hanya berfungsi di terminal wsl, tidak di terminal windows baru

Oh aku mengerti. Ya itu berfungsi dengan baik di jendela WSL biasa. Ini hanya gagal berfungsi ketika disematkan di dalam Terminal Windows baru.

Jika Anda menerapkan dukungan mouse, pastikan untuk mengimplementasikan ekstensi SGR (1006) juga.

Warisan, protokol berbasis byte hanya mengizinkan nomor baris dan kolom hingga 223, karena 32 ditambahkan ke nomor ini dan ini dikirim sebagai satu byte. Batas kolom tidak jarang terlalu kecil. (Omong-omong, mulai dari kolom 95 data yang dihasilkan tidak bersih 7-bit dan bukan UTF-8 yang valid yang merupakan masalah untuk mengkodekan lapisan konversi seperti luit.)

Ekstensi SGR 1006 memperbaiki masalah ini dengan mengkodekan angka sebagai angka desimal, dan didukung oleh banyak aplikasi.

Jika ekstensi ini tidak diminta, harap jangan buat peristiwa apa pun jika baris atau kolom melebihi 223. Jika tidak, luapan dapat berakibat buruk. Misalnya mengklik kolom 227 dapat menghasilkan byte 32+227 = 259 = 3 = Ctrl+C yang biasanya merupakan karakter interupsi yang mengirimkan SIGINT ke proses yang sedang berjalan.

Jadi! Conhost sebenarnya mendukung DECSET 1006 ! Karena kita memiliki lapisan intervensi ini (pseudoconsole, yang perlu berbicara dengan conhost), kita dapat memilih mode mouse seperti apa yang diminta dan didukung oleh pseudoconsole. Saya tidak melihat alasan bahwa itu bukan hanya 1006 :smile: Terima kasih atas infonya!

Untuk memperjelas, karena kami memiliki conhost di tengah, itu akan terlihat seperti ini:

                                      |                 |
                 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       |
                                      |                 |
                                      |                 |
                                      |                 |
                                      |                 |
                                      +-----------------+

Apakah maksud Anda 1005 antara aplikasi dan conhost, atau apakah itu salah ketik pada gambar ini? Ekstensi mouse 1005 dan 1015 juga ada tetapi hampir tidak digunakan (jika sama sekali) karena kekurangannya, itu bukan sesuatu yang menarik bagi aplikasi.

1005 (xterm's two-byte UTF-8), 1015 (urxvt) dan 1006 (xterm SGR), dalam urutan kronologis ini, adalah tiga ekstensi yang saling eksklusif untuk mengatasi batasan nomor kolom. Lihat misalnya Midnight Commander masalah 2662 dan 2956 untuk deskripsi teknis tentang kekurangan dari dua yang pertama. Perhatikan bahwa cerita ini sekarang berusia 6-8 tahun. Saya tidak mengetahui aplikasi apa pun yang mendukung 1005 dan/atau 1015 yang bermasalah tetapi tidak 1006 yang oke. Karena itu, saya tidak melihat ada gunanya menerapkan dukungan untuk dua yang pertama (walaupun seharusnya sangat mudah untuk mengimplementasikannya ).

Itu bisa jadi salah ketik, saat ini, conhost sebenarnya mendukung banyak mode mouse yang berbeda , termasuk, tetapi tidak terbatas pada 1005 dan 1006.

Ini bukan salah ketik. Maaf, ini dimaksudkan untuk mengilustrasikan bagaimana sistem pseudoconsole dapat mendukung banyak mode mouse di ujung klien (aplikasi meminta 1005, 1015, legacy VT220, dll.) tetapi menghadirkan antarmuka mode mouse terpadu (1006) ke pty pipe pemegang.

Diagram itu memang lebih cocok di #376, yang merupakan bagian infrastruktur dari bug ini.

@DHowett-MSFT Luar biasa, terima kasih atas klarifikasinya!

Saya tidak sabar menunggu ini muncul di rilis mendatang - saya terus mengklik panel tmux dengan harapan mouse akan berfungsi :)

Ada kemajuan dalam hal ini?

@sandric Tidak terlalu - ketika ada sesuatu untuk dibagikan, kami akan memastikan untuk memposting di utas ini

@carlos-zamora memulai pekerjaan ini bulan ini (seperti yang Anda lihat dari bidang "ditugaskan ke" dan "tonggak sejarah" di sebelah kanan). Dia mendapat PR (#3963) mulai bekerja untuk #376, salah satu prasyarat untuk fitur ini.

@zadjii-msft PR yang Anda tautkan mengatakan telah digabungkan Apakah itu benar sekarang?

Berdasarkan komentar di catatan rilis:

Pseudoconsole sekarang akan memproses pelarian mouse, tetapi itu tidak akan banyak berguna dengan mereka (#3963)

Sepertinya belum (belum). Saya tetap disini!

@fpqc ya, itu benar, PR yang satu itu digabung. Dari diskusi itu, masih ada banyak pekerjaan yang diperlukan sebelum ini bekerja sepenuhnya di Terminal:

  • [ ] Conpty memancarkan [urutan] saat memasuki mode mouse apa pun untuk memberi tahu terminal bahwa mereka harus mensintesis input Mode Mouse VT sebagai urutan SGR (dengan arahkan kursor, gulir, dll)
  • [ ] Conhost menerjemahkan input Mouse ke VT dari kedua conpty dan HWND dengan cara yang sama
  • [ ] Terminal dapat menggunakan [urutan] untuk mensintesis input mode mouse VT

Dan tentu saja, masalah ini:

  • [ ] Terminal mensintesis urutan input mouse

Bagaimana cara menyalin teks saat VT Mouse diaktifkan? Saya tidak bisa melakukannya di Vim atau Tmux.

Tahan shift untuk berinteraksi dengan terminal itu sendiri alih-alih aplikasi di dalamnya.

Ini sangat bagus! Kapan kita akan melihat pratinjau ini di Store?

Pantau terus

Diunduh dari toko! Mouse bekerja dengan baik di VIM, htop dan Tmux. Akhirnya, saatnya untuk berpindah dari semua Terminal WSL lainnya ke terminal microsoft! Kerja bagus teman-teman dan terima kasih banyak!

PS: shift juga bekerja dengan baik!

Baru saja datang ke sini mencari mengapa mouse tidak berfungsi ... baca komentar terbaru dari @yveslange dan kemudian perbarui aplikasi ... dan sekarang mouse berfungsi dengan sempurna.

Terima kasih teman-teman!

@ DHowett-MSFT : Mouse masih tidak berfungsi untuk saya dengan Micro (https://github.com/zyedidia/micro), sedangkan mouse dan scrollwheel bekerja dengan sempurna di powershell default atau terminal cmd.exe. Apakah dukungan mouse hanya berfungsi di WSL untuk saat ini?

@nicolus memang, input mouse hanya berfungsi untuk aplikasi WSL saat ini. Jika Anda menggunakan versi mikro Win32, saya yakin itu tidak akan berfungsi dengan baik. Anda mungkin dapat mengatasi ini dengan menjalankan versi WSL untuk saat ini. #376 adalah masalah yang kami gunakan untuk input mouse Windows

@zadjii-msft
Acara mouse tidak berfungsi untuk saya dengan profil khusus dengan "commandline": "ssh [...]" . Apakah ini juga diharapkan sampai #376 diselesaikan? Apakah ada solusi yang baik?

Sunting : Atau apakah itu hanya hasil dari PowerShell/Win32-OpenSSH#1310 dan akan berfungsi sebaliknya?

Ini adalah hasil dari https://github.com/PowerShell/Win32-OpenSSH/issues/1310 , yang (untungnya) diperbaiki dalam seri 8.x.

@DHowett-MSFT Terima kasih atas balasan cepatnya. Dalam hal ini, apakah ada cara yang masuk akal untuk meningkatkan secara manual ke versi dengan perbaikan sekarang atau lebih baik menunggu saja?

Tentu, cukup unduh rilis terbaru dari halaman Rilis mereka!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat