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
30
31
32
33
34
use crate::{Key, KeyDecoder, KeyType, Mouse, MouseDecoder};
pub struct Decoder();
#[derive(Debug, PartialEq, Clone, Copy)]
pub enum DecodeType {
Key(Key, KeyType),
Mouse(Mouse),
}
impl Decoder {
pub fn decode(etype : usize, code : usize, value: usize)->Result<DecodeType, ()> {
match etype {
3 | 2 => Ok(DecodeType::Mouse(MouseDecoder::decode(code, value).unwrap())),
1 => {
if code >= 0x150 {
Err(())
}
else {
Ok(DecodeType::Key(KeyDecoder::decode(code).unwrap(),
KeyDecoder::key_type(value).unwrap()))
}
}
_ => Err(())
}
}
pub fn convert_key(key : Key)->Result<char, ()> {
KeyDecoder::convert(key)
}
}