Commit Graph

359 Commits

Author SHA1 Message Date
Stephen Hunt
cd1780c2d8
Capture double click mouse events (#826)
When double clicking on Windows, the crossterm_winapi emits the first
click with `EventFlags::PressOrRelease` and the second click with
`EventFlags::DoubleClick`. Previously this code explicitly ignored mouse
events with `EventFlags::DoubleClick` because "double click not
supported by unix terminals." This change captures the double click and
surfaces them as normal click events.
2024-01-06 13:01:07 +01:00
Dheepak Krishnamurthy
a2b0e6a537
Fix typo in BeginSynchronizedUpdate docstring (#833) 2024-01-06 12:53:45 +01:00
Pedro Mendes
544ac19c41
Remove redundant docs and broken anchor (#845) 2024-01-06 12:52:00 +01:00
jumbledFox
dc09c6a057
Fix minor formatting mistake (#852) 2024-01-06 12:50:50 +01:00
Timon
9fb2e0dafd
Update dependencies (#809) 2023-08-06 14:18:21 +02:00
Benjamin Grosse
8e254000c2
Fix format (#808) 2023-08-06 14:01:26 +02:00
Kevin Vigor
f3c0754bf5
Add style::force_color_output() API to override NO_COLOR. (#802) 2023-08-05 15:38:17 +02:00
Dave
00f7d06151
[testing] serial testing perserving terminal (#791)
This change does two things:
- add the serial_test crate to run selected tests serial rather
  than in parallel. This is done because they use global state
  so running them in parallel leads to race conditions and flaky
  results (sometimes they pass, sometimes they fail). Running
  them serialy avoids this flakiness.
- create a screen buffer within the test. This avoids changing
  the terminal (screen buffer) which is running the test. for
  example, a test that changes the terminal size to 20 x 20 can
  leave the developer running the test with a resized terminal.
  Creating a separate screen buffer for the test avoids this.
2023-08-05 15:36:42 +02:00
Robin Grönberg
55739aa786
Add support for scrolling left and right. (#788) 2023-08-05 15:35:43 +02:00
Benjamin Grosse
10c54b0056
Add window_size() for unix (#790)
It is possible to render images in terminals with protocols such as Sixel,
iTerm2's, or Kitty's. For a basic sixel or iTerm2 image printing, it is
sufficient to print some escape sequence with the data, e.g. cat image just
works, the image is displayed and enough lines are scrolled.

But for more sophisticated usage of images, such as TUIs, it is necessary to
know exactly what area that image would cover, in terms of columns/rows of
characters. Then it would be possible to e.g. resize the image to a size that
fits a col/row area precisely, not overdraw the image area, accommodate layouts,
etc.

Thus, provide the window size in pixel width/height, in addition to cols/rows.

The windows implementation always returns a "not implemented" error. The
windows API exposes a font-size, but in logical units, not pixels.

This could be further extended to expose either "logical window size",
or "pixel font size" and "logical font size".
2023-08-05 15:34:27 +02:00
Peter Hebden
ff01914328
Parse hex colour codes in serde:🇩🇪:Deserialize (#801) 2023-08-05 15:25:59 +02:00
blt__
2cb2658180
Fix use statement in docs (#799) 2023-08-05 15:24:54 +02:00
Dheepak Krishnamurthy
eaa8b7567b
Fix typo in docs (#796) 2023-08-05 15:22:27 +02:00
Kevin Vigor
2c534fc69e
Support NO_COLOR. (#782) 2023-06-12 19:06:11 +02:00
Timon
b2cbd94853
Upgrade to bitflags 2 (#777) 2023-04-08 15:30:43 +02:00
gibbz00
a2c9350ff2
Unwrap crossterm::Result<T, ErrorKind> to std::io::Result. (#765) 2023-04-07 18:17:10 +02:00
Timon
41901c6382 Update lib.rs docs 2023-04-07 17:29:15 +02:00
Timon
03c25178af
Make the events module an optional feature (#776) 2023-04-07 17:09:15 +02:00
Jimmy Hartzell
b354b4cc34
Make direct winapi deps optional (#767) 2023-04-01 13:07:46 +02:00
Jonathan Dickinson
e065a56536
Add synchronized output/update (#756) 2023-02-26 16:40:13 +01:00
Jonathan
e7fc698f24
Do not panic on poll() errors, and ignore EINTR (#762) 2023-02-26 16:39:19 +01:00
Michael Davis
bca71adad7
Implement "report alternate keys" from the Kitty Keyboard Protocol (#754)
The "report alternate keys" part of the Kitty keyboard protocol will
send an additional codepoint containing the "shifted" version of a
key based on the keyboard layout. This is useful for downstream
applications which set up keybindings based on symbols instead of
exact keys being pressed.

For example, underscore (_) with the Alt modifier is sent as minus (-)
with Alt and Shift modifiers. A terminal will send the underscore
codepoint as an alternate though, and we can use that information and
the presence of the Shift modifier to resolve the symbol. Other
examples are 'A-(' (sent as 'A-S-9') and 'A-)' (sent as 'A-S-0').

This change allows pushing the "report alternate keys" flag and
overwrites the keycode and modifiers for any shifted keys sent by the
terminal.
2023-02-11 10:40:11 +01:00
Michael Davis
383d9a7827
Remove early return in keyboard enhancement check (#751) 2023-02-01 20:13:12 +01:00
Timon
318f810a39
Support key release events for windows. (#745) 2023-01-28 11:05:31 +01:00
ahoyiski
a993a98291
Derived copy and clone for SetCursorStyle. (#748) 2023-01-21 22:18:41 +01:00
Cl00e9ment
fadec7a19c
SetCursorStyle documentation improvements (#744) 2023-01-12 21:08:39 +01:00
Jonathan
814df1c4a0
Fix CI failures (#746) 2023-01-12 21:04:29 +01:00
Timon
614e6a73b7
Add SetCursorStyle command (#742) 2023-01-11 21:04:02 +01:00
Jonathan
05229b71f9
Replace mio polling with filedescriptor's poll() (#735) 2023-01-11 20:15:32 +01:00
Michael Davis
3fe13e18d8
Add a function for checking keyboard enhancement support (#732)
* Add a function for checking keyboard enhancement support

This follows the Kitty documentation's recommended way to check for
progressive keyboard enhancement: query the flags and then query the
primary device attributes (which is broadly supported). If we receive
only the device attributes, the protocol is not supported.

* Check keyboard enhancement in the event-read example
2023-01-10 19:23:34 +01:00
Basil Kohler
bb48b93b46
Improved doc for KeyEvent kind field (#739) 2023-01-10 19:16:52 +01:00
djarb
4383f8f010
Improved F1 through F4 handling (#736) 2022-12-28 13:11:04 +01:00
Leon
bf9f78994a
Fix minor warnings and typos (#726) 2022-12-04 12:41:24 +01:00
Baldo Alessandro
ce8dd0bd6d
Fixed typo in doc (#722) 2022-10-21 10:04:22 +02:00
Nathan
f845cea516
Make Windows resize event match terminal::size (#714) 2022-10-09 20:08:17 +02:00
Jesse Weaver
263a0fb5cf
Fix parsing of event types/modifiers with certain keys (#716) 2022-10-09 16:14:54 +02:00
DrowsyShroomy
10d1dc246d
Add commas after commands in doc 2022-08-21 11:13:09 +02:00
Tim Oram
c8ab3152bb
Fix typo on KeyEventState::CAPS_LOCK docs (#707) 2022-08-21 11:12:09 +02:00
Peter Hebden
69280152c9
More readable table in viewing source (#706) 2022-08-14 19:00:41 +02:00
Charlie Groves
1fee5ff30c
Add bracketed paste parsing (#693) 2022-08-10 09:16:56 +02:00
Jesse Weaver
2a612e0f24
Add extra modifiers/state from kitty keyboard protocol (#696) 2022-08-10 09:09:14 +02:00
Jeron Aldaron Lau
2362bc2cc6
Fix tty buffer size typo for unix (#701) 2022-08-10 09:07:08 +02:00
Jesse Weaver
551659dee3
Add support for functional key codes from kitty keyboard protocol (#691) 2022-07-30 10:33:59 +02:00
Charlie Groves
069497b43b
Emit focus events (#689) 2022-07-28 12:07:01 +02:00
Charlie Groves
c6a8952201
Add execute_winapi on SetStyle to fix Windows compilation (#690) 2022-07-26 16:01:16 +02:00
Jesse Weaver
60e51be726
Increase support for kitty enhanced keyboard protocol (#688) 2022-07-24 14:06:46 +02:00
ahoyiski
4dcc6fc058
Create the SetStyle tuple struct (#687) 2022-07-21 21:05:02 +02:00
Timon
0c20590774
0.24 (#686) 2022-07-02 21:39:25 +02:00
Arkadiusz Wahlig
fe37c8947b
Add support for cursor keys events in application mode (^[Ox) (#681) 2022-07-02 19:38:04 +02:00
Timon
0a435e6cb9
Make clear which mouse commands are 0-based and which are 1-based. (#684) 2022-06-30 21:42:57 +02:00