aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/src/bin/software-keyboard.rs47
1 files changed, 47 insertions, 0 deletions
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;
+ }
+ }
+}