diff --git a/examples/src/bin/software-keyboard.rs b/examples/src/bin/software-keyboard.rs new file mode 100644 index 0000000..cb1b058 --- /dev/null +++ b/examples/src/bin/software-keyboard.rs @@ -0,0 +1,47 @@ +extern crate ctru; + +use ctru::gfx::Gfx; +use ctru::console::Console; +use ctru::services::apt::Apt; +use ctru::services::hid::{Hid, KeyPad}; +use ctru::applets::swkbd::{Swkbd, Button}; + +fn main() { + let apt = Apt::init().unwrap(); + let hid = Hid::init().unwrap(); + let gfx = Gfx::default(); + let _console = Console::default(); + + println!("Press A to enter some text or press Start to quit"); + + while apt.main_loop() { + gfx.flush_buffers(); + gfx.swap_buffers(); + gfx.wait_for_vblank(); + + hid.scan_input(); + + if hid.keys_down().contains(KeyPad::KEY_A) { + // Prepares a software keyboard with two buttons: One to cancel input and one + // to accept it. You can also use `Swkbd::init()` to launch the keyboard in different + // configurations. + let mut keyboard = Swkbd::default(); + + // String used to store text received from the keyboard + let mut text = String::new(); + + // Raise the software keyboard. You can perform different actions depending on which + // software button the user pressed + match keyboard.get_utf8(&mut text) { + Ok(Button::Right) => println!("You entered: {}", text), + Ok(Button::Left) => println!("Cancelled"), + Ok(Button::Middle) => println!("How did you even press this?"), + Err(_) => println!("Oh noes, an error happened!"), + } + } + + if hid.keys_down().contains(KeyPad::KEY_START) { + break; + } + } +}