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 {
29            scroll_speed: 1,
30        }
31    }
32}
33
34impl MouseManager {
35    pub fn set_scroll_speed(&mut self, speed: usize) {
36        self.scroll_speed = speed;
37    }
38
39    pub fn handle_mouse(&mut self, event: MouseInput) -> MouseEvent {
40        match event {
41            MouseInput::Scroll(lines) => {
42                let lines = lines * self.scroll_speed as isize;
43                MouseEvent::Scroll(lines)
44            }
45            _ => MouseEvent::None,
46        }
47    }
48}