diff --git a/ps2d/src/keymap.rs b/ps2d/src/keymap.rs index 24c3ecda17515a6223f0d22e86c3b6b2795cae1e..41ea1d2c74efaa8a94b854fd4f4ebbda4075b2fe 100644 --- a/ps2d/src/keymap.rs +++ b/ps2d/src/keymap.rs @@ -1,5 +1,5 @@ -pub mod english { - static ENGLISH: [[char; 2]; 58] = [ +pub mod us { + static US: [[char; 2]; 58] = [ ['\0', '\0'], ['\x1B', '\x1B'], ['1', '!'], @@ -61,7 +61,7 @@ pub mod english { ]; pub fn get_char(scancode: u8, shift: bool) -> char { - if let Some(c) = ENGLISH.get(scancode as usize) { + if let Some(c) = US.get(scancode as usize) { if shift { c[1] } else { @@ -72,6 +72,111 @@ pub mod english { } } } + +pub mod gb { + static GB: [[char; 2]; 58] = [ + ['\0', '\0'], + ['\x1B', '\x1B'], + ['1', '!'], + ['2', '"'], + ['3', '£'], + ['4', '$'], + ['5', '%'], + ['6', '^'], + ['7', '&'], + ['8', '*'], + ['9', '('], + ['0', ')'], + ['-', '_'], + ['=', '+'], + ['\x7F', '\x7F'], + ['\t', '\t'], + ['q', 'Q'], + ['w', 'W'], + ['e', 'E'], + ['r', 'R'], + ['t', 'T'], + ['y', 'Y'], + ['u', 'U'], + ['i', 'I'], + ['o', 'O'], + ['p', 'P'], + ['[', '{'], + [']', '}'], + ['\n', '\n'], + ['\0', '\0'], + ['a', 'A'], + ['s', 'S'], + ['d', 'D'], + ['f', 'F'], + ['g', 'G'], + ['h', 'H'], + ['j', 'J'], + ['k', 'K'], + ['l', 'L'], + [';', ':'], + ['\'', '@'], + ['`', '¬'], + ['\0', '\0'], + ['#', '~'], + ['z', 'Z'], + ['x', 'X'], + ['c', 'C'], + ['v', 'V'], + ['b', 'B'], + ['n', 'N'], + ['m', 'M'], + [',', '<'], + ['.', '>'], + ['/', '?'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + [' ', ' '] + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\0', '\0'], + ['\\', '|'], + ]; + + pub fn get_char(scancode: u8, shift: bool) -> char { + if let Some(c) = GB.get(scancode as usize) { + if shift { + c[1] + } else { + c[0] + } + } else { + '\0' + } + } +} + pub mod dvorak { static DVORAK: [[char; 2]; 58] = [ ['\0', '\0'], @@ -296,4 +401,3 @@ pub mod bepo { } } } - diff --git a/ps2d/src/main.rs b/ps2d/src/main.rs index a63405659b30ae08441fec22a8c08bcebea060ca..76ad116f952fa6c20dec279fd17cf3a6cdcdbc87 100644 --- a/ps2d/src/main.rs +++ b/ps2d/src/main.rs @@ -197,12 +197,13 @@ fn daemon(input: File) { let keymap = match env::args().skip(1).next() { Some(k) => match k.to_lowercase().as_ref() { "dvorak" => (keymap::dvorak::get_char), - "english" => (keymap::english::get_char), + "us" => (keymap::us::get_char), + "gb" => (keymap::gb::get_char), "azerty" => (keymap::azerty::get_char), "bepo" => (keymap::bepo::get_char), - &_ => (keymap::english::get_char) + &_ => (keymap::us::get_char) }, - None => (keymap::english::get_char) + None => (keymap::us::get_char) }; let ps2d = Arc::new(RefCell::new(Ps2d::new(input, keymap)));