Skip to main content

uzor_core/input/
events.rs

1//! Keyboard input events (key codes)
2//!
3//! This module defines platform-agnostic key codes used across uzor
4//! for keyboard shortcuts and key event handling.
5
6/// Keyboard key codes
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8#[derive(Default)]
9pub enum KeyCode {
10    // Letters
11    A, B, C, D, E, F, G, H, I, J, K, L, M,
12    N, O, P, Q, R, S, T, U, V, W, X, Y, Z,
13
14    // Numbers
15    Num0, Num1, Num2, Num3, Num4,
16    Num5, Num6, Num7, Num8, Num9,
17
18    // Function keys
19    F1, F2, F3, F4, F5, F6,
20    F7, F8, F9, F10, F11, F12,
21
22    // Navigation
23    ArrowUp,
24    ArrowDown,
25    ArrowLeft,
26    ArrowRight,
27    Home,
28    End,
29    PageUp,
30    PageDown,
31
32    // Editing
33    Backspace,
34    Delete,
35    Insert,
36    Enter,
37    Tab,
38    Space,
39    Escape,
40
41    // Symbols
42    Plus,
43    Minus,
44    BracketLeft,
45    BracketRight,
46
47    /// Unknown or unmapped key
48    #[default]
49    Unknown,
50}
51
52
53#[cfg(test)]
54mod tests {
55    use super::*;
56
57    #[test]
58    fn test_key_code_default() {
59        assert_eq!(KeyCode::default(), KeyCode::Unknown);
60    }
61
62    #[test]
63    fn test_key_code_categories() {
64        let _letter = KeyCode::A;
65        let _number = KeyCode::Num1;
66        let _func = KeyCode::F1;
67        let _nav = KeyCode::ArrowUp;
68        let _edit = KeyCode::Backspace;
69        let _symbol = KeyCode::Plus;
70    }
71}