aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2024-01-07 15:26:04 -0800
committerRose Hogenson <rosehogenson@posteo.net>2024-01-07 15:26:04 -0800
commit57f527f2a1d9bc4ed8c862b014867634803831ba (patch)
tree869d88235adcbe9e28344c535b531ca363504320
parent21bff53c31973df9dfc9a5ee9bcee5b1c2004ea5 (diff)
downloadeditor-57f527f2a1d9bc4ed8c862b014867634803831ba.tar.zst
Support backspace in xterm.
Backspace: Cooler backspace:
-rw-r--r--src/term.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/term.rs b/src/term.rs
index daef715..673bf2e 100644
--- a/src/term.rs
+++ b/src/term.rs
@@ -7,6 +7,7 @@ const CTRL_S: u8 = 19;
const CTRL_Y: u8 = 25;
const CTRL_Z: u8 = 26;
const BACKSPACE: u8 = 127;
+const OTHER_BACKSPACE: u8 = 8;
const ESC: u8 = 27;
pub fn size() -> Result<winsize, Box<dyn Error>> {
@@ -74,6 +75,7 @@ pub fn raw() -> Result<RawHandle, Box<dyn Error>> {
return Ok(RawHandle { old: old });
}
+#[derive(Debug)]
pub enum Key {
CtrlQ,
CtrlS,
@@ -107,7 +109,7 @@ pub fn read_key(stdin: &mut dyn BufRead) -> Result<Key, Box<dyn Error>> {
if buf[0] == CTRL_Z {
return Ok(Key::CtrlZ);
}
- if buf[0] == BACKSPACE {
+ if buf[0] == BACKSPACE || buf[0] == OTHER_BACKSPACE {
return Ok(Key::Backspace);
}
if buf[0] != ESC {