Expand description
Input handling abstraction for different sources. Input handling system for the Bubble Tea TUI framework.
This module provides the core input processing functionality for bubbletea-rs.
It is responsible for reading terminal events (keyboard, mouse, resize, focus, paste)
and converting them into messages that can be processed by the application’s model
following the Model-View-Update (MVU) pattern.
§Key Components
InputHandler- The main event processor that runs the input loopInputSource- Enum defining different input sources (terminal or custom)
§Examples
Basic usage with terminal input:
use bubbletea_rs::input::{InputHandler, InputSource};
use tokio::sync::mpsc;
let (tx, rx) = mpsc::unbounded_channel();
let input_handler = InputHandler::new(tx);
// Start the input processing loop
tokio::spawn(async move {
input_handler.run().await
});Using a custom input source:
use bubbletea_rs::input::{InputHandler, InputSource};
use tokio::sync::mpsc;
use std::pin::Pin;
let (tx, rx) = mpsc::unbounded_channel();
let custom_reader = Box::pin(std::io::Cursor::new("hello\n"));
let input_source = InputSource::Custom(custom_reader);
let input_handler = InputHandler::with_source(tx, input_source);
// Process input from the custom source
input_handler.run().await?;Structs§
- Input
Handler InputHandleris responsible for processing terminal events and sending them as messages to theProgram’s event loop.
Enums§
- Input
Source - Represents different input sources that the
InputHandlercan read from.