vfs: better keyboard map

This commit is contained in:
Mark Poliakov 2024-10-11 18:43:32 +03:00
parent ce8ccf4af9
commit 82d1af7b89

@ -227,12 +227,32 @@ impl<O: TerminalOutput> Terminal<O> {
b'd' => self.write_to_input(self.config().chars.eof),
_ => (),
},
KeyboardKey::Char(ch) if shift => match ch {
ch if ch.is_ascii_lowercase() => {
self.write_to_input(ch.to_ascii_uppercase());
}
_ => (),
},
KeyboardKey::Char(ch) if shift && pressed => {
let ch = match ch {
ch if ch.is_ascii_lowercase() => ch.to_ascii_uppercase(),
b'`' => b'~',
b'1' => b'!',
b'2' => b'@',
b'3' => b'#',
b'4' => b'$',
b'5' => b'%',
b'6' => b'^',
b'7' => b'&',
b'8' => b'*',
b'9' => b'(',
b'0' => b')',
b'-' => b'_',
b'=' => b'+',
b';' => b':',
b'\'' => b'"',
b'\\' => b'|',
b',' => b'<',
b'.' => b'>',
b'/' => b'?',
_ => continue,
};
self.write_to_input(ch);
}
KeyboardKey::Char(ch) if pressed => {
// TODO shift/ctrl
self.write_to_input(ch);
@ -243,6 +263,9 @@ impl<O: TerminalOutput> Terminal<O> {
KeyboardKey::Backspace if pressed => {
self.write_to_input(b'\x7F');
}
KeyboardKey::Escape if pressed => {
self.write_to_input(b'\x1B');
}
_ => (),
}
}