pub mod us { static US: [[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'], [' ', ' '] ]; pub fn get_char(scancode: u8, shift: bool) -> char { if let Some(c) = US.get(scancode as usize) { if shift { c[1] } else { c[0] } } else { '\0' } } } 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'], ['\x1B', '\x1B'], ['1', '!'], ['2', '@'], ['3', '#'], ['4', '$'], ['5', '%'], ['6', '^'], ['7', '&'], ['8', '*'], ['9', '('], ['0', ')'], ['[', '{'], [']', '}'], ['\x7F', '\x7F'], ['\t', '\t'], ['\'', '"'], [',', '<'], ['.', '>'], ['p', 'P'], ['y', 'Y'], ['f', 'F'], ['g', 'G'], ['c', 'C'], ['r', 'R'], ['l', 'L'], ['/', '?'], ['=', '+'], ['\n', '\n'], ['\0', '\0'], ['a', 'A'], ['o', 'O'], ['e', 'E'], ['u', 'U'], ['i', 'I'], ['d', 'D'], ['h', 'H'], ['t', 'T'], ['n', 'N'], ['s', 'S'], ['-', '_'], ['`', '~'], ['\0', '\0'], ['\\', '|'], [';', ':'], ['q', 'Q'], ['j', 'J'], ['k', 'K'], ['x', 'X'], ['b', 'B'], ['m', 'M'], ['w', 'W'], ['v', 'V'], ['z', 'Z'], ['\0', '\0'], ['\0', '\0'], ['\0', '\0'], [' ', ' '] ]; pub fn get_char(scancode: u8, shift: bool) -> char { if let Some(c) = DVORAK.get(scancode as usize) { if shift { c[1] } else { c[0] } } else { '\0' } } } pub mod azerty { static AZERTY: [[char; 2]; 58] = [ ['\0', '\0'], ['\x1B', '\x1B'], ['&', '1'], ['é', '2'], ['"', '3'], ['\'', '4'], ['(', '5'], ['|', '6'], ['è', '7'], ['_', '8'], ['ç', '9'], ['à', '0'], [')', '°'], ['=', '+'], ['\x7F', '\x7F'], ['\t', '\t'], ['a', 'A'], ['z', 'Z'], ['e', 'E'], ['r', 'R'], ['t', 'T'], ['y', 'Y'], ['u', 'U'], ['i', 'I'], ['o', 'O'], ['p', 'P'], ['^', '¨'], ['$', '£'], ['\n', '\n'], ['\0', '\0'], ['q', 'Q'], ['s', 'S'], ['d', 'D'], ['f', 'F'], ['g', 'G'], ['h', 'H'], ['j', 'J'], ['k', 'K'], ['l', 'L'], ['m', 'M'], ['ù', '%'], ['*', 'µ'], ['\0', '\0'], ['ê', 'Ê'], ['w', 'W'], ['x', 'X'], ['c', 'C'], ['v', 'V'], ['b', 'B'], ['n', 'N'], [',', '?'], [';', '.'], [':', '/'], ['!', '§'], ['\0', '\0'], ['\0', '\0'], ['\0', '\0'], [' ', ' '] ]; pub fn get_char(scancode: u8, shift: bool) -> char { if let Some(c) = AZERTY.get(scancode as usize) { if shift { c[1] } else { c[0] } } else { '\0' } } } pub mod bepo { static BEPO: [[char; 2]; 58] = [ ['\0', '\0'], ['\x1B', '\x1B'], ['"', '1'], ['«', '2'], ['»', '3'], ['(', '4'], [')', '5'], ['@', '6'], ['+', '7'], ['-', '8'], ['/', '9'], ['*', '0'], ['=', '°'], ['%', '`'], ['\x7F', '\x7F'], ['\t', '\t'], ['b', 'B'], ['é', 'É'], ['p', 'P'], ['o', 'O'], ['è', 'È'], ['^', '!'], ['v', 'V'], ['d', 'D'], ['l', 'L'], ['j', 'J'], ['z', 'Z'], ['w', 'W'], ['\n', '\n'], ['\0', '\0'], ['a', 'A'], ['u', 'U'], ['i', 'I'], ['e', 'E'], [',', ';'], ['c', 'C'], ['t', 'T'], ['s', 'S'], ['r', 'R'], ['n', 'N'], ['m', 'M'], ['ç', 'Ç'], ['\0', '\0'], ['ê', 'Ê'], ['à', 'À'], ['y', 'Y'], ['x', 'X'], ['.', ':'], ['k', 'K'], ['\'', '?'], ['q', 'Q'], ['g', 'G'], ['h', 'H'], ['f', 'F'], ['\0', '\0'], ['\0', '\0'], ['\0', '\0'], [' ', ' '] ]; pub fn get_char(scancode: u8, shift: bool) -> char { if let Some(c) = BEPO.get(scancode as usize) { if shift { c[1] } else { c[0] } } else { '\0' } } }