summaryrefslogtreecommitdiffstats
path: root/rsnix/src/ps2.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rsnix/src/ps2.rs')
-rw-r--r--rsnix/src/ps2.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/rsnix/src/ps2.rs b/rsnix/src/ps2.rs
index 477d146..1b10b3b 100644
--- a/rsnix/src/ps2.rs
+++ b/rsnix/src/ps2.rs
@@ -22,6 +22,8 @@ pub enum KeyEvent {
22 Backspace, 22 Backspace,
23 Tab, 23 Tab,
24 Escape, 24 Escape,
25 CtrlC,
26 CtrlD,
25 ArrowUp, 27 ArrowUp,
26 ArrowDown, 28 ArrowDown,
27 ArrowLeft, 29 ArrowLeft,
@@ -304,6 +306,15 @@ fn process_byte(byte: u8) -> Option<KeyEvent> {
304 ch.to_ascii_uppercase() 306 ch.to_ascii_uppercase()
305 }; 307 };
306 } 308 }
309 // Ctrl+letter — the shell uses ^C (interrupt) and ^D (EOF).
310 let ctrl = state.modifiers & (MOD_LCTRL | MOD_RCTRL) != 0;
311 if ctrl {
312 return match ch.to_ascii_lowercase() {
313 b'c' => Some(KeyEvent::CtrlC),
314 b'd' => Some(KeyEvent::CtrlD),
315 _ => None, // swallow other Ctrl+key combinations
316 };
317 }
307 if ch != 0 { 318 if ch != 0 {
308 Some(KeyEvent::Char(ch as char)) 319 Some(KeyEvent::Char(ch as char))
309 } else { 320 } else {