Author: jilles
Date: Sun Sep  5 16:12:10 2010
New Revision: 212235
URL: http://svn.freebsd.org/changeset/base/212235

Log:
  libedit: Try to map <Delete> to ed-delete-next-char.
  
  This adds a new "arrow" key "delete" corresponding to the kD termcap value.
  It only works if that is a sequence such as "\033[3~"; if it is "\177", the
  em-delete-prev-char or ed-delete-prev-char from the single-character
  mappings remains. It turns out that most terminals (xterm and alikes,
  syscons in xterm mode) produce "\033[3~" by default so <Delete> has the
  expected effect.
  
  This also means that things need to be considerably misconfigured for
  <Backspace> to perform a <Delete> action.

Modified:
  head/lib/libedit/term.c
  head/lib/libedit/term.h

Modified: head/lib/libedit/term.c
==============================================================================
--- head/lib/libedit/term.c     Sun Sep  5 14:52:27 2010        (r212234)
+++ head/lib/libedit/term.c     Sun Sep  5 16:12:10 2010        (r212235)
@@ -223,7 +223,9 @@ private const struct termcapstr {
        { "kh", "send cursor home" },
 #define        T_at7   37
        { "@7", "send cursor end" },
-#define        T_str   38
+#define        T_kD    38
+       { "kD", "send cursor delete" },
+#define        T_str   39
        { NULL, NULL }
 };
 
@@ -1062,6 +1064,11 @@ term_init_arrow(EditLine *el)
        arrow[A_K_EN].key = T_at7;
        arrow[A_K_EN].fun.cmd = ED_MOVE_TO_END;
        arrow[A_K_EN].type = XK_CMD;
+
+       arrow[A_K_DE].name = "delete";
+       arrow[A_K_DE].key = T_kD;
+       arrow[A_K_DE].fun.cmd = ED_DELETE_NEXT_CHAR;
+       arrow[A_K_DE].type = XK_CMD;
 }
 
 

Modified: head/lib/libedit/term.h
==============================================================================
--- head/lib/libedit/term.h     Sun Sep  5 14:52:27 2010        (r212234)
+++ head/lib/libedit/term.h     Sun Sep  5 16:12:10 2010        (r212235)
@@ -79,7 +79,8 @@ typedef struct {
 #define        A_K_RT          3
 #define        A_K_HO          4
 #define        A_K_EN          5
-#define        A_K_NKEYS       6
+#define        A_K_DE          6
+#define        A_K_NKEYS       7
 
 protected void term_move_to_line(EditLine *, int);
 protected void term_move_to_char(EditLine *, int);
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to