Queries for the currently activated requests for Mouse and/or Focus events via VT sequences #19487

Open
opened 2026-01-31 06:44:51 +00:00 by claunia · 0 comments
Owner

Originally created by @ShrykeWindgrace on GitHub (Mar 6, 2023).

Description of the new feature/enhancement

I am writing a CLI app that would like to track mouse focus events, buttons events, and discard mouse move events. I can achieve that by sending to stdout the sequence \ESC[?1004h\ESC[?1003l\ESC[?1002h (source of inspiration: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking). The app then would reset these modes by emitting appropriate sequences and the end of its lifetime: \ESC[?1004l\ESC[?1003h\ESC[?1002l.

The stdin is configured as ENABLE_VIRTUAL_TERMINAL_INPUT | ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT | ENABLE_EXTENDED_FLAGS if that's relevant.

However, the approach above presumes the initial state of requested modes - and I'd rather have (in pseudocode)

let s = getRequestedEvents(stdout);
setRequestedEvents( (MOUSE_BUTTON | FOCUS) & ~MOUSE_MOVE, stdout);
app();
setRequestedEvents(s, stdout);

I wonder if it is possible to achieve that via a VT sequence (I found only https://learn.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences#query-state) or via a console API?

Cheers!

Originally created by @ShrykeWindgrace on GitHub (Mar 6, 2023). <!-- 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨 I ACKNOWLEDGE THE FOLLOWING BEFORE PROCEEDING: 1. If I delete this entire template and go my own path, the core team may close my issue without further explanation or engagement. 2. If I list multiple bugs/concerns in this one issue, the core team may close my issue without further explanation or engagement. 3. If I write an issue that has many duplicates, the core team may close my issue without further explanation or engagement (and without necessarily spending time to find the exact duplicate ID number). 4. If I leave the title incomplete when filing the issue, the core team may close my issue without further explanation or engagement. 5. If I file something completely blank in the body, the core team may close my issue without further explanation or engagement. All good? Then proceed! --> # Description of the new feature/enhancement <!-- A clear and concise description of what the problem is that the new feature would solve. Describe why and how a user would use this new functionality (if applicable). --> I am writing a CLI app that would like to track mouse focus events, buttons events, and discard mouse move events. I can achieve that by sending to `stdout` the sequence `\ESC[?1004h\ESC[?1003l\ESC[?1002h` (source of inspiration: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking). The app then would reset these modes by emitting appropriate sequences and the end of its lifetime: `\ESC[?1004l\ESC[?1003h\ESC[?1002l`. The `stdin` is configured as `ENABLE_VIRTUAL_TERMINAL_INPUT | ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT | ENABLE_EXTENDED_FLAGS` if that's relevant. However, the approach above presumes the initial state of requested modes - and I'd rather have (in pseudocode) ``` let s = getRequestedEvents(stdout); setRequestedEvents( (MOUSE_BUTTON | FOCUS) & ~MOUSE_MOVE, stdout); app(); setRequestedEvents(s, stdout); ``` I wonder if it is possible to achieve that via a VT sequence (I found only https://learn.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences#query-state) or via a console API? Cheers!
claunia added the Issue-FeatureNeeds-TriageNeeds-Tag-Fix labels 2026-01-31 06:44:51 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#19487