From bc1efaebf34a0967a995aace94d9b1e4debcef79 Mon Sep 17 00:00:00 2001 From: Karl Hobley Date: Sun, 23 Apr 2017 16:16:43 +0100 Subject: [PATCH] Added gb keymap --- ps2d/src/keymap.rs | 106 ++++++++++++++++++++++++++++++++++++++++++++- ps2d/src/main.rs | 1 + 2 files changed, 106 insertions(+), 1 deletion(-) diff --git a/ps2d/src/keymap.rs b/ps2d/src/keymap.rs index 2d514156c9..41ea1d2c74 100644 --- a/ps2d/src/keymap.rs +++ b/ps2d/src/keymap.rs @@ -72,6 +72,111 @@ pub mod us { } } } + +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 fce59bb645..76ad116f95 100644 --- a/ps2d/src/main.rs +++ b/ps2d/src/main.rs @@ -198,6 +198,7 @@ fn daemon(input: File) { Some(k) => match k.to_lowercase().as_ref() { "dvorak" => (keymap::dvorak::get_char), "us" => (keymap::us::get_char), + "gb" => (keymap::gb::get_char), "azerty" => (keymap::azerty::get_char), "bepo" => (keymap::bepo::get_char), &_ => (keymap::us::get_char)