1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
pub struct MouseDecoder();

#[derive(PartialEq, Debug, Clone, Copy)]
pub enum Mouse {
    ScrollUp,
    ScrollDown,
    X(usize),
    Y(usize),
}

impl MouseDecoder {
    pub fn decode(code : usize, value : usize)->Result<Mouse, ()> {
        if code == 8 && value == 1 || code == 0x151 && value == 0 {
            Ok(Mouse::ScrollUp)
        }
        else if code == 8 && value == 0xffffffff || code == 0x150 && value == 0 {
            Ok(Mouse::ScrollDown)
        }
        else if code == 0 {
            Ok(Mouse::X(value))
        }
        else if code == 1 {
            Ok(Mouse::Y(value))
        }
        else {
            Err(())
        }
    }
}