1use crate::lvgl;
2
3#[derive(Clone, Copy, Debug, PartialEq, Eq)]
4pub enum Key {
5 Up,
6 Down,
7 Right,
8 Left,
9 Escape,
10 Delete,
11 Backspace,
12 Enter,
13 Next,
14 Previous,
15 Home,
16 End,
17 Character(u8),
18}
19
20impl From<u32> for Key {
21 fn from(value: u32) -> Key {
22 match value {
23 lvgl::lv_key_t_LV_KEY_UP => Key::Up,
24 lvgl::lv_key_t_LV_KEY_DOWN => Key::Down,
25 lvgl::lv_key_t_LV_KEY_RIGHT => Key::Right,
26 lvgl::lv_key_t_LV_KEY_LEFT => Key::Left,
27 lvgl::lv_key_t_LV_KEY_ESC => Key::Escape,
28 lvgl::lv_key_t_LV_KEY_DEL => Key::Delete,
29 lvgl::lv_key_t_LV_KEY_BACKSPACE => Key::Backspace,
30 lvgl::lv_key_t_LV_KEY_ENTER => Key::Enter,
31 lvgl::lv_key_t_LV_KEY_NEXT => Key::Next,
32 lvgl::lv_key_t_LV_KEY_PREV => Key::Previous,
33 lvgl::lv_key_t_LV_KEY_HOME => Key::Home,
34 lvgl::lv_key_t_LV_KEY_END => Key::End,
35 character => Key::Character(character as u8),
36 }
37 }
38}
39
40impl From<Key> for u32 {
41 fn from(value: Key) -> u32 {
42 match value {
43 Key::Up => lvgl::lv_key_t_LV_KEY_UP,
44 Key::Down => lvgl::lv_key_t_LV_KEY_DOWN,
45 Key::Right => lvgl::lv_key_t_LV_KEY_RIGHT,
46 Key::Left => lvgl::lv_key_t_LV_KEY_LEFT,
47 Key::Escape => lvgl::lv_key_t_LV_KEY_ESC,
48 Key::Delete => lvgl::lv_key_t_LV_KEY_DEL,
49 Key::Backspace => lvgl::lv_key_t_LV_KEY_BACKSPACE,
50 Key::Enter => lvgl::lv_key_t_LV_KEY_ENTER,
51 Key::Next => lvgl::lv_key_t_LV_KEY_NEXT,
52 Key::Previous => lvgl::lv_key_t_LV_KEY_PREV,
53 Key::Home => lvgl::lv_key_t_LV_KEY_HOME,
54 Key::End => lvgl::lv_key_t_LV_KEY_END,
55 Key::Character(character) => character as u32,
56 }
57 }
58}