about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSören Tempel <soeren+git@soeren-tempel.net>2021-05-15 23:45:32 +0200
committerSören Tempel <soeren+git@soeren-tempel.net>2021-05-15 23:45:32 +0200
commit5e59f4e549cf15dfa11af4a08f288752d6a9d0ce (patch)
tree93d6760b4a6406fa2ac87410985bee1719a3c040
parent3c21361288d1d0304b76d25c49442f42567a26bc (diff)
Support character deletion using backspace
-rw-r--r--src/terminal.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/terminal.py b/src/terminal.py
index 673779f..fd405b8 100644
--- a/src/terminal.py
+++ b/src/terminal.py
@@ -13,6 +13,9 @@ from gi.repository import GLib
 WIN_TITLE = "saneterm"
 TERM = "dumb"
 
+# XXX: Can also be looked up using unicodedata.lookup("DEL").
+DEL_CHAR = b'\x7f'
+
 class PtySource(GLib.Source):
     master = -1
 
@@ -55,6 +58,7 @@ class Terminal(Gtk.Window):
 
         self.textbuffer = self.textview.get_buffer()
         self.textbuffer.connect("end-user-action", self.user_input)
+        self.textview.connect("backspace", self.backspace)
 
         end = self.textbuffer.get_end_iter()
         self.last_mark = self.textbuffer.create_mark(None, end, True)
@@ -78,6 +82,9 @@ class Terminal(Gtk.Window):
 
         return GLib.SOURCE_CONTINUE
 
+    def backspace(self, textview):
+        os.write(self.pty.master, DEL_CHAR)
+
     def user_input(self, buffer):
         start = buffer.get_iter_at_mark(self.last_mark)
         end = buffer.get_end_iter()