aboutsummaryrefslogtreecommitdiff
path: root/examples/src/bin/software-keyboard.rs
blob: cb1b0584e950a46ff4fc515cb2d6ecff4a9727ff (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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;
        }
    }
}