virtio_input_decoder/
mouse.rs

1pub struct MouseDecoder();
2
3#[derive(PartialEq, Debug, Clone, Copy)]
4pub enum Mouse {
5    ScrollUp,
6    ScrollDown,
7    X(usize),
8    Y(usize),
9}
10
11impl MouseDecoder {
12    pub fn decode(code : usize, value : usize)->Result<Mouse, ()> {
13        if code == 8 && value == 1 || code == 0x151 && value == 0 {
14            Ok(Mouse::ScrollUp)
15        }
16        else if code == 8 && value == 0xffffffff || code == 0x150 && value == 0 {
17            Ok(Mouse::ScrollDown)
18        }
19        else if code == 0 {
20            Ok(Mouse::X(value))
21        }
22        else if code == 1 {
23            Ok(Mouse::Y(value))
24        }
25        else {
26            Err(())
27        }
28    }
29}