use brlapi::{Connection, TtyMode, text};
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("Simple BrlAPI Rust Example");
println!("==========================");
let connection = Connection::open()?;
println!("Connected to BrlAPI");
let (width, height) = connection.display_size()?;
let driver = connection.display_driver()?;
let model = connection.display_model()?;
println!("Display: {width}x{height} cells");
println!("Driver: {driver}");
println!("Model: {model}");
let (tty_mode, tty_num) = TtyMode::enter_auto(&connection, None)?;
println!("TTY mode entered (using virtual console {tty_num})");
let driver = connection.display_driver()?;
if driver == "NoBraille" {
println!("Skipping text write for NoBraille driver (testing/development mode)");
} else {
let writer = tty_mode.writer();
match writer.write_contracted_en_us_g2("Hello from Rust BrlAPI!", text::CursorPosition::Off)
{
Ok(()) => {
println!("Contracted text written to braille display");
}
Err(_) => {
writer.write_text("Hello from Rust BrlAPI!")?;
println!("Text written to braille display (uncontracted fallback)");
}
}
}
println!("\nPress Enter to exit...");
let mut input = String::new();
std::io::stdin().read_line(&mut input)?;
println!("Cleaning up...");
Ok(())
}