mirror of
https://github.com/microsoft/terminal.git
synced 2026-04-18 04:01:04 +00:00
[Conpty] Add support for mouse input #562
Closed
opened 2026-01-30 21:55:17 +00:00 by claunia
·
104 comments
No Branch/Tag Specified
main
dev/duhowett/1espt
dev/lhecker/osc-7-wsl
release-1.25
dev/lhecker/19977-kkp-altgr
dev/cazamor/auto-save/settings-model
dev/cazamor/toast/osc777
dev/cazamor/toast/bellStyle
dev/cazamor/toast/activity
feature/llm
dev/cazamor/toast/base
dev/cazamor/test/settings-model
dev/cazamor/sui/dropdown-page
dev/duhowett/spelling-26
dev/cazamor/selfhost/2026-04-08
dev/cazamor/disable-tab-menu-items
dev/cazamor/sln/bugfix-rounding
dev/cazamor/selfhost/2026-04-06
dev/cazamor/bugfix/aumid
release-1.24
dev/cazamor/confirmOnClose
dev/migrie/fhl-spring-2026/confirmCloseOn
dev/cazamor/confirmCloseOn/dont-ask-me-again
dev/lhecker/inproc-conpty
dev/duhowett/powershell-module-supercharger
dev/cazamor/a11y/vt-seq-prototype
dev/migrie/fhl-spring26/osc777-2
dev/migrie/fhl-spring26/2/notification-infrastructure
dev/migrie/fhl-spring-2026/side-tabs
dev/cazamor/copilot/playground
dev/migrie/fhl-spring-2026/quake-3.5
dev/migrie/fhl-spring26/osc777
dev/migrie/fhl-spring26/unpackaged-notify
dev/migrie/fhl-spring26/bellStyle-notification
dev/migrie/fhl-spring26/activity-notifications
dev/migrie/fhl-spring-2026/x-open
dev/migrie/fhl-spring-2026/quake-5
dev/migrie/fhl-spring26/nextTab-filter
dev/duhowett/fhl-2026/rewrite-paste-and-dragdrop-handling-writeinputstring
dev/migrie/fhl-spring-2026/quake-4
dev/duhowett/atlas-draw-d2d-dots-curlies-consistently
dev/lhecker/14165-conhost-font-size
dev/lhecker/ottosson-by-default
dev/duhowett/hax/unix-pty
dev/duhowett/hax/cmake
dev/lhecker/generate-256-colors
dev/lhecker/dcs-perf
dev/lhecker/1410-large-scrollback
dev/cazamor/selfhost/2026-02-10
dev/duhowett/vs26
dev/lhecker/11509-kitty-keyboard-protocol-wip
dev/cazamor/selfhost/2026-01-29
dev/lhecker/benchcat-fix
dev/duhowett/eoy-25/allow-set-foreground
release-1.23
dev/cazamor/bot/deprecate-area-atlasengine
dev/cazamor/selfhost/2026-01-20
dev/cazamor/selfhost/2026-01-12
dev/cazamor/spec/auto-save
dev/duhowett/fhl-2024/asciicast-recorder
dev/duhowett/eoy-25/underline-colors-in-atlas-bug
dev/duhowett/hax/serial-port-support
dev/duhowett/connection-utf8
dev/lhecker/fused-event
dev/lhecker/18928-wip
dev/duhowett/fhl-2024/clang
dev/cazamor/uia-leak
dev/duhowett/win7-wpf-termcontrol-squash
release-1.22
dev/cazamor/selfhost/11-18-v3
dev/cazamor/selfhost/11-18
dev/duhowett/fhl-2025/bitmap-fonts
dev/duhowett/server-2025-vms
dev/duhowett/cant-believe-gotta-do-this-shit
dev/lhecker/dark-mode
dev/cazamor/sui/invert-cursor-color
dev/duhowett/fhl-2025/wt-command-palette-cmdpal-integration
dev/duhowett/fhl-2025/wt-json-relative-icons
dev/lhecker/fucking-service-locator
dev/duhowett/unicode-17
dev/duhowett/multi-blern
dev/lhecker/wellp2-alt
dev/duhowett/wellp2
dev/lhecker/1860-horizontal-scrollbar
dev/lhecker/fix-window-count
dev/cazamor/sui/tab-color-old
dev/duhowett/hax/conhost-icon
dev/duhowett/hax/sui-color-chip-border
dev/duhowett/hax/terminalsettings-as-a-lib-/with-types-merged-into-tsm
dev/pabhoj/page_control_input_cleanup
dev/duhowett/padding-in-atlas-rebase-20250729
dev/lhecker/attach-thread-input
dev/duhowett/portable-shader-members
msbuildcache-reenable
dev/cazamor/selfhost/1.24-2025-06-10
dev/cazamor/upgrade-settings-containers
dev/cazamor/sui/ext-page/powershell-stub
dev/cazamor/selfhost/1.24-2025-05-15
dev/pabhoj/sui_action_overhaul
dev/cazamor/selfhost/1.24-2025-05-06
dev/cazamor/selfhost/1.24-2025-04-29
dev/cazamor/sui/ext-page/lazy-load-objects
dev/cazamor/sui/ext-page/badge
dev/cazamor/selfhost/1.24
dev/lhecker/sdk-26100
dev/duhowett/testing
dev/jadelaga/VS-Pty.Net-1.22
dev/duhowett/fhl-2025/what-if-no-content-ids
dev/lhecker/18584-part2
dev/lhecker/get-lang-id
dev/duhowett/hax/clogs
release-1.21
dev/pabhoj/featurellm_fix_paste
dev/lhecker/grapheme-backup
dev/jadelaga/VS-Pty.netFixes
dev/lhecker/atlas-engine-compute-shader
dev/migrie/s/ai-providers
dev/lhecker/animated-cursor-wip
dev/pabhoj/featurellm_timeout
dev/lhecker/dark-mode-alt
dev/duhowett/osc-strided-table
dev/lhecker/bugbash
dev/pabhoj/featurellm_improve_parsing
dev/duhowett/coast-to-coast
dev/lhecker/curly-improvements
dev/duhowett/net8
dev/duhowett/onebranch-custom-pool
dev/lhecker/renderer-overhaul-2nd-attempt
dev/lhecker/cleanup
dev/cazamor/sui/confirmation-announcements
dev/lhecker/theme-quality
dev/lhecker/winconpty-cleanup
dev/duhowett/learn/rewrite-highlights
dev/migrie/b/no-nesting-when-searching
release-1.20
dev/duhowett/sel-2-spans
dev/lhecker/7118-cursor-color
dev/lhecker/remove-glyph-width
dev/lhecker/igfw-scroll-region
dev/lhecker/17656-win32im-double-encoding
dev/duhowett/fhl-2024/merge-idls
dev/duhowett/feed-forward-variables
dev/lhecker/remove-chrome-math
dev/duhowett/copylink
dev/duhowett/applicableactions
gh-readonly-queue/main/pr-17566-de50310295b7d92ed3d51f07974a2a945776bf9d
dev/lhecker/atlas-engine-stride-copy
dev/migrie/b/bump-nuget-in-c
dev/migrie/f/992-redux-redux
dev/migrie/f/filter-weight-input-too
dev/migrie/f/disable-nesting
dev/migrie/f/local-snippets-cleaner
dev/migrie/s/1553-mouse-bindings
selfhost-1.22-bugbash-2024-06-04
selfhost/1.22-bugbash-2024-06-04
dev/lhecker/15689-tab-drag-crash-fix
dev/migrie/f/sxnui-font-size-change
dev/migrie/f/local-snippets-on-action-refactor
dev/migrie/f/just-local-snippets
dev/migrie/save-input-patches
dev/migrie/f/md-pane-official
dev/migrie/base-pane
dev/migrie/fhl/tasks-pane
release-1.19
dev/migrie/b/17130-clear-marks-2
dev/migrie/b/17075-its-me-the-killer
dev/duhowett/i-figured-out-why-sometimes-the-publish-build-failed
dev/duhowett/nuget-publication-with-aad-app-id
selfhost-1.20
dev/duhowett/graph
dev/migrie/b/15803-activate-dont-copypasta
dev/duhowett/is-pgo-broken-because-of-sui-being-slower
dev/migrie/b/remove-terminaltab
dev/migrie/fhl/md-pane
dev/migrie/fhl/local-tasks-2024
dev/migrie/fhl/2024-inline-notebook
dev/duhowett/interface-projects
dev/duhowett/dead-loc
release-1.18
dev/migrie/fhl/2024-spring-merge-base
dev/duhowett/hax/l9
inbox
dev/migrie/14073-on-main
dev/duhowett/hax/conhost_dump_replay
user/lhecker/atlas-engine-srgb
dev/migrie/fhl/sxnui-tooltips-3
dev/migrie/7718-notifications-experiments
dev/migrie/fhl/7718-notifications
dev/migrie/fhl/7718-notifications-reboot
dev/lhecker/remove-gsl
dev/lhecker/16575-TerminateProcess
dev/lhecker/window-thread-climate-control
dev/lhecker/client-context-input-output-mode
dev/lhecker/ring-buffer-input-buffer
release-1.17
dev/lhecker/propsheet-fontdlg-refactor
dev/lhecker/renderer-overhaul
dev/pabhoj/test
dev/duhowett/chop
dev/lhecker/til-ulong-cleanup
dev/lhecker/til-env-cleanup
dev/migrie/f/16005-a11y-pane
dev/cazamor/a11y/fastpass
dev/migrie/b/15487-push-cwd
dev/migrie/b/15536-or-15219-idk
dev/duhowett/move-timers-down-into-core-interactivity-etc
dev/migrie/b/15812-broadcast-paste-two
dev/migrie/fhl-fall-2023/11162-quake-III-arena
dev/migrie/fhl-fall-2023/1620-automatic-tab-progress
dev/migrie/fhl-fall-2023/9992-quake-II
dev/migrie/fhl-fall-2023/9992-default-quake-settings
dev/migrie/fhl-fall-2023/9992-window-name-settings
dev/migrie/fhl-fall-2023/oceans
dev/lhecker/ColorScheme-improvements
dev/migrie/search-v2-v3
dev/migrie/pr-15717/its-dangerous-to-go-alone
dev/migrie/f/4768-taskbar-icons
dev/duhowett/padding-in-atlas
dev/migrie/f/3121-tooltips
dev/duhowett/sticky-control
dev/duhowett/fix-tracing-2
dev/migrie/b/add-support-for-vsc-marks
dev/migrie/f/1860-this-is-literally-what-less-is-for
dev/migrie/s/5916-draft
dev/lhecker/tracy
dev/migrie/s/north-star
dev/cazamor/tag-youre-it
dev/migrie/f/12336-let-it-mellow
dev/migrie/f/now-with-more-compat-settings
dev/migrie/f/compatibility-sui
dev/duhowett/hax/wpf-atlas
dev/duhowett/fgb
dev/migrie/b/15487-relative-paths-are-hard
dev/lhecker/colrv1
loc-update
dev/migrie/fhl/dyndep-csharp
dev/migrie/fhl/dyndep
dev/migrie/fhl-clickable-send-input
dev/migrie/f/cwd-hijinks-5506-15173
dev/lhecker/openconsole-async-start
1.17
dev/migrie/bump-scratch
dev/migrie/f/3726-restartConnection
dev/migrie/b/cxn-restarting-attempt-1-backport
dev/migrie/b/9053-part-3-the-actual-doing-of-the-thing
dev/migrie/b/13388-focus-logger
dev/migrie/b/9053-part-4-i-guess-defterm
dev/migrie/oop/3/of-the-silmarils
of-the-darkening-of-valinor
dev/migrie/fhl/notebook-proto-000
dev/migrie/f/narrator-buddy
dev/migrie/mux-2.8.2-march-2023
dev/migrie/f/roast-mutton
dev/migrie/f/12861-preview-input
dev/lhecker/clang-tidy
dev/migrie/f/3121-wE-dOnT-hAvE-dEv-DaYs
dev/duhowett/compiler-compliance
dev/duhowett/i-have-a-burning-hatred-for-ntstatus-of-later-so-why-not-fix-it
dev/duhowett/shorthand-namespaces
dev/duhowett/rename-all-dlls
dev/duhowett/errordialog
dev/lhecker/gsl-narrow
dev/migrie/b/11522-dumb-idea
release-1.16
dev/miniksa/env
dev/duhowett/hax/embed-everything
dev/migrie/b/13388-attempt-003
dev/migrie/b/14512-test-research
dev/migrie/b/13388-attempt-002
dev/migrie/b/14464-copyOnSelect-moving-text
dev/migrie/s/thema-schema-for-1.16
dev/migrie/s/theme-pair-schema
dev/migrie/b/13388-experiments-1
dev/cazamor/spec/a11y-vt-seq
dev/migrie/b/14557-empty-folder-dropdown
dev/cazamor/spec/a11y-vt-seq-v2
release-1.15
dev/migrie/f/process-model-v3-test-0
dev/lhecker/vsconfig
dev/migrie/s/5000-presentation
dev/lhecker/5907-startup-perf
dev/lhecker/winrt-file-api-benchmark
dev/duhowett/128-bit-compiler
dev/duhowett/hax/arm64-native-build
dev/migrie/fhl/more-shell-integration
dev/migrie/b/13388-experiments-0
dev/lhecker/til-to-ulong-improvements
dev/migrie/s/markdown-notebooks
dev/cazamor/a11y/nav-by-page
dev/cazamor/a11y/system-menu-support
dev/duhowett/no-private-registry-keys
dev/cazamor/wpf/uia-expose-enable-events
dev/cazamor/wpf/uia-events
extendAISpec
dev/migrie/fhl/clickSendInput
dev/migrie/fhl/save-command
dev/migrie/b/theme.profile
dev/migrie/b/13943-a-test-for-this
dev/migrie/oop/2/endgame
dev/duhowett/hax/merge_idl
dev/migrie/oop/2/infinity-war
dev/migrie/spellbot-cve
dev/cazamor/a11y-sev3/new-profile-announcement
dev/migrie/fhl/upside-down-mode
release-1.14
dev/migrie/f/9458-startupInfoToTerminal
dev/migrie/fhl/5916-triggers
dev/migrie/b/13523-context-menu
dev/migrie/b/6523-endpaint-outside-lock
dev/migrie/b/12413-OnUnhandledException
dev/lhecker/render-snapshot
dev/cazamor/1.15/scroll-to-point
dev/migrie/mux-2.8-aug-2022
dev/lhecker/lock-console-guard
dev/migrie/f/1504-final
dev/pabhoj/sui_follow_ups
dev/migrie/f/til-winrt.h
dev/cazamor/color-picker-redesign
dev/migrie/fhl/vscode-autocomplete-prototype
dev/migrie/f/1504-prototype
dev/migrie/oop/2/loki
dev/migrie/oop/2/wandavision
dev/migrie/b/8698-YOURE-OUT-OF-ORDER
fabricbot-configuration-migration
dev/migrie/b/12788-did-it-work
dev/migrie/b/localtests-ci-2022
dev/cazamor/1.14/replace-compareInBounds
dev/pabhoj/preview_string
dev/cazamor/ks/switchSelectionEndpoint
dev/migrie/oop/2/COM-ISwapChainProvider-attempt-1
dev/migrie/b/dxd-marker
release-1.13
dev/migrie/b/13066-for-defterm
dev/cazamor/revert-dwm
dev/migrie/b/13066-sw_flash_repeatedly
dev/migrie/b/no-cloaky-cloak
dev/migrie/f/apples-to-oranges
dev/migrie/f/no-custom-caption-btns
dev/migrie/f/10509-mica-and-transparent-titlebars
dev/migrie/b/12911-wpf-focus-fg
dev/migrie/titebar-colors
dev/lhecker/4015-cursor
dev/migrie/fhl/rgb-rainbow-window-frame
dev/migrie/fhl/scroll-marks-prototype
release-1.12
dev/miniksa/compliance
dev/migrie/f/default-icons
dev/migrie/fhl/10175-web-search-for-text
dev/migrie/fhl/menu-complete-prototype
dev/migrie/b/2988-merged-prototypes
dev/migrie/b/2988-niksa-msgs-prototype
dev/migrie/fhl/9583-colorSelection
dev/migrie/b/10609-sui-leak
dev/migrie/b/32-attempt-3
dev/migrie/release-1.12-rejuv-attempt-2
dev/migrie/demo-for-presentation
dev/migrie/b/32-but-im-here-for-12567
dev/duhowett/conpty_first_frame_blug
dev/migrie/b/11092-unfocused-acrylic-settings
dev/migrie/localtests-in-ci
dev/migrie/b/12356-attempt-2
dev/migrie/b/12353-with-null
dev/migrie/b/12387-trim-spaces
dev/migrie/b/5033-bad-start
dev/lhecker/12351-broken-locales
dev/migrie/b/8663-input-to-oem-crash
dev/migrie/b/11743-win10-opacity-is-hard
dev/migrie/f/ctrl-click-elevate
dev/migrie/b/12196-shim-localization
dev/lhecker/issue-4015-til-rect
dev/cazamor/eim/mvvm
dev/migrie/f/--elevate
dev/migrie/b/11668-i-think
dev/migrie/b/11994-wsl-mangline
dev/migrie/eim/3475-action-xmacros
dev/migrie/eim/incremental-build-000
dev/cazamor/a11y/fake-uia-data
dev/migrie/f/non-terminal-content-elevation-warning
dev/migrie/f/632-on-warning-dialog
dev/lhecker/rgba
dev/migrie/b/8480-keybindings-in-tabs
release-1.11
dev/migrie/b/11561-dead-ends
dev/migrie/oct-21-roadmap-update
dev/migrie/fhl/adaptive-card-extension
dev/cazamor/test/11440
dev/migrie/f/warning-dlg-automation
dev/migrie/b/1.12-crash-on-exit
dev/migrie/b/11146-next-tab-in-cmdpal
release-1.10
dev/migrie/5ff9a24-and-75e2b5f
dev/duhowtt/hax/cpal-jumplist-async
dev/lelian/actionid/1
dev/migrie/f/just-elevated-state
dev/lhecker/terminal-settings-cleanup
dev/migrie/gh-10824
dev/pabhoj/cursor_light
dev/migrie/oop/wandavision
dev/migrie/oop/endgame
dev/migrie/oop/infinity-war
dev/lhecker/app-state-actually-hidden
dev/migrie/b/6160-dynamic-default-warning
dev/mgirie/b/more-nchhittest-ideas
dev/migrie/b/9320-interfacial-separation
cinnamon/fhl/find-contextmenu
dev/lhecker/wsl-distro-generator-cleanup
dev/migrie/b/10875-but-more-clever
dev/migrie/b/broken-globalsummon-overloading
dev/duhowett/hax/rle-row
dev/migrie/fhl-2021/cmdpal-select-list
dev/migrie/fhl-2021/differential-pixel-shading
dev/duhowett/hax/no-writable-glyphat
dev/migrie/fhl-2021/more-shader-variables
dev/migrie/titlebar-shenannigans
dev/miniksa/win10_font_matching
dev/lhecker/conhost-oom
dev/migrie/b/10332-less-snappy-scrolling
dev/migrie/b/7422-1px-top-border
release-1.9
dev/cazamor/move-scratch
release-1.8
dev/miniksa/manifest_2
release-1.6
release-1.7
dev/migrie/oop/the-whole-thing
dev/migrie/oop/connection-factory
dev/migrie/f/quake-dropdown-2
dev/miniksa/rle2
dev/migrie/f/quake-toCurrent-experiments-2
dev/migrie/f/quake-toCurrent-experiments
dev/migrie/f/quake-dropdown
dev/cazamor/actions-page/template
dev/duhowett/hax/cursor_stamp_foreground_background
dev/migrie/f/1860-hey-might-was-well-hack-during-a-hackathon
dev/migrie/oop-terminal.control-split-control
dev/duhowett/hax/build-with-wholearchive
dev/cazamor/spec/tsm-actions-temp
dev/migrie/oop-tear-apart-control
dev/migrie/oop-scratch-3
dev/cazamor/sui/bugfix-reload-crash
dev/migrie/f/xmacro
dev/cazamor/sui/proto/profile-nav-view
dev/migrie/f/name-windows
dev/migrie/dol/messing-with-shaders-take-1
release-1.5
dev/cazamor/sui/inheritance-hyperlinks-test
dev/migrie/r/commandline-lib-002
dev/migrie/f/com.fabrikam.toaster
dev/cazamor/adaptive-cards-prototype
dev/migrie/f/commandline-lib
dev/miniksa/zipzoom2
dev/migrie/f/remote-commandlines
dev/migrie/f/632-elevated-profiles
dev/migrie/oop-broker-000
dev/migrie/fix-pr-7015
dev/duhowett/clang
dev/miniksa/input_tests_2
dev/miniksa/input2
dev/migrie/oop-rpc-000
release-1.4
dev/migrie/oop-mixed-elevation-1
dev/migrie/oop-window-content-1
cinnamon/open-json
dev/miniksa/input_tests
dev/duhowett/hax/tsm-graphviz
dev/miniksa/input
dev/duhowett/hax/caption_buttons
release-1.3
dev/cazamor/a11y/expand-line-under-viewport
dev/cazamor/acc/ch/word-nav-perf
dev/cazamor/spec/settings-ui-architecture-draft
dev/duhowett/hax/tap_upgrade
dev/migrie/f/pane-exit-animation
release-1.2
dev/migrie/move-lib-up-and-dll-down
release-1.1
dev/migrie/f/branch-2-backup
dev/migrie/f/settings-getters-only
dev/duhowett/hax/command_palette_search
dev/migrie/f/6856-let-terminalpage-expandcommands
dev/migrie/f/theming-2020
dev/migrie/oop-scratch-4
dev/duhowett/hax/punchout
dev/migrie/s/action-ids
dev/migrie/f/lets-just-generate-these
dev/migrie/oop-scratch-2
dev/miniksa/dcomp
dev/miniksa/gotta_go_fast_spsc
dev/miniksa/gotta_go_fast
dev/miniksa/perf_skip_checks
dev/miniksa/perf_buffer_dig
dev/migrie/s/1203-cursorTextColor
dev/migrie/f/fix-intellisense-i-guess-backup
release-1.0
dev/migrie/f/execute-commandlines
dev/migrie/f/2046-Command-Palette-v2
dev/migrie/b/6421-passthrough-alt
dev/migrie/b/moving-focus-is-hard
dev/miniksa/set
dev/migrie/f/1203-phase-1
dev/migrie/f/get-localtests-in-ci
dev/cazamor/drag-panes
dev/cazamor/tile-background
release-0.11
dev/duhowett/dev/duhowett/hax/appstate_remember
dev/duhowett/hax/wpf_win_8_hax
dev/migrie/b/3088-weird-exact-wrap-resize
release-0.10
dev/migrie/b/4591-custom-scaling-bug
dev/duhowett/hax/attr_smuggling
dev/migrie/b/5161-mingw-vim-fix
dev/miniksa/dx_bitmap
dev/migrie/b/1503-try-messing-with-cooked-read
dev/duhowett/eyebeam
dev/migrie/b/5113-experiments
dev/duhowett/hax-selection-exclusive
dev/migrie/f/more-vt-renderer-tracing
dev/miniksa/bitmap
dev/duhowett/wprp
dev/miniksa/bitmap-mad-with-power
dev/migrie/f/resize-quirk
dev/migrie/f/reflow-buffer-on-resize-002
wpf-renderer-revert
dev/miniksa/draw
release-0.9
dev/miniksa/tabs-color-fix
dev/miniksa/4309
dev/migrie/f/just-wrapping
dev/migrie/b/3490-try-another-resize-algo
release-0.8
dev/migrie/b/3490-a-simpler-resize
dev/migrie/b/3490-resize-down
dev/miniksa/4254
dev/migrie/f/conpty-wrapped-lines-2
dev/migrie/b/be-better-at-hiding
dev/migrie/f/3327-xaml-theming-proto
dev/miniksa/gardening2
release-0.7
dev/duhowett/conpty-flags
dev/migrie/f/603-vintage-opacity
dev/migrie/PR#3181-comments
dev/duhowett/font-64
release-0.5
dev/migrie/b/663-paste-lf-always
dev/migrie/b/2011-reordered-fallthrough-strings
dev/migrie/b/411-init-tab-stops
dev/migrie/b/json-patching-is-hard
dev/migrie/b/2455-try-getting-tests-working
dev/migrie/b/1223-change-256-table
dev/migrie/f/2171-openterm.cmd
dev/migrie/f/drag-panes
dev/migrie/f/2046-command-palette
release-0.3
dev/miniksa/manager
dev/migrie/f/non-terminal-panes
dev/migrie/f/passthrough-2019
dev/miniksa/shared_pch
dev/migrie/f/1897-less-duplicated-work
release-0.2
dev/cazamor/mcs/viewport-selection
dev/duhowett/version_hack
v1.25.923.0
v1.24.10921.0
v1.25.622.0
v1.24.10621.0
v1.24.10212.0
v1.23.20211.0
v1.24.3504.0
v1.23.13503.0
v1.24.2812.0
v1.23.12811.0
v1.24.2682.0
v1.23.12681.0
v1.24.2372.0
v1.23.12371.0
v1.23.12102.0
v1.22.12111.0
v1.23.11752.0
v1.22.11751.0
v1.22.11141.0
v1.23.11132.0
v1.23.10732.0
v1.22.10731.0
v1.21.10351.0
v1.22.10352.0
v1.23.10353.0
v1.22.3232.0
v1.21.3231.0
v1.22.2912.0
v1.21.2911.0
v1.22.2702.0
v1.21.2701.0
v1.22.2362.0
v1.21.2361.0
v1.21.1772.0
v1.20.11781.0
v1.21.1382.0
v1.20.11381.0
v1.21.1272.0
v1.20.11271.0
v1.20.11215.0
v1.19.11213.0
v1.20.10822.0
v1.19.10821.0
v1.20.10572.0
v1.19.10573.0
v1.20.10303.0
v1.19.10302.0
v1.18.10301.0
v1.20.10293.0
v1.19.10292.0
v1.18.10291.0
v1.18.3181.0
v1.19.3172.0
v1.19.2831.0
v1.18.2822.0
v1.19.2682.0
v1.18.2681.0
v1.18.1462.0
v1.17.11461.0
v1.18.1421.0
v1.17.11391.0
v1.17.11043.0
v1.16.10261.0
v1.17.1023
v1.16.10231.0
v1.15.3465.0
v1.16.3463.0
v1.15.2712.0
v1.15.2874.0
v1.16.2641.0
v1.16.2523.0
v1.15.2524.0
v1.15.2282.0
v1.14.2281.0
v1.14.1962.0
v1.15.2002.0
v1.15.2001.0
v1.15.1862.0
v1.14.1861.0
v1.14.1451.0
v1.14.1432.0
v1.13.11431.0
v1.13.10983.0
v1.12.10982.0
v1.13.10733.0
v1.12.10732.0
v1.13.10395.0
v1.12.10393.0
v1.13.10336.0
v1.12.10334.0
v1.12.3472.0
v1.11.3471.0
v1.12.2931.0
v1.12.2922.0
v1.11.2921.0
v1.11.2731.0
v1.10.2714.0
v1.11.2421.0
v1.10.2383.0
v1.10.1933.0
v1.9.1942.0
v1.9.1523.0
v1.8.1521.0
v1.9.1445.0
v1.8.1444.0
v1.8.1092.0
v1.7.1091.0
v1.8.1032.0
v1.7.1033.0
v1.7.572.0
v1.6.10571.0
v1.5.10411.0
v1.6.10412.0
v1.6.10272.0
v1.5.10271.0
v1.5.3242.0
v1.4.3243.0
v1.5.3142.0
v1.4.3141.0
v1.4.2652.0
v1.3.2651.0
v1.3.2382.0
v1.2.2381.0
v1.1.2233.0
v1.2.2234.0
v1.1.2021.0
v1.2.2022.0
v1.1.1812.0
v1.0.1811.0
v1.1.1671.0
v1.0.1401.0
v0.11.1333.0
v0.11.1251.0
v0.11.1191.0
v0.11.1111.0
v0.11.1121.0
v0.10.781.0
v0.10.761.0
v0.9.433.0
v0.8.10261.0
v0.8.10091.0
v0.7.3451.0
v0.7.3382.0
v0.7.3291.0
v0.7.3252.0
v0.6.3181.0
v0.6.2951.0
v0.6.2911.0
v0.5.2762.0
v0.5.2761.0
v0.5.2681.0
v0.5.2661.0
v0.3.2321.0
v0.4.2342.0
v0.4.2382.0
v0.3.2171.0
v0.3.2142.0
v0.2.1831.0
v0.2.1715.0
v0.2.1703.0
v0.1.1621.0
v0.1.1581.0
v0.1.1502.0
v0.1.1431.0
v0.1.1361.0
v0.1.1093.0
v0.1.1161.0
v0.1.1204.0
experiment-master
v0.1.1025.0
experiment-OutsideBuild
broken-tabstops
RS2-final
v0.1.1002.0
experiment-rel-windows-inbox
experiment-f-ServerApp
v0.1.1211.0
1904.29002
1810.02002
1708.14008
Labels
Clear labels
⛺ Reserved
A11yCO
A11yMAS
A11ySev1
A11ySev2
A11ySev3
A11yTTValidated
A11yUsable
A11yVoiceAccess
A11yWCAG
Area-Accessibility
Area-AtlasEngine
Area-AzureShell
Area-Build
Area-Build
Area-Chat
Area-CmdPal
Area-CodeHealth
Area-Commandline
Area-CookedRead
Area-DefApp
Area-Extensibility
Area-Fonts
Area-GroupPolicy
Area-i18n
Area-Input
Area-Interaction
Area-Interop
Area-Localization
Area-Output
Area-Performance
Area-Portable
Area-Quality
Area-Remoting
Area-Rendering
Area-Schema
Area-Server
Area-Settings
Area-SettingsUI
Area-ShellExtension
Area-ShellExtension
Area-ShellExtension
Area-Suggestions
Area-Suggestions
Area-TerminalConnection
Area-TerminalControl
Area-Theming
Area-UserInterface
Area-VT
Area-Windowing
Area-WPFControl
AutoMerge
Blocking-Ingestion
Culprit-Centennial
Culprit-WinUI
Disability-All
Disability-Blind
Disability-LowVision
Disability-Mobility
External-Blocked-WinUI3
Fixed
Gathering-Data
good first issue
HCL-E+D
HCL-WindowsTerminal
Help Wanted
Impact-Compatibility
Impact-Compliance
Impact-Correctness
Impact-Visual
In-PR
InclusionBacklog
InclusionBacklog-Windows TerminalWin32
InclusionCommitted-202206
Issue-Bug
Issue-Docs
Issue-Feature
Issue-Feature
Issue-Question
Issue-Samples
Issue-Scenario
Issue-Task
Needs-Attention
Needs-Author-Feedback
Needs-Bisect
Needs-Discussion
Needs-Repro
Needs-Tag-Fix
Needs-Tag-Fix
Needs-Triage
No-Recent-Activity
Priority-0
Priority-1
Priority-2
Priority-3
Product-Cmd.exe
Product-Colortool
Product-Colortool
Product-Colortool
Product-Conhost
Product-Conpty
Product-Meta
Product-Powershell
Product-Terminal
Product-WSL
pull-request
Resolution-Answered
Resolution-By-Design
Resolution-Duplicate
Resolution-External
Resolution-Fix-Available
Resolution-Fix-Committed
Resolution-No-Repro
Resolution-Won't-Fix
Severity-Blocking
Severity-Crash
Severity-DataLoss
spam
this-will-be-a-breaking-change
Tracking-External
WindowsTerminal_Win32
Work-Item
zAskModeBug
zInbox-Bug
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/terminal#562
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @wez on GitHub (Feb 18, 2019).
On:
Microsoft Windows [Version 10.0.17763.134]I have implemented conpty in my terminal emulator:
https://github.com/wez/wezterm
I can successfully run
target\debug\wezterm.exeto spawn console applications such ascmd.exepowershell.exeandbash.The issue I'm seeing is that when I launch bash, either indirectly via
cmd.exeor directly via the bash launcher, conpty seems to swallow the mouse reporting escape sequences; I don't see them being received by my terminal parser, and thusvimhas no effective mouse support despite being configured withset mouse=a.Running the same WSL install via
wsl-terminaldoes have working mouse support, andweztermhas been my daily driver on Linux for about a year with working mouse support, so we can rule out an obvious misconfiguration withvimand the parser inwezterm.I've also tried
echo -e "\e[?1000h"to manually enable mouse reporting from the shell; normally (on linux and via wsl-terminal) this causes clicks in the terminal to send data to the shell (which appears as garbage input), but when running my terminal with conpty, these are also swallowed up somewhere.Is there something special needed for the apps that I spawn into my pty to be able to work with the mouse?
In case you want to double check the key portion of the code, the relevant file is:
https://github.com/wez/wezterm/blob/master/src/winpty.rs
The flow is to
CreatePipea pair of pipes,CreatePseudoConsole, and then pass that to a spawned child via the threadproc attributes, as the samples in the MSDN docs and this repo also do.@DHowett-MSFT commented on GitHub (Feb 18, 2019):
Hey @wez,
Unfortunately, ConPTY won't transit mouse reports (or, from a hosted application, requests for mouse reporting). We've got a backlog item tracking this that we're hoping to get to soon.
Unfortunately, we can't just pass encoded mouse events through: since ConPTY can host standard windows console applications, the likes of which would be expecting
MOUSE_EVENTs to come in throughReadConsoleInput, we'll need to do some translation.In all other regards, though, it sounds like you're setting up the pseudoconsole correctly.
Tracking: MSFT:20469462
@wez commented on GitHub (Feb 19, 2019):
@DHowett-MSFT thanks for the response!
It's a bit of a bummer that the mouse reporting isn't there yet, but still good that the rest of the pty stuff is possible now!
@orlp commented on GitHub (Apr 9, 2019):
I have nothing to add other than really wanting mouse support with ConPTY. With alacritty now having ConPTY support using alacritty + ssh + tmux is an incredible linux terminal on Windows, only mouse support is lacking now.
@nurbles commented on GitHub (Aug 8, 2019):
I am a heavy user of midnight commander in my Ubuntu bash shell where it works GREAT. Unfortunately, the Ubuntu shell tab in Windows Terminal 0.3.2171.0 does not appear to send ANY mouse events through to the mc application, making it extremely difficult for me to use. I was going to post a bug, but I this it would duplicate this.
@Dijir commented on GitHub (Aug 13, 2019):
For my use, sending mouse events is of utmost importance for a good experience with vim and tmux.
@knuckolls commented on GitHub (Aug 21, 2019):
Just dropping my support for this here, plus a little bit of context. Over the past month I have stopped dual booting and started using the Windows 10 insider builds "fast" ring as my primary personal machine. On that I have wsl2 working perfectly, x410 working perfectly, microsoft terminal working great, visual studio code wsl2 interop working perfectly, and the explorer.exe interop working perfectly.
This mouse input ticket is pretty much the only thing stopping me from calling wsl2 / microsoft terminal a reasonable replacement for having a separate partition / development box. Since some spots here are open source, are there any pointers as to how to see the mouse device inputs from somewhere in
/devor should I just hang tight?Thanks for all of this though! I really like it otherwise :)
@damnskippy commented on GitHub (Aug 23, 2019):
One more vote to say/request that mouse support would be so sweet, and is sorely missed by anyone using tmux, though can sort of get by without it.
@r-rojo commented on GitHub (Aug 30, 2019):
Please please please enable mouse support 😄
@damnskippy commented on GitHub (Sep 6, 2019):
@DHowett-MSFT, sorry about the nag, is there any plan to fix this any time soon? Seeing labels/priorities assigned on other issues, but this is not one of them, so just checking. Thank you.
@DHowett-MSFT commented on GitHub (Sep 6, 2019):
@damnskippy Priority is being assigned to things we need to fix in the in-box windows console host (due to internal bug deadlines). This is a huge feature (and requires an appropriately-scaled specification) and while we know we need it for v1.0 we're not actively working on it today.
If we could just "fix" it like a bug, I'd love that -- but it needs a lot more than a fix.
@tjhowse commented on GitHub (Sep 6, 2019):
Thanks for the update. Your work is appreciated.
@davericher commented on GitHub (Sep 12, 2019):
I love what you are doing here, I do, but until we get mouse support, we have to compliment this terminal with another terminal, somewhat defeating the purpose of this terminal.
@rix1337 commented on GitHub (Sep 15, 2019):
Midnight Commander without this is a nightmare.
@mdtauk commented on GitHub (Sep 15, 2019):
Mouse Input in general could be useful, say if someone in the community, were to create a DosBox add-in and profile which could run in Windows Terminal.
@chiefjester commented on GitHub (Sep 25, 2019):
I'm a heavy vim user; even I miss mouse support 😢
I just read @cinnamon-msft blog update, seems the team is aiming for 1.0 by the end of this year? Does this mean we get mouse support by the end of the year? If so, is it actively being worked on right now?
@zadjii-msft commented on GitHub (Sep 25, 2019):
Maybe, but no hard commits. Estimating how long it takes software to get done is just about as hard as proving P==NP. I'd go so far as to say that the terminal wouldn't be 1.0-ready without this.
Not currently. No one is assigned to the task, and usually when someone on the team bites off a task they'll assign themselves.
@shmuelie commented on GitHub (Sep 25, 2019):
Out of curiosity, is everything needed to do this here? Could an ambitious (read: crazy) developer take it on and make a PR?
@zadjii-msft commented on GitHub (Sep 26, 2019):
Sure, someone ambitious absolutely could try this on their own. Where to begin?
First, lets outline some scope. There's a lot of work to do with mouse input, so it'd be best to start small, and work on pieces to get to a complete solution. I think the first thing we should get working is just simple SGR-encoded mouse up/down sequences. We can work on mouse wheel events, then maybe hover, after that, but clicking I think will solve most use cases.
Start by taking a look at InputStateMachineEngine.cpp. The
InputStateMachineEngineis responsible for parsing input sent over conpty, and translating it intoINPUT_RECORDs. An enterprising young developer would want to modify that class to be able to also parse those mouse sequences, and translate them intoINPUT_RECORDs. Once you have theINPUT_RECORDs, callInteractDispatch::WriteInput. This will add thoseINPUT_RECORDs to the input buffer. Once they are in the input buffer, they'll be delivered to the attached console client application normally.Things I'd watch out for:
INPUT_RECORDs, but a stream of characters. At some point in conhost, we attempt to translate those mouseINPUT_RECORDs into a stream of characters, if the attached application is in VT mouse mode. If we do that translation before the mouse events are in the buffer, then doing the above might not work for VT applications (read:wsl). If that's the case, then we'll need to make sure that the translation from mouseINPUT_RECORDto VT-encoded mouse events is done manually for the mouse events generated by theInputStateMachineEngine.2c8b3243dc/src/interactivity/win32/windowio.cpp (L113-L129)terminalMouseInput.HandleMousewill synthesize VT sequences for the client application, but it's only called from the window proc unfortunately. So, we'll need to somehow expose a way for theInputStateMachineEngineto call that (via a new method onInteractDispatch), and if that method fails, then generate the appropriateINPUT_RECORDs.terminalMouseInput.HandleMousecall instead to the reading of the InputBuffer, and have it try to translateINPUT_RECORDs right as they're read, but that might be more complicated.@tungwaiyip commented on GitHub (Dec 11, 2019):
What the deal with this issue? Mouse works perfectly in in the ancient Windows Console. Does it mean I have to stuck with console until this is fixed?
@DHowett-MSFT commented on GitHub (Dec 11, 2019):
If you need VT mouse support, yes.
@DHowett-MSFT commented on GitHub (Dec 11, 2019):
Just an FYI to any community members who may have been looking into this (/cc @SamuelEnglard!) we’ve officially booked work on the dev team to do this. I hope we’re not stepping on your toes!
@shmuelie commented on GitHub (Dec 11, 2019):
I thought about it, but haven't been able to book my own time so perfect lol!
@rsinuhe commented on GitHub (Dec 12, 2019):
I was just playing with VSCode with the remote development extensions and found out that the integrated terminal in it actually supports mouse mode in tmux! Panel selection, window selection, panel resizing and scroll wheel support all work. I'm new to these projects though so I don't know if the terminal is part of the open source VS Codium and can be used as a starting point... sorry if this is not really useful info
@thinkjrs commented on GitHub (Jan 27, 2020):
@DHowett-MSFT @zadjii-msft @bitcrazed Your communication on this issue herein and elsewhere has been fantastic; this is an exemplar to successfully involve the community in building your software and it shows. Your team(s) (console/WSL/msft-linux) is personally responsible for my business having Windows (non-nix) installs, at all. Keep up the outstanding work 🥇
@bitcrazed commented on GitHub (Jan 28, 2020):
@thinkjrs Many thanks for your kind words.
And our sincerest thanks to you and everyone in our community who runs & tests / files bugs / submits asks, ideas, and pull-requests for Terminal, Cascadia Code, WSL, etc. Your feedback directly influences us as we prioritize work, and plan and design features.
We weren't kidding when we say that we build these features for and with our community 😜
@dmxt commented on GitHub (Feb 10, 2020):
What is the process? Are there any functional mouses in WSL? I.e.
tmuxpanel switching, clicking to change channel/server inweechat&irssi,(n)vimclicks,aptitudeclicking,htopclicking, etc.@offero commented on GitHub (Feb 10, 2020):
@dmxt Currently I use wsltty which has been the most compatible of all the terminal options for me. I look forward to switching to Terminal once some of these features come around.
@dmxt commented on GitHub (Feb 23, 2020):
I agree with your comment, after trying out all terminal emulators known to the public for Windows in the past several years, for now at the time of writing, wsltty is the best out there. Their official repo is great as well, they have a wonderful guide for me to get started out in a speedy manner. You couldn't ask for better with witty, it got full mouse support with no hiccups throughout various different workflows and tools.
I noticed the slight latency in I/O and I think it's the bottleneck of the WSL1 system. I'm on bare-metal Linux and there's 0ms latency with mouse input.
@iivmok commented on GitHub (Feb 26, 2020):
@dmxt @offero I have had success with XShell (real command line from experimental features, or ssh into WSL) - has mouse support etc, just FYI. Also apps that needs mouse support badly are midnight commander and micro editor
@SiarheiKuchukBelitsoft commented on GitHub (Apr 14, 2020):
Please take a look how it is solved in ConEmu
@kvnxiao commented on GitHub (May 20, 2020):
Any roadmap or timeline for when exactly this will hopefully be implemented? Seems like quite an important feature to release. It's kind of surprising to me that v1.0 is being released without this being resolved. I guess versioning doesn't mean anything nowadays.
@fat0troll commented on GitHub (May 20, 2020):
@kvnxiao in latest Microsoft Store version of Windows Terminal mouse input is supported (at least in Vim), as far as I can tell
@kvnxiao commented on GitHub (May 20, 2020):
@fat0troll As far as I can tell, this is definitely not the case. Even in vim with
set mouse=a, mouse input works on old conhost but not Windows Terminal 1.0.1401.0.@fat0troll commented on GitHub (May 20, 2020):
With that vim config I can click inside vim's window and cursor will move to place where I've clicked. 1.0.1401.0, Windows build 18368.836 (if it have any effect on this).
@DHowett commented on GitHub (May 20, 2020):
@kvnxiao I'm going to guess you're using OpenSSH_For_Windows_7.7. There's a bug in it (resolved in 8.x) that prevents it from working for mouse mode.
We explicitly implemented this for all VT applications that want to receive mouse input.
There's no need to be unkind.
@kvnxiao commented on GitHub (May 20, 2020):
Regarding vim, I've attempted it using neovim built for windows as a windows executable. If others are saying that mouse support does work for vim (e.g. through ssh / wsl, etc.), then I am not doubting you, but this shows that "full" support doesn't exist as of yet, which poses a more specific question:
What would be left in the roadmap for "full" mouse support in comparison with what conhost is currently capable of?
I am speaking in terms of wanting to launch generic terminal-based applications that support mouse input (and do work in conhost) through WT. For example, running several text-based/terminal user-interface applications built directly as a windows executable. These do work fine when double-clicked on to run, which resort to using conhost, but when ran through Windows Terminal they end up with just the mouse selecting the text displayed.
@niklaskorz What is the point of upvoting and downvoting the aforementioned comments when people like me have relevant questions pertaining to this topic, that may or may not still be unresolved?
@DHowett commented on GitHub (May 20, 2020):
You’re totally right. This workitem, which you have correctly identified as being for Win32 console applications receiving mouse events from any terminal, is slated for “terminal 1.x” (milestone), which indicates that we want to tackle it between now and 2.0. I don’t have a finer-grained estimate than that.
@kvnxiao commented on GitHub (May 20, 2020):
Thanks for the clarification! A bit sad that this workitem wasn't able to be competed for 1.0 but I'm eagerly awaiting for when it does, and hopefully it won't be too long of a wait 😀.
@tig commented on GitHub (May 22, 2020):
FIWW, in case you weren't aware of it, the new Powershell
Out-ConsoleGridView(https://github.com/PowerShell/GraphicalTools) is a killer test case for this. See Mouse related tracking bug there: https://github.com/PowerShell/GraphicalTools/issues/95It is built on top of
Terminal.Gui(https://github.com/tig/gui.cs).In addition, we just built a new sample app for
Terminal.Guithat y'all should be able to use to test mouse support as it comes to life in WT.Really looking forward to it!
@tig commented on GitHub (Jun 13, 2020):
Is there any way I can help get this issue fixed? It is a real bummer for GUI console apps built with Terminal.Gui (https://github.com/tig/gui.cs).
@ipcjs commented on GitHub (Jun 26, 2020):
How can i update build-in openssh to latest version?
@thochra commented on GitHub (Jun 26, 2020):
I guess you're looking for something described in this blog post (Openssh install from chocolatey) : https://blog.frankfu.com.au/2019/03/21/moving-from-windows-1809s-openssh-to-openssh-portable/
@cgsdev0 commented on GitHub (Sep 11, 2020):
@DHowett from this context, it sounds like using
OpenSSH_for_Windows_8.0p1, LibreSSL 2.6.5would be expected to work?I'm using the Terminal preview build to SSH to an Ubuntu machine with tmux mouse mode enabled, but my mouse inputs still seem to only be controlling the terminal itself.
I've also tried upgrading the server to OpenSSH 8.0, but that didn't help either.
Is this issue still blocking that sort of thing from working?
@DHowett commented on GitHub (Sep 11, 2020):
Ah, the
xin 8.x might be 1. I was not aware that they released an 8.0 build.@cgsdev0 commented on GitHub (Sep 11, 2020):
I'll give that a shot. Thanks for the incredibly fast response!It works! Amazing, thank you!
@Hamayama commented on GitHub (Oct 31, 2020):
I began to understand this issue.
Sadly, MS doesn't implement mouse input function of Win32 API on Windows Terminal yet.
(Only VT escape sequence is supported.)
I tried to replace ReadConsoleInputW and PeekConsoleInputW in my application
to work with mouse on Windows Terminal.
First, I run the following code.
Then, mouse input can be received as VT escape sequence (sgr-1006) (e.g.
\x1b[<0;10;20M).But, another problem occurred.
Some key input (such as arrow keys) are also received as VT escape sequence (e.g.
\x1b[A).I tried to convert these unwanted VT escape sequece to key event of win32 API,
but this is incomplete.
(virtual key code and virtual scan code casually become zero, etc.)
My source code is here.
https://gist.github.com/Hamayama/6add968870269f2426716fad79724b31
( PDC_read_console_input_w and PDC_peek_console_input_w are alternative functions. )
I want a method to disable VT escape sequece except for mouse input.
for example
or
But, this might be a wrong idea for the future ...
@o-sdn-o commented on GitHub (Nov 24, 2020):
I found that there is no tracking of mouse movement in
src/terminal/parser/InputStateMachineEngine.cpp: 391(translation of SGR VT-sequences intoINPUT_RECORDs).In other words, the Terminal sends VT-sequences for ConPTY, but ConPTY only monitors the state of the mouse buttons. Changes in mouse coordinates are ignored:
src/terminal/parser/InputStateMachineEngine.cpp: 391:With the current state of support for mouse input, the following option is possible.
You can add coordinate tracking and mouse movement will start working in classic console applications.
src/terminal/parser/InputStateMachineEngine.hpp: 172:src/terminal/parser/InputStateMachineEngine.cpp: 391:Note: Before starting a classic console application, you need to request mouse tracking in SGR format:
Windows PowerShell
PS C:\Users> [char]0x1b + "[?1003;1004;1006h"Command Prompt
C:\Users> echoCtrl+[[?1003;1004;1006hParameters
1003- ANY_EVENT_MOUSE_MODE1004- any unsupported mode (e.g.1001or9999) to forward the sequence through ConPTY to the Terminal itself1006- SGR_EXTENDED_MODEas a result, the Terminal will start sending mouse events to ConpTY, which will start generating
INPUT_RECORDs for the classic console application.@DHowett commented on GitHub (Nov 24, 2020):
Good catch. We'll have to make sure we fix that when we actually move to support this 😄
@igoradamenko commented on GitHub (Dec 22, 2020):
Hey folks!
Sorry to interrupt, but is it the right issue to track the bug where I can't scroll
lessorgit logoutput? I'm using WSL 2 with Ubuntu 20.04 inside, and when I doless long-fileorgit logI can't scroll the output using my mouse.Not sure, should I track this issue or create a new one?
@d3x0r commented on GitHub (Dec 22, 2020):
@iamakulov not really - though maybe I can give you a fix.
TERM gets set to xterm-256color
lessdoesn't understand this, and would prefer it to beTERM=xterm(maybe)? seems to be working for me today.... but I think when I connected to centos i had issues; no, that's working too... somewhere something complained about the TERM setting that gave me a clue.
otherwise - no, your issue is nothing to do with mouse input.
@paddywaan commented on GitHub (Jan 13, 2021):
Hi, I just want to double check that I don't post a duplicate issue, and this sounds awfully familiar to my inability to have windows terminal + OpenSSH to register mouse events. My issue definitely isn't specific to an application such as vim, as htop and other utilities also appear to be ignoring VT input. Is someone able to confirm that this is the same issue? Thanks.
@DHowett commented on GitHub (Jan 13, 2021):
@paddywaan OpenSSH 7.7 as shipped in Windows doesn’t pass along the mouse events that applications request. Upgrade to 8.2, from the repository at https://github.com/powershell/win32-openssh.
@paddywaan commented on GitHub (Jan 13, 2021):
Is that a typo or a mistake? I've installed the latest v8.1 from the releases, as well as rebooted however the issue persists. I've found: https://github.com/PowerShell/Win32-OpenSSH/issues/1158 yet this does not yield any new resolutions. Sorry to clutter this discussion, I will post this same message in the thread I've linked.
@T1MOXA commented on GitHub (Feb 24, 2021):
Can confirm, mouse clicks works fine with

OpenSSH_for_Windows_8.1p1, LibreSSL 2.9.2from
https://github.com/PowerShell/Win32-OpenSSH/releases/tag/v8.1.0.0p1-Beta
UPD.
But it's quite buggy
@d3x0r commented on GitHub (Feb 24, 2021):
So why is openssh in ms terminal so special?
Can confirm it still doesn't work with other native console apps; it just selects.
Hmm - is there an unbind I have to do maybe like for ctrl-c,v and F11?
@zadjii-msft commented on GitHub (Feb 24, 2021):
If you're using
ssh(even the win32-openssh version), then you're probably hitting the "VT mouse mode" input path, rather than the Win32 input path. VT mouse mode is supported in the Terminal, while win32-style mouse mode is not yet.@d3x0r commented on GitHub (Feb 25, 2021):
Ok; what is the API for 'VT mouse mode'?
@christianparpart commented on GitHub (Feb 25, 2021):
https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking
Generally, search for mouse keyword in this whole document.
You need to send a DECSM for the given mouse mode you are interested in,
and then you get events via stdin until you disable this mode via DECRM
again.
@unphased commented on GitHub (Apr 16, 2021):
I'm confused by this topic. Upon first and second reading, it seemed that the issue was fixed and awaiting updated OpenSSH delivery by Microsoft as seen here: https://github.com/PowerShell/Win32-OpenSSH/issues/1310
I wasn't concerned about VT mouse support at first. I was just trying to get my slightly unusual escape codes configured for Windows Terminal. Based on having seen this topic, I went to install MSYS2, and used its pacman to obtain
ssh, which when using this ssh (instead of calling ssh from PowerShell), my configured sendInput key binds for Windows Terminal began to work!At this point the next step is VT mouse support. I don't rely on mouse, but I do end up using it extensively for things such as clicking and scrolling different panes in tmux. Mouse support still doesn't work! The key to this comment is that even in extensive testing without involving any SSH, I still cannot make Windows Terminal enter VT mouse mode.
I'm running:
and testing by:
echo -e "\e[?1000h". This does not work at all. When I run this in Putty, it will begin to emit mouse events in code. But it has no effect in Windows Terminal in bash. This appears to be the most basic possible way toAs explained in the XTerm control sequences documentation.
@unphased commented on GitHub (Apr 16, 2021):
Wow! OK I have found something out. I enabled
:set mouse=ain nvim and it is working, both directly running as command line, and under powershell. So this is working after all! All I have to do now is to find out how to get SSH to behave!!@unphased commented on GitHub (Apr 16, 2021):
Pretty much just stuck here though. It's hard to work out what nvim is doing differently, but
set mouse=adefinitely doesn't work in the vim that I got via MSYS2. And no amount of coaxing works forecho -e "\e[?1000h"either still. I suspect that there's something windows-specific (at least there is in the neovim code) at play.@DHowett commented on GitHub (Apr 16, 2021):
So, there’s a little trick you can do to see what Terminal is receiving from the client process (roughly. There’s some translation going on, but when an app sends DECSET/DECRST it is unmodified and passes directly through. Translation only happens for things that would manipulate the screen) and what you’re sending.
"debugFeaturesEnabled": trueThis should, gods willing, open the “debug tap”. I hope I remembered the key name correct.
This is the only debug feature that is toggled by that setting right now, so it is safe to leave on.
@unphased commented on GitHub (Apr 16, 2021):
Thanks, wow some easter eggs!
Holding any Alt appears to force any open tab action (whether the plus button, picking a profile from dropdown, or ctrl+T) to open the tab as a pane...
@DHowett commented on GitHub (Apr 16, 2021):
Hmmm.. we were supposed to treat double-alt (assuming your keyboard sends left and right alt key codes!) as an override for single-alt. Let me check on that setting name, just to be sure.
@DHowett commented on GitHub (Apr 16, 2021):
Sorry, it’s just
"debugFeatures": true. 😄@unphased commented on GitHub (Apr 16, 2021):
Awesome, this is working.
It appears to pump some output whenever a regular key is pressed, it sends some output when a modifier key like shift or ctrl is pressed, and also when they are released.
It looks like maybe the red stuff is what's received and the white stuff is what's sent out? Something like that, anyway. I got set up for screen capture, give me a sec and we'll take a look at what's going on with the different test cases.
@unphased commented on GitHub (Apr 16, 2021):
https://user-images.githubusercontent.com/1542910/114969866-1d2b6700-9e2e-11eb-978d-c6e1ddc66f5e.mp4
Luckily this squeezes in under the 10MB github limit. Sorry for the rather small font, it's my preference but I realize it makes the debug pane pretty hard to read since it's got special chars in it. Do let me know if it's unreadable.
I may also be able to work this out on my own given this debug panel. I see a 1002 and a 1006 thing in the codes when nvim enables mouse...
I would also like to express my gratitude for your assistance in this.
@unphased commented on GitHub (Apr 16, 2021):
Looks like nvim (which works to toggle it) spits out
␛[?1002h␛[?1006h␛[?25l␛[H␛[?25hwhen settingmouse=aand␛[?1002l␛[?1006l␛[?25l␛[H␛[?25hwhen settingmouse=.Vim is doing
␛[?1h␍␛[?1h␛[?25l␛[91C0,0-1␛[9CAll␛[H␛[?25hand
␛[?1h␍␛[?1h␛[?25l␛[91C0,0-1␛[9CAll␛[H␛[?25hrespectively, which... look exactly the same.
echo -e "\e[?1000h"appears to produce␛[?2004l␛[?2004h␛[?25lwhich makes very little sense to me also.echo -e "\e[?1006h"produces␛[?2004l␛[?2004h␛[?25lwhich is the same. So maybe bash is doing something weird here too.?25his Display Cursor?1002his to enable Cell Motion Mouse Tracking?1006his SGR Mouse Modelcounterparts are the oppositeHis just Home AFAICT?2004is bracketed paste mode. so I guess it just switches bracketed paste mode off while echoing and then switches it back on, (or toggling it twice for whatever reason) it's not really converting whatever into 2004. So my echoes aren't making it through. Maybe I shouldn't be running bash the way that I am.I guess I'm at a loss if echo -e doesn't work from bash.
@tig commented on GitHub (Apr 16, 2021):
Can we get someone on the Windows Terminal team to explain what needs to happen for
Terminal.Guiapps to work with Windows Terminal now that it (apparently) has mouse support?If I understand all this correctly (please correct me if I'm wrong):
Terminal.GuiappsIf this is correct, is there a way I can get an OpenSSH build installed so I can test it now?
I think
Terminal.Guiworking in Windows Terminal as well as it does in cmd.exe or ConEmu should be an exit criterion for declaring WT supports mouse. Can we get a commitment from the Windows Terminal team that they will addTerminal.Guito their validation for mouse support?@zadjii-msft commented on GitHub (Apr 16, 2021):
ssh.exethat ships with Windows), then you're always gonna have a bad time. The advice is to update to 8.*I believe that's the current lay of the land. I don't know which style mouse input they're using, but I'd bet it's the Win32 style.
@tig commented on GitHub (Apr 16, 2021):
Good info. Here's our tracking issue: https://github.com/migueldeicaza/gui.cs/issues/332
Here's the code for Mouse support in our Windows driver:
28580de3c5/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs (L269)Pretty sure that means we're using Windows style.
Our Linux driver is here:
https://github.com/migueldeicaza/gui.cs/blob/master/Terminal.Gui/ConsoleDrivers/CursesDriver/CursesDriver.cs
I don't have time right now to understand what it is using (is Curses == VT-style???).
FWIW, running our
UICatalogapp in WT 1.8 with WSL (Debian 10) results in some mouse stuff working (tracking but no clicks).@unphased commented on GitHub (Apr 16, 2021):
@DHowett Could I get your take on my reporting above, it seems like neovim is able to set the mouse mode in a way that is satisfactory to Terminal but MSYS2's vim, bash, and ssh all don't. I don't understand the distinction of what win32 style mouse input is supposed to be. Is that the reason for why neovim works? Is it this code?
Maybe my MSYS2 tool experiments are just misguided and I need to install OpenSSH 8 for windows. I am having trouble working out how to install 8.1.0.0 and it's also kind of problematic that it's a 2 year old build.
@DHowett commented on GitHub (Apr 16, 2021):
@unphased so, VT mouse mode is the more "standard" control sequence-based encoding for mouse events, where mouse input comes in as a coded text stream; projects written for platforms other than Windows tend to use it. It's the one controlled by DECSET 1000, 1002, 1006, and friends. Works great over SSH (when their Win32 compatibility code doesn't get in the way).
Win32 mouse mode is an artifact of the Windows console ecosystem, where mouse events come in as data structures through
ReadConsoleInput[AW]. (SSH can't even handle these, so it actually just totally drops all mouse input on the floor, even when Terminal tries.)This specific issue tracks converting standard VT mouse input into Win32 mouse mode so that Terminal can continue to speak standards-language and Windows applications that expect Windows mouse input (FAR manager comes to mind) can get it.
What you're seeing is a failure of MSYS2 to send us a request for mouse mode. I suspect I know why this is happening. . . and because of that I'd like to direct discussion of this particular bug over to #6859
In short: msys/the cygwin runtime (they're one and the same) is telling us to enable mouse mode after it tells us "i cannot handle VT input". This is incomprehensible to Terminal.
@unphased commented on GitHub (Apr 16, 2021):
@DHowett Thank you for the update. Does that mean that my wild guess is sort of close? E.g. that there are some deeper issues with MSYS2's bash/ssh that are preventing things from working properly (even though its ssh is an improvement over windows OpenSSH 7.x) and that i will need a windows build of OpenSSH 8.x to use and it should be able to do a good job of handling escape codes including mouse codes? And that this is all VT mouse stuff. I'm mainly interested in the use of Linux/UNIX systems from windows, so that means WSL/WSL2 (which has been fine for a while) and SSH to another host.
@DHowett commented on GitHub (Apr 16, 2021):
Indeed! I'm not sure the best way to install their latest release, sorry. I'm a bit out of the loop.
WSL + SSH should work perfectly, however. 😄
@unphased commented on GitHub (Apr 16, 2021):
That's not a bad idea. But... I'm actually going the other way around with a Linux host and Win10 as a KVM guest using VFIO for PCIe peripherals (including GPU) these days. Trying to set up a holy grail situation where I can pass the GPU in when booting up windows virtually, and access the underlying host via SSH for terminal based development, which I've been doing for 10 years. This way the host can build software while the Windows client is fully accelerated, all on one local machine.
I don't think it will be very doable to run HyperV from inside a kvm guest. It would be interesting. It may work. But, I'm not really interested.
@magiblot commented on GitHub (Apr 17, 2021):
Just like you say, apps using the Win32 API do not receive mouse events in Windows Terminal. However, if I follow these steps:
wsl.printf "\x1B[?1002h\x1B[?1006h"The following sample program and video demonstrate this behaviour:
mouseon.cpp
https://user-images.githubusercontent.com/20713561/115096027-cdc76280-9f23-11eb-8884-fcf0caa4c3b0.mp4
Cheers.
@DHowett commented on GitHub (Apr 17, 2021):
@magiblot we have the translator (thanks to @carlos-zamora!) but we do not have the infrastructure that converts a Win32 call to
SetConsoleModeon the input handle into a DECSET 1000/1006. 😄I’ve asked @PankajBhojwani to look into it.
@magiblot commented on GitHub (Apr 17, 2021):
Thanks Dustin. Then this is almost fixed, isn't it?
@unphased commented on GitHub (Apr 18, 2021):
@DHowett Thanks again for your help. I was able to get the OpenSSH 8.1 installed via this answer and I have mouse events working in Windows Terminal. Beautiful.
@tig commented on GitHub (Apr 18, 2021):
I just did the following
Installed latest OpenSSH:
Ran

Terminal.Gui's sample app in Windows Terminal 1.8:The mouse partially works WHICH IS A HUGE VICTORY!
However, we're not receiving all mouse events. Double click, mouse move, and mouse wheel are not working, for example.
@unphased did you see all mouse events when you tried this???
@magiblot commented on GitHub (Apr 18, 2021):
Mouse move events might work if you do
printf "\x1B[?1003h\x1B[?1006h"(with1003instead of1002).@tig commented on GitHub (Apr 18, 2021):
That did not appear to work.
@unphased commented on GitHub (Apr 18, 2021):
I did not specifically test doubleclick since I rarely use that in my tmux/vim workflows. But move and wheel definitely worked.
@DHowett commented on GitHub (Apr 19, 2021):
@tig just so you know, we will not officially support Win32 mouse input through the pseudoconsole until this issue is closed, so I cannot countenance shipping a solution that depends on enabling VT mouse input directly. 😄
We'll make sure that all sorts of mouse events work (hover, wheel, click w/ any combination of buttons) before closing.
@tig commented on GitHub (Apr 19, 2021):
Right on! Hugs.
@nkrepo commented on GitHub (Apr 20, 2021):
@DHowett do you an ETA when Win32 mouse for pseudoconsole will land?
@DHowett commented on GitHub (Apr 20, 2021):
@nkrepo before Terminal 2.0, for sure.
@Luk164 commented on GitHub (May 2, 2021):
I tried installing OpenSSH 8 and use it together with WT but mouse events did not work. WSL worked and when I used SSH within WSL it worked too. Did I mess up somewhere?
@zadjii-msft commented on GitHub (May 27, 2021):
Wait uh, did #9970 close this? @DHowett
@billybraga commented on GitHub (May 27, 2021):
With Microsoft Terminal Preview 1.9.14450.0 and using
set mouse=ain vim, scrolling works for me!!!@DHowett commented on GitHub (May 27, 2021):
Hey, it sure should have!
@DHowett commented on GitHub (May 27, 2021):
For everyone following along in the audience: This shipped with ConPTY as of Terminal 1.9; eventually the change will flow back out to Windows as well.
@tig commented on GitHub (May 27, 2021):
Woot! Woot! Woot.
I've just closed https://github.com/migueldeicaza/gui.cs/issues/332
I thank you. And all Terminal.Gui users thank you.
@ozgb commented on GitHub (May 27, 2021):
Thank you devs! 🎉❤️ Been following this one for a while!
@silverqx commented on GitHub (Oct 11, 2021):
Does it really work for you? Because it does not for me, I'm talking about pure vim on windows in windows terminal.
WinTerm - 1.11.2731
Vim - 8.2.3487
It only works if I ssh to my Gentoo virtual machine and run vim there (from the WindowsTerminal or from the cmd terminal) and it also works when I start vim from MSYS2 mingw64.
Is good to tell that scrolling works in the Midnight Commander ( mc.exe executed in WT ).
Left-click works for me in all the above-described environments.
I have tried different settings, --clean param, and also tried to disable QuickEdit Mode.
Scrolling does not work also in the cmd and PowerShell terminals.
@rbreaves commented on GitHub (Nov 18, 2021):
@DHowett @DHowett-MSFT I have noticed that the current release build of Windows 10 does not appear to have mouse support when going through VSCode's integrated console - however Windows 11 and VSCode does have mouse support in the integrated Powershell console (to ssh sessions).
Is this is an oversight and will it be remedied in a future update? Also the VSCode team says the issue is with ConPTY, not VSCode.
@DHowett commented on GitHub (Nov 18, 2021):
@rbreaves Unfortunately, they're right -- the issue is in ConPTY. Also unfortunate is that we don't get any say in what features get backported to Windows 10 ☹️.
Effectively, Windows development has all moved on to Windows 11. Only specific features, with leadership approval, get cherry-picked into the stable Windows 10 branches. The successive updates to Windows 10 20H1 (20H2, 21H1, 21H2) are all based on the same original code plus some "leadership approved" features backported.
That's why we're working so hard to get conhost (and therefore conpty) decoupled from the operating system: so that we can give folks like you updates in a more timely fashion.
@sdegutis commented on GitHub (Jan 22, 2022):
Is this by any chance why mouse support in
tig(withset mouse = truein~/.tigrc) does not work inside git-bash in Windows Terminal, but does work inside Ubuntu in Windows Terminal? They're both Windows Terminal which is why I thought both should work identically?@rbreaves commented on GitHub (Jan 22, 2022):
Oddly enough I’ve mostly stopped using the built in Terminal w/ vscode. I now toggle Windows Terminal as though it’s a quake terminal which works fine either way. I didn’t do this because of the lack of proper conpty support in vscode though w/ win10. I moved on because I do a fake blur w/ glassit & just wanted more space for my code editor.
I still think it’s important for them to decouple conpty - clearly leadership doesn’t understand its importance to developers. Guessing its fix looks no better than a half a dozen others they’d reject & unless you’re a dev then a good terminal experience is just “nice to have” & not a must.
https://gist.github.com/rbreaves/eb7c989ecf71440e31d1f159d2a4619d
@cbartondock commented on GitHub (May 15, 2022):
:set mouse=astill not working for me in Powershell + VIM. No scrolling.@rbreaves commented on GitHub (May 15, 2022):
Why would it? Vim was written to work w/ posix compliant shells.. aka sh, bash, zsh. Etc.
@zadjii-msft commented on GitHub (May 16, 2022):
@rbreaves That's just... not accurate at all. The shell should have nothing to do with how vim handles mouse mode. Mouse mode is a terminal feature, not a shell one.
@cbartondock would you mind filing a separate issue so we can follow up with you and get to the root cause of your issue? Mouse mode should generally work for both the console and the Terminal now. There are a few bugs on the backlog IIRC, but filing a separate issue would be the easiest way for us to get to the root cause here. (without pinging the other 50 people on this thread 😝)
@silverqx commented on GitHub (May 16, 2022):
The problem is in the vim itself, I have debugged it and mouse events from the scroll wheel are correctly propagated to the vim, but vim doesn't correctly handle them.
It is logical because when the vim WIN32 implementation was written mouse wheel events did not work, that was years before.