summaryrefslogtreecommitdiff
path: root/src/term.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/term.c')
-rw-r--r--src/term.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/term.c b/src/term.c
index 8f7963a..41edbc4 100644
--- a/src/term.c
+++ b/src/term.c
@@ -447,6 +447,12 @@ lookup_key(XEvent * ev)
#else
kbuf[0] = (((PrivateModes & PrivMode_BackSpace) ? !(shft | ctrl) : (shft | ctrl)) ? '\b' : '\177');
#endif
+#ifdef MULTI_CHARSET
+ if ((Options & Opt_mbyte_cursor) && scr_multi2()) {
+ memmove(kbuf + len, kbuf, len);
+ len *= 2;
+ }
+#endif /* MULTI_CHARSET */
break;
/* Tab key is normal unless it's shift-tab. */
@@ -502,6 +508,14 @@ lookup_key(XEvent * ev)
kbuf[1] = 'O';
kbuf[2] = ("dacb"[keysym - XK_Left]);
}
+#ifdef MULTI_CHARSET
+ if ((Options & Opt_mbyte_cursor)
+ && ((keysym == XK_Left && scr_multi2())
+ || (keysym == XK_Right && scr_multi1()))) {
+ memmove(kbuf + len, kbuf, len);
+ len *= 2;
+ }
+#endif /* MULTI_CHARSET */
break;
/* Keypad and normal PgUp/PgDn */
@@ -588,6 +602,13 @@ lookup_key(XEvent * ev)
case XK_Delete:
#ifdef KS_DELETE
len = strlen(strcpy(kbuf, KS_DELETE));
+#ifdef MULTI_CHARSET
+ if ((Options & Opt_mbyte_cursor) && scr_multi1())
+ {
+ memmove(kbuf + len, kbuf, len);
+ len *= 2;
+ }
+#endif /* MULTI_CHARSET */
#endif
break;
@@ -1223,7 +1244,7 @@ process_xterm_seq(void)
if (ch) {
if (ch == '\t')
ch = ' '; /* translate '\t' to space */
- else if ((ch < ' ') && !(isspace(ch) && arg == XTerm_EtermIPC))
+ else if (ch < ' ')
return; /* control character - exit */
if (n < sizeof(string) - 1)
@@ -2324,12 +2345,6 @@ xterm_seq(int op, const char *str)
#endif /* PIXMAP_SUPPORT */
break;
- case XTerm_EtermIPC:
- for (; (nstr = (char *) strsep(&tnstr, ";"));) {
- eterm_ipc_parse(nstr);
- }
- break;
-
case XTerm_restoreFG:
#ifdef XTERM_COLOR_CHANGE
set_window_color(fgColor, str);