298 lines
8.2 KiB
Rust
298 lines
8.2 KiB
Rust
|
// #[derive(Debug)]
|
||
|
// pub struct KeyPress {
|
||
|
// released: bool,
|
||
|
// key: Key
|
||
|
// }
|
||
|
|
||
|
// #[derive(Debug)]
|
||
|
// pub enum Key {
|
||
|
// Char(char),
|
||
|
// Control(ControlKey),
|
||
|
// Escape,
|
||
|
// Unknown(u8)
|
||
|
// }
|
||
|
|
||
|
// #[derive(Debug)]
|
||
|
// pub enum ControlKey {
|
||
|
// Escape,
|
||
|
// Backspace,
|
||
|
// Tab,
|
||
|
// Enter,
|
||
|
// LControl,
|
||
|
// LShift,
|
||
|
// RShift,
|
||
|
// LAlt,
|
||
|
// CapsLock,
|
||
|
// F(u8),
|
||
|
// NumberLock,
|
||
|
// ScrollLock,
|
||
|
// }
|
||
|
|
||
|
// pub fn get_key_from_scancode(scancode: u8) -> KeyPress {
|
||
|
// if scancode == 0xe0 {
|
||
|
// return KeyPress {
|
||
|
// released: false,
|
||
|
// key: Key::Escape
|
||
|
// }
|
||
|
// }
|
||
|
|
||
|
// let released = (scancode >> 7) == 1;
|
||
|
// let scancode = scancode & 0b01111111;
|
||
|
|
||
|
// let key = match scancode {
|
||
|
// 0x01 => Key::Control(ControlKey::Escape),
|
||
|
// 0x02 => Key::Char('1'),
|
||
|
// 0x03 => Key::Char('2'),
|
||
|
// 0x04 => Key::Char('3'),
|
||
|
// 0x05 => Key::Char('4'),
|
||
|
// 0x06 => Key::Char('5'),
|
||
|
// 0x07 => Key::Char('6'),
|
||
|
// 0x08 => Key::Char('7'),
|
||
|
// 0x09 => Key::Char('8'),
|
||
|
// 0x0A => Key::Char('9'),
|
||
|
// 0x0B => Key::Char('0'),
|
||
|
// 0x0C => Key::Char('-'),
|
||
|
// 0x0D => Key::Char('='),
|
||
|
// 0x0E => Key::Control(ControlKey::Backspace),
|
||
|
// 0x0F => Key::Control(ControlKey::Tab),
|
||
|
// 0x10 => Key::Char('Q'),
|
||
|
// 0x11 => Key::Char('W'),
|
||
|
// 0x12 => Key::Char('E'),
|
||
|
// 0x13 => Key::Char('R'),
|
||
|
// 0x14 => Key::Char('T'),
|
||
|
// 0x15 => Key::Char('Y'),
|
||
|
// 0x16 => Key::Char('U'),
|
||
|
// 0x17 => Key::Char('I'),
|
||
|
// 0x18 => Key::Char('O'),
|
||
|
// 0x19 => Key::Char('P'),
|
||
|
// 0x1A => Key::Char('['),
|
||
|
// 0x1B => Key::Char(']'),
|
||
|
// 0x1C => Key::Control(ControlKey::Enter),
|
||
|
// 0x1D => Key::Control(ControlKey::LControl),
|
||
|
// 0x1E => Key::Char('A'),
|
||
|
// 0x1F => Key::Char('S'),
|
||
|
// 0x20 => Key::Char('D'),
|
||
|
// 0x21 => Key::Char('F'),
|
||
|
// 0x22 => Key::Char('G'),
|
||
|
// 0x23 => Key::Char('H'),
|
||
|
// 0x24 => Key::Char('J'),
|
||
|
// 0x25 => Key::Char('K'),
|
||
|
// 0x26 => Key::Char('L'),
|
||
|
// 0x27 => Key::Char(';'),
|
||
|
// 0x28 => Key::Char('\''),
|
||
|
// 0x29 => Key::Char('`'),
|
||
|
// 0x2A => Key::Control(ControlKey::LShift),
|
||
|
// 0x2B => Key::Char('\\'),
|
||
|
// 0x2C => Key::Char('Z'),
|
||
|
// 0x2D => Key::Char('X'),
|
||
|
// 0x2E => Key::Char('C'),
|
||
|
// 0x2F => Key::Char('V'),
|
||
|
// 0x30 => Key::Char('B'),
|
||
|
// 0x31 => Key::Char('N'),
|
||
|
// 0x32 => Key::Char('M'),
|
||
|
// 0x33 => Key::Char(','),
|
||
|
// 0x34 => Key::Char('.'),
|
||
|
// 0x35 => Key::Char('/'),
|
||
|
// 0x36 => Key::Control(ControlKey::RShift),
|
||
|
// 0x37 => Key::Char('*'),
|
||
|
// 0x38 => Key::Control(ControlKey::LAlt),
|
||
|
// 0x39 => Key::Char(' '),
|
||
|
// 0x3A => Key::Control(ControlKey::CapsLock),
|
||
|
// 0x3B => Key::Control(ControlKey::F(1)),
|
||
|
// 0x3C => Key::Control(ControlKey::F(2)),
|
||
|
// 0x3D => Key::Control(ControlKey::F(3)),
|
||
|
// 0x3E => Key::Control(ControlKey::F(4)),
|
||
|
// 0x3F => Key::Control(ControlKey::F(5)),
|
||
|
// 0x40 => Key::Control(ControlKey::F(6)),
|
||
|
// 0x41 => Key::Control(ControlKey::F(7)),
|
||
|
// 0x42 => Key::Control(ControlKey::F(8)),
|
||
|
// 0x43 => Key::Control(ControlKey::F(9)),
|
||
|
// 0x44 => Key::Control(ControlKey::F(10 )),
|
||
|
// 0x45 => Key::Control(ControlKey::NumberLock),
|
||
|
// 0x46 => Key::Control(ControlKey::ScrollLock),
|
||
|
// 0x47 => Key::Char('7'), // keypad
|
||
|
// 0x48 => Key::Char('8'), // keypad
|
||
|
// 0x49 => Key::Char('9'), // keypad
|
||
|
// 0x4A => Key::Char('-'), // keypad
|
||
|
// 0x4B => Key::Char('4'), // keypad
|
||
|
// 0x4C => Key::Char('5'), // keypad
|
||
|
// 0x4D => Key::Char('6'), // keypad
|
||
|
// 0x4E => Key::Char('+'), // keypad
|
||
|
// 0x4F => Key::Char('1'), // keypad
|
||
|
// 0x50 => Key::Char('2'), // keypad
|
||
|
// 0x51 => Key::Char('3'), // keypad
|
||
|
// 0x52 => Key::Char('0'), // keypad
|
||
|
// 0x53 => Key::Char('.'), // keypad
|
||
|
// // 3 missing here?
|
||
|
// 0x57 => Key::Control(ControlKey::F(11)),
|
||
|
// 0x58 => Key::Control(ControlKey::F(12)),
|
||
|
// _ => Key::Unknown(scancode)
|
||
|
// };
|
||
|
|
||
|
// KeyPress {
|
||
|
// released,
|
||
|
// key
|
||
|
// }
|
||
|
|
||
|
// /*
|
||
|
// 0xE0, 0x10
|
||
|
// (multimedia) previous track pressed
|
||
|
// 0xE0, 0x19
|
||
|
// (multimedia) next track pressed
|
||
|
// 0xE0, 0x1C
|
||
|
// (keypad) enter pressed
|
||
|
// 0xE0, 0x1D
|
||
|
// right control pressed
|
||
|
// 0xE0, 0x20
|
||
|
// (multimedia) mute pressed
|
||
|
// 0xE0, 0x21
|
||
|
// (multimedia) calculator pressed
|
||
|
// 0xE0, 0x22
|
||
|
// (multimedia) play pressed
|
||
|
// 0xE0, 0x24
|
||
|
// (multimedia) stop pressed
|
||
|
// 0xE0, 0x2E
|
||
|
// (multimedia) volume down pressed
|
||
|
// 0xE0, 0x30
|
||
|
// (multimedia) volume up pressed
|
||
|
// 0xE0, 0x32
|
||
|
// (multimedia) WWW home pressed
|
||
|
// 0xE0, 0x35
|
||
|
// (keypad) / pressed
|
||
|
// 0xE0, 0x38
|
||
|
// right alt (or altGr) pressed
|
||
|
// 0xE0, 0x47
|
||
|
// home pressed
|
||
|
// 0xE0, 0x48
|
||
|
// cursor up pressed
|
||
|
// 0xE0, 0x49
|
||
|
// page up pressed
|
||
|
// 0xE0, 0x4B
|
||
|
// cursor left pressed
|
||
|
// 0xE0, 0x4D
|
||
|
// cursor right pressed
|
||
|
// 0xE0, 0x4F
|
||
|
// end pressed
|
||
|
// 0xE0, 0x50
|
||
|
// cursor down pressed
|
||
|
// 0xE0, 0x51
|
||
|
// page down pressed
|
||
|
// 0xE0, 0x52
|
||
|
// insert pressed
|
||
|
// 0xE0, 0x53
|
||
|
// delete pressed
|
||
|
// 0xE0, 0x5B
|
||
|
// left GUI pressed
|
||
|
// 0xE0, 0x5C
|
||
|
// right GUI pressed
|
||
|
// 0xE0, 0x5D
|
||
|
// "apps" pressed
|
||
|
// 0xE0, 0x5E
|
||
|
// (ACPI) power pressed
|
||
|
// 0xE0, 0x5F
|
||
|
// (ACPI) sleep pressed
|
||
|
// 0xE0, 0x63
|
||
|
// (ACPI) wake pressed
|
||
|
// 0xE0, 0x65
|
||
|
// (multimedia) WWW search pressed
|
||
|
// 0xE0, 0x66
|
||
|
// (multimedia) WWW favorites pressed
|
||
|
// 0xE0, 0x67
|
||
|
// (multimedia) WWW refresh pressed
|
||
|
// 0xE0, 0x68
|
||
|
// (multimedia) WWW stop pressed
|
||
|
// 0xE0, 0x69
|
||
|
// (multimedia) WWW forward pressed
|
||
|
// 0xE0, 0x6A
|
||
|
// (multimedia) WWW back pressed
|
||
|
// 0xE0, 0x6B
|
||
|
// (multimedia) my computer pressed
|
||
|
// 0xE0, 0x6C
|
||
|
// (multimedia) email pressed
|
||
|
// 0xE0, 0x6D
|
||
|
// (multimedia) media select pressed
|
||
|
// 0xE0, 0x90
|
||
|
// (multimedia) previous track released
|
||
|
// 0xE0, 0x99
|
||
|
// (multimedia) next track released
|
||
|
// 0xE0, 0x9C
|
||
|
// (keypad) enter released
|
||
|
// 0xE0, 0x9D
|
||
|
// right control released
|
||
|
// 0xE0, 0xA0
|
||
|
// (multimedia) mute released
|
||
|
// 0xE0, 0xA1
|
||
|
// (multimedia) calculator released
|
||
|
// 0xE0, 0xA2
|
||
|
// (multimedia) play released
|
||
|
// 0xE0, 0xA4
|
||
|
// (multimedia) stop released
|
||
|
// 0xE0, 0xAE
|
||
|
// (multimedia) volume down released
|
||
|
// 0xE0, 0xB0
|
||
|
// (multimedia) volume up released
|
||
|
// 0xE0, 0xB2
|
||
|
// (multimedia) WWW home released
|
||
|
// 0xE0, 0xB5
|
||
|
// (keypad) / released
|
||
|
// 0xE0, 0xB8
|
||
|
// right alt (or altGr) released
|
||
|
// 0xE0, 0xC7
|
||
|
// home released
|
||
|
// 0xE0, 0xC8
|
||
|
// cursor up released
|
||
|
// 0xE0, 0xC9
|
||
|
// page up released
|
||
|
// 0xE0, 0xCB
|
||
|
// cursor left released
|
||
|
// 0xE0, 0xCD
|
||
|
// cursor right released
|
||
|
// 0xE0, 0xCF
|
||
|
// end released
|
||
|
// 0xE0, 0xD0
|
||
|
// cursor down released
|
||
|
// 0xE0, 0xD1
|
||
|
// page down released
|
||
|
// 0xE0, 0xD2
|
||
|
// insert released
|
||
|
// 0xE0, 0xD3
|
||
|
// delete released
|
||
|
// 0xE0, 0xDB
|
||
|
// left GUI released
|
||
|
// 0xE0, 0xDC
|
||
|
// right GUI released
|
||
|
// 0xE0, 0xDD
|
||
|
// "apps" released
|
||
|
// 0xE0, 0xDE
|
||
|
// (ACPI) power released
|
||
|
// 0xE0, 0xDF
|
||
|
// (ACPI) sleep released
|
||
|
// 0xE0, 0xE3
|
||
|
// (ACPI) wake released
|
||
|
// 0xE0, 0xE5
|
||
|
// (multimedia) WWW search released
|
||
|
// 0xE0, 0xE6
|
||
|
// (multimedia) WWW favorites released
|
||
|
// 0xE0, 0xE7
|
||
|
// (multimedia) WWW refresh released
|
||
|
// 0xE0, 0xE8
|
||
|
// (multimedia) WWW stop released
|
||
|
// 0xE0, 0xE9
|
||
|
// (multimedia) WWW forward released
|
||
|
// 0xE0, 0xEA
|
||
|
// (multimedia) WWW back released
|
||
|
// 0xE0, 0xEB
|
||
|
// (multimedia) my computer released
|
||
|
// 0xE0, 0xEC
|
||
|
// (multimedia) email released
|
||
|
// 0xE0, 0xED
|
||
|
// (multimedia) media select released
|
||
|
// 0xE0, 0x2A, 0xE0, 0x37
|
||
|
// print screen pressed
|
||
|
// 0xE0, 0xB7, 0xE0, 0xAA
|
||
|
// print screen released
|
||
|
// 0xE1, 0x1D, 0x45, 0xE1, 0x9D, 0xC5
|
||
|
// pause pressed
|
||
|
// */
|
||
|
// }
|