Commit Graph

691 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
Charles German
6d6bed9c2c
Update Cargo.toml snippets (#811)
The snippets show version 0.26, but the latest version is 0.27
2024-01-06 12:54:40 +01:00
Dheepak Krishnamurthy
b565646f27
Fix typo in CHANGELOG.md (#816) 2024-01-06 12:54:15 +01:00
Dheepak Krishnamurthy
a2b0e6a537
Fix typo in BeginSynchronizedUpdate docstring (#833) 2024-01-06 12:53:45 +01:00
Valerii Petryniak
0914f2d91e
Update README.md: fix typo (#832) 2024-01-06 12:53:21 +01:00
javaLux
7ef45a6991
Add MacOs monterey to tested terminals (#846) 2024-01-06 12:52:53 +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
08762b3ef4 Update CHANGELOG.md 2023-08-06 14:21:48 +02:00
Timon
9a6d740ed5 0.27.0 2023-08-06 14:20:33 +02: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
Timon
e4ffda6439 Update CHANGELOG.md 2023-08-05 15:57:36 +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
Wilfred Hughes
db443b08e8
Specify and document MSRV for 0.26 (#798)
As of 318f810a39, crossterm uses RFC
2795 implicit named arguments, which shipped in Rust 1.58.

Co-authored-by: Timon <timonpost@hotmail.nl>
2023-08-05 15:34:37 +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
Peter Hebden
2f232efad4
Add NixOS Kitty to tested terminals (#800) 2023-08-05 15:24:28 +02:00
Dheepak Krishnamurthy
eaa8b7567b
Fix typo in docs (#796) 2023-08-05 15:22:27 +02:00
Deathvenom
7183d65d6b
Update versions to 0.26 (Cargo.toml) (#804)
The Cargo.toml snippet lists the version as 0.23 while the latest one is 0.26, replaced the same
2023-08-05 15:22:17 +02:00
Peter Hebden
e2ddc1787a
Move key release event to breaking change (#805) 2023-08-05 15:22:00 +02:00
Remo Senekowitsch
1efdce7ef6
Link to latests docs in README (#785) 2023-06-12 19:06:45 +02:00
Kevin Vigor
2c534fc69e
Support NO_COLOR. (#782) 2023-06-12 19:06:11 +02:00
José Luis Cruz
dfc67e54c8
Fix interactive-demo (#783) 2023-04-23 12:41:00 +02:00
Timon
769b18151c Add comments to feature flags 2023-04-08 15:34:23 +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
lesleyrs
923aaf517b
Fix examples on windows (#775) 2023-04-07 17:10:56 +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
Timon
1af259f9ce Release 0.26.1 2023-02-26 16:52:54 +01: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
Orhun Parmaksız
4e880a5c90
Fix typos in CHANGELOG.md (#757) 2023-02-12 14:57:27 +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
338c122e99
0.26.0 (#750) 2023-01-28 11:12:26 +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
Arkid
81eb00fc32
Reword to De(serialize) (#729) 2023-01-08 14:17:56 +01:00