فهرست منبع

Fixing the return and keypad enter sent characters. Terminals produce \r. And

some minor style changes.
Christoph Lohmann 12 سال پیش
والد
کامیت
d5640c7729
2فایلهای تغییر یافته به همراه10 افزوده شده و 6 حذف شده
  1. 3 3
      config.def.h
  2. 7 3
      st.c

+ 3 - 3
config.def.h

@@ -109,7 +109,7 @@ static Key key[] = {
 	{ XK_KP_Multiply,   XK_ANY_MOD,     "\033Oj",       +1,    0,    0},
 	{ XK_KP_Add,        XK_ANY_MOD,     "\033Ok",       +1,    0,    0},
 	{ XK_KP_Enter,      XK_ANY_MOD,     "\033OM",       +1,    0,    0},
-	{ XK_KP_Enter,      XK_ANY_MOD,     "\n",           -1,    0,   -1},
+	{ XK_KP_Enter,      XK_ANY_MOD,     "\r",           -1,    0,   -1},
 	{ XK_KP_Enter,      XK_ANY_MOD,     "\r\n",         -1,    0,   +1},
 	{ XK_KP_Subtract,   XK_ANY_MOD,     "\033Om",       +1,    0,    0},
 	{ XK_KP_Decimal,    XK_ANY_MOD,     "\033On",       +1,    0,    0},
@@ -146,9 +146,9 @@ static Key key[] = {
 	{ XK_Right,         XK_ANY_MOD,     "\033[C",        0,   -1,    0},
 	{ XK_Right,         XK_ANY_MOD,     "\033OC",        0,   +1,    0},
 	{ XK_ISO_Left_Tab,  ShiftMask,      "\033[Z",        0,    0,    0},
-	{ XK_Return,        Mod1Mask,       "\033\n",        0,    0,   -1},
+	{ XK_Return,        Mod1Mask,       "\033\r",        0,    0,   -1},
 	{ XK_Return,        Mod1Mask,       "\033\r\n",      0,    0,   +1},
-	{ XK_Return,        XK_ANY_MOD,     "\n",            0,    0,   -1},
+	{ XK_Return,        XK_ANY_MOD,     "\r",            0,    0,   -1},
 	{ XK_Return,        XK_ANY_MOD,     "\r\n",          0,    0,   +1},
 	{ XK_Insert,        ShiftMask,      "\033[2;2~",     0,    0,    0},
 	{ XK_Insert,        XK_ANY_MOD,     "\033[2~",       0,    0,    0},

+ 7 - 3
st.c

@@ -2100,15 +2100,19 @@ tputc(char *c, int len) {
 		sel.bx = -1;
 	if(IS_SET(MODE_WRAP) && term.c.state & CURSOR_WRAPNEXT)
 		tnewline(1); /* always go to first col */
-	if(IS_SET(MODE_INSERT) && term.c.x+1 < term.col)
+
+	if(IS_SET(MODE_INSERT) && term.c.x+1 < term.col) {
 		memmove(&term.line[term.c.y][term.c.x+1],
 			&term.line[term.c.y][term.c.x],
 			(term.col - term.c.x - 1) * sizeof(Glyph));
+	}
+
 	tsetchar(c, &term.c.attr, term.c.x, term.c.y);
-	if(term.c.x+1 < term.col)
+	if(term.c.x+1 < term.col) {
 		tmoveto(term.c.x+1, term.c.y);
-	else
+	} else {
 		term.c.state |= CURSOR_WRAPNEXT;
+	}
 }
 
 int