virtio_input_decoder/
decoder.rs1use crate::{Key, KeyDecoder, KeyType, Mouse, MouseDecoder};
2
3pub struct Decoder();
4
5#[derive(Debug, PartialEq, Clone, Copy)]
6pub enum DecodeType {
7 Key(Key, KeyType),
8 Mouse(Mouse),
9}
10
11impl Decoder {
12 pub fn decode(etype : usize, code : usize, value: usize)->Result<DecodeType, ()> {
14 match etype {
15 3 | 2 => Ok(DecodeType::Mouse(MouseDecoder::decode(code, value).unwrap())),
16 1 => {
17 if code >= 0x150 {
18 Err(())
20 }
21 else {
22 Ok(DecodeType::Key(KeyDecoder::decode(code).unwrap(),
23 KeyDecoder::key_type(value).unwrap()))
24 }
25 }
26 _ => Err(())
27 }
28 }
29
30 pub fn convert_key(key : Key)->Result<char, ()> {
32 KeyDecoder::convert(key)
33 }
34}