1[package]
2name = "crossterm"
3version = "0.29.0"
4authors = ["T. Post"]
5description = "A crossplatform terminal library for manipulating terminals."
6repository = "https://github.com/crossterm-rs/crossterm"
7documentation = "https://docs.rs/crossterm/"
8license = "MIT"
9keywords = ["event", "color", "cli", "input", "terminal"]
10exclude = ["target", "Cargo.lock"]
11readme = "README.md"
12edition = "2021"
13rust-version = "1.63.0"
14categories = ["command-line-interface", "command-line-utilities"]
15
16[lib]
17name = "crossterm"
18path = "src/lib.rs"
19
20[package.metadata.docs.rs]
21all-features = true
22
23[features]
24default = ["bracketed-paste", "events", "windows", "derive-more"]
25
26#! ### Default features
27## Enables triggering [`Event::Paste`](event::Event::Paste) when pasting text into the terminal.
28bracketed-paste = []
29
30## Enables reading input/events from the system using the [`event`] module.
31events = ["dep:mio", "dep:signal-hook", "dep:signal-hook-mio"]
32
33## Enables windows specific crates.
34windows = ["dep:winapi", "dep:crossterm_winapi"]
35
36#! ### Optional Features
37
38## Enables the [EventStream](event::EventStream) struct for async event reading.
39event-stream = ["dep:futures-core", "events"]
40
41## Enables [`serde`] for various types.
42serde = ["dep:serde", "bitflags/serde"]
43
44## Enables raw file descriptor polling / selecting instead of mio.
45use-dev-tty = ["filedescriptor", "rustix/process"]
46
47## Enables `is_*` helper functions for event enums.
48derive-more = ["dep:derive_more"]
49
50## Enables interacting with a host clipboard via [`clipboard`](clipboard/index.html)
51osc52 = ["dep:base64"]
52
53[dependencies]
54base64 = { version = "0.22", optional = true }
55bitflags = { version = "2.9" }
56derive_more = { version = "2.0.0", features = ["is_variant"], optional = true }
57document-features = "0.2.11"
58futures-core = { version = "0.3", optional = true, default-features = false }
59parking_lot = "0.12"
60serde = { version = "1.0", features = ["derive"], optional = true }
61
62# Windows dependencies
63[target.'cfg(windows)'.dependencies]
64crossterm_winapi = { version = "0.9.1", optional = true }
65winapi = { version = "0.3.9", optional = true, features = ["winuser", "winerror"] }
66
67# UNIX dependencies
68[target.'cfg(unix)'.dependencies]
69filedescriptor = { version = "0.8", optional = true }
70# Default to using rustix for UNIX systems, but provide an option to use libc for backwards
71# compatibility.
72libc = { version = "0.2", default-features = false, optional = true }
73mio = { version = "1.0", features = ["os-poll"], optional = true }
74rustix = { version = "1", default-features = false, features = ["std", "stdio", "termios"] }
75signal-hook = { version = "0.3.17", optional = true }
76signal-hook-mio = { version = "0.2.4", features = ["support-v1_0"], optional = true }
77
78[dev-dependencies]
79async-std = "1.13"
80futures = "0.3"
81futures-timer = "3.0"
82serde_json = "1.0"
83serial_test = "3.0.0"
84temp-env = "0.3.6"
85tokio = { version = "1.44", features = ["full"] }
86
87# Examples
88[[example]]
89name = "event-read"
90required-features = ["bracketed-paste", "events"]
91
92[[example]]
93name = "event-match-modifiers"
94required-features = ["bracketed-paste", "events"]
95
96[[example]]
97name = "event-poll-read"
98required-features = ["bracketed-paste", "events"]
99
100[[example]]
101name = "event-stream-async-std"
102required-features = ["event-stream", "events"]
103
104[[example]]
105name = "event-stream-tokio"
106required-features = ["event-stream", "events"]
107
108[[example]]
109name = "event-read-char-line"
110required-features = ["events"]
111
112[[example]]
113name = "stderr"
114required-features = ["events"]
115
116[[example]]
117name = "key-display"
118required-features = ["events"]
119
120[[example]]
121name = "copy-to-clipboard"
122required-features = ["osc52"]
123