// #[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 // */ // }