os_terminal/
mouse.rs

1#[derive(Debug)]
2pub enum MouseButton {
3    Left,
4    Right,
5    Middle,
6}
7
8#[derive(Debug)]
9pub enum MouseInput {
10    Move(usize, usize),
11    Scroll(isize),
12    Pressed(MouseButton),
13    Released(MouseButton),
14}
15
16#[derive(Debug)]
17pub enum MouseEvent {
18    Scroll(isize),
19    None,
20}
21
22pub struct MouseManager {
23    scroll_speed: usize,
24}
25
26impl Default for MouseManager {
27    fn default() -> Self {
28        Self { scroll_speed: 1 }
29    }
30}
31
32impl MouseManager {
33    pub fn set_scroll_speed(&mut self, speed: usize) {
34        self.scroll_speed = speed;
35    }
36
37    pub fn handle_mouse(&mut self, event: MouseInput) -> MouseEvent {
38        match event {
39            MouseInput::Scroll(lines) => {
40                let lines = lines * self.scroll_speed as isize;
41                MouseEvent::Scroll(lines)
42            }
43            _ => MouseEvent::None,
44        }
45    }
46}