You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/vt-input-mode.md
+13-14Lines changed: 13 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,24 +14,23 @@ Anyone who wants to:
14
14
- Share applications on LAN (using inetd, netcat, etc).
15
15
- Track every key press and key release.
16
16
- Track position dependent keys such as WASD.
17
-
- Distinguish between Left and Right physical keys.
17
+
- Distinguish between physical Left and Right keyboard keys.
18
18
- Get consistent output regardless of terminal window resize.
19
19
- Track mouse on a pixel-wise level.
20
20
- Track mouse outside the terminal window (getting negative coordinates).
21
-
- Take advantage of high-resolution wheel scrolling.
21
+
- Take advantage of high-resolution (fine) scrolling.
22
22
- Track scrollback text manipulation.
23
23
- Track application closing and system shutdown.
24
-
- Be independent of operating system and third party libraries.
25
24
26
25
Existing approaches have the following drawbacks:
27
26
- There is no uniform way to receive keyboard events.
28
27
- Window size tracking requires platform-specific calls with no way to synchronize the output.
29
-
- Mouse tracking modes lack support for negative coordinates, and high-resolution wheel scrolling.
28
+
- Mouse tracking modes lack support for negative coordinates, and high-resolution scrolling.
30
29
- Bracketed paste mode does not support the transfer of binary data and data containing sequences of bracketed paste mode itself.
31
30
32
31
## Conventions
33
32
34
-
- We use HEX-form of the uint32 for the 32-bit floating point value representation (IEEE-754 32-bit binary float, Little-Endian).
33
+
- We use HEX-form of the uint32 for the 32-bit floating point value representation (IEEE-754 32-bit binary float, Little-Endian). For example, the floating point value `3.1415f` is represented as the unsigned integer in hex `40490E56` (decimal 1078529622).
35
34
- Space characters are not used in sequence payloads and are only used for readability of the description.
36
35
- //todo: keyboard only: All unescaped symbols outside of this protocol should be treated as clipboard pasted data.
`id=<ID>` | Device group id (unsigned integer value).
369
-
`kbmods=<KeyMods>` | Keyboard modifiers bit field (see Keyboard event).
370
-
`coor=<X>,<Y>` | Pixel-wise 32-bit floating point coordinates of the mouse pointer relative to the console's text cell grid. The integer part corresponds to the cell coordinates, and the fractional part corresponds to the normalized position within the cell. The pointer's screen pixel coordinates can be calculated by multiplying these floating point values by the cell size. Receiving a NaN value is a signal that the mouse has left the window or disconnected.
371
-
`buttons=<ButtonState>` | Mouse buttons bit field.
372
-
`iscroll=<DeltaX>,<DeltaY>` | Low-resolution integer horizontal and vertical scroll deltas (one scroll line corresponds to a value of 1). Low-resolution scroll deltas increase as the values of high-resolution deltas accumulate, and are zeroed when the scroll direction changes.
373
-
`fscroll=<DeltaX>,<DeltaY>` | High-resolution 32-bit floating-point horizontal and vertical scroll deltas (one scroll line corresponds to a value of 1.0f).
367
+
`id=<ID>` | Device group id (unsigned integer).
368
+
`kbmods=<KeyMods>` | Keyboard modifiers bit field (unsigned integer, the same value as in Keyboard event).
369
+
`coor=<X>,<Y>` | 32-bit floating point coordinates of the mouse pointer relative to the console's text cell grid. The integer part corresponds to the cell coordinates, and the fractional part corresponds to the normalized position within the cell. The pointer's screen pixel coordinates can be calculated by multiplying these floating point values by the cell size. Receiving a NaN value is a signal that the mouse has left the window or disconnected.
370
+
`buttons=<ButtonState>` | Mouse buttons bit field (unsigned integer).
371
+
`iscroll=<DeltaX>,<DeltaY>` | Horizontal and vertical low-resolution scroll deltas in form of signed integers (one scroll line corresponds to a value of 1). Low-resolution scroll deltas increase as the values of high-resolution deltas accumulate, and are zeroed when the scroll direction changes.
372
+
`fscroll=<DeltaX>,<DeltaY>` | Horizontal and vertical high-resolution scroll deltas in form of 32-bit floating-point values (one scroll line corresponds to a value of 1.0f).
374
373
375
374
The mouse tracking event fires on any mouse activity, as well as on keyboard modifier changes.
Copy file name to clipboardExpand all lines: src/netxs/desktopio/terminal.hpp
+11Lines changed: 11 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -517,6 +517,17 @@ namespace netxs::ui
517
517
state = (mode)(state & ~(m));
518
518
if (!state) token.clear();
519
519
owner.selection_selmod(smode);
520
+
auto gates = owner.base::riseup(tier::request, e2::form::state::keybd::enlist); // Take all foci.
521
+
for (auto gate_id : gates) // Reset double click state for all gears.
522
+
{
523
+
if (auto gear_ptr = owner.base::getref<hids>(gate_id))
524
+
{
525
+
for (auto& [bttn_id, s] : gear_ptr->stamp) // Reset double click state. The issue is related to Far Manager, which changes the mouse tracking mode before releasing the button when double-clicking.
0 commit comments