Skip to main content

fret_core/input/
keyboard.rs

1pub use keyboard_types::Code as KeyCode;
2
3/// Maps a key code to a lowercase ASCII character for basic typeahead use.
4///
5/// This intentionally only covers `a-z` and `0-9` to match common Radix-like prefix typeahead
6/// behavior. Returns `None` for non-alphanumeric keys.
7pub fn keycode_to_ascii_lowercase(key: KeyCode) -> Option<char> {
8    use keyboard_types::Code;
9
10    Some(match key {
11        Code::KeyA => 'a',
12        Code::KeyB => 'b',
13        Code::KeyC => 'c',
14        Code::KeyD => 'd',
15        Code::KeyE => 'e',
16        Code::KeyF => 'f',
17        Code::KeyG => 'g',
18        Code::KeyH => 'h',
19        Code::KeyI => 'i',
20        Code::KeyJ => 'j',
21        Code::KeyK => 'k',
22        Code::KeyL => 'l',
23        Code::KeyM => 'm',
24        Code::KeyN => 'n',
25        Code::KeyO => 'o',
26        Code::KeyP => 'p',
27        Code::KeyQ => 'q',
28        Code::KeyR => 'r',
29        Code::KeyS => 's',
30        Code::KeyT => 't',
31        Code::KeyU => 'u',
32        Code::KeyV => 'v',
33        Code::KeyW => 'w',
34        Code::KeyX => 'x',
35        Code::KeyY => 'y',
36        Code::KeyZ => 'z',
37        Code::Digit0 => '0',
38        Code::Digit1 => '1',
39        Code::Digit2 => '2',
40        Code::Digit3 => '3',
41        Code::Digit4 => '4',
42        Code::Digit5 => '5',
43        Code::Digit6 => '6',
44        Code::Digit7 => '7',
45        Code::Digit8 => '8',
46        Code::Digit9 => '9',
47        _ => return None,
48    })
49}