Files
RedBear-OS/usbhidd/src/keymap.rs
T
2024-04-12 09:27:36 -06:00

479 lines
9.5 KiB
Rust

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]; 87] = [
['\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'
}
}
}
pub mod it {
static IT: [[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'],
['\x20', '\x20'],
['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) = IT.get(scancode as usize) {
if shift {
c[1]
} else {
c[0]
}
} else {
'\0'
}
}
}