Text input crate for Bevy UI using cosmic text.
Spawn a TextInputNode
component to create a text input:
commands
.spawn((
TextInputNode::default(),
Node {
width: Val::Px(500.),
height: Val::Px(250.),
..default()
},
))
The size has to be set using Node
, there isn't any support for responsive sizing yet.
The active text input is set using the InputFocus
resource. Inputs can also be set to activate on clicks.
There are a couple of examples, text_input
is the most complete:
cargo run --example text_input
- Undo and redo
- Text selection with keyboard and mouse
- Overwrite and insert edit modes
- Horizontally scrolling single line input
- Validated integer, decimal and hexadecimal input modes
- Vertical and horizontal scrolling
- Cut, copy, and paste with clipboard support
- Display prompt when empty
- Keyboard navigation supports page up & down, home & End, next & previous word, buffer start & end and scroll up & down
- Mouse wheel scrolling
- Max characters limit
- Double-click and triple-click to select words and paragraphs respectively
- Scrolling can be glitchy if the line height isn't an exact divisor of the input box.
- The plugin can't access any existing
FontAtlasSet
s frombevy_text
and has to create its own atlases for any fonts it uses.
- IME
- Responsive sizing
- Rich text
- Syntax highlighting
- World UI
- Text2d
- Onscreen keyboard
- Clipboard on android