diff --git a/src/apps/terminal/Shell.cpp b/src/apps/terminal/Shell.cpp index 7bf4d63da5..74c767a0b5 100644 --- a/src/apps/terminal/Shell.cpp +++ b/src/apps/terminal/Shell.cpp @@ -496,7 +496,7 @@ Shell::_Spawn(int row, int col, const char *encoding, int argc, const char **arg /* * setenv TERM and TTY. */ - setenv("TERM", "beterm", true); + setenv("TERM", "xterm", true); setenv("TTY", ttyName, true); setenv("TTYPE", encoding, true); setenv("SHELL", argv[0], true); diff --git a/src/apps/terminal/TermView.cpp b/src/apps/terminal/TermView.cpp index 54cd472cd0..190745e4dd 100644 --- a/src/apps/terminal/TermView.cpp +++ b/src/apps/terminal/TermView.cpp @@ -1019,8 +1019,6 @@ TermView::Draw(BRect updateRect) //debug_printf("TermView::Draw(): (%ld, %ld) - (%ld, %ld), top: %f, fontHeight: %d, scrollOffset: %f\n", //x1, y1, x2, y2, updateRect.top, fFontHeight, fScrollOffset); - Window()->BeginViewTransaction(); - for (int32 j = y1; j <= y2; j++) { int32 k = x1; char buf[fTermColumns * 4 + 1]; @@ -1062,8 +1060,6 @@ TermView::Draw(BRect updateRect) if (fCursor >= TermPos(x1, y1) && fCursor <= TermPos(x2, y2)) _DrawCursor(); - - Window()->EndViewTransaction(); } @@ -1162,7 +1158,15 @@ TermView::KeyDown(const char *bytes, int32 numBytes) if (rawChar == B_RETURN) toWrite = "\r"; break; - + + case B_DELETE: + toWrite = DELETE_KEY_CODE; + break; + + case B_BACKSPACE: + toWrite = BACKSPACE_KEY_CODE; + break; + case B_LEFT_ARROW: if (rawChar == B_LEFT_ARROW) { if (mod & B_SHIFT_KEY) { @@ -1251,7 +1255,6 @@ TermView::KeyDown(const char *bytes, int32 numBytes) break; case B_FUNCTION_KEY: - // TODO: Why not just fShell->Write(key) ? for (int32 i = 0; i < 12; i++) { if (key == function_keycode_table[i]) { fShell->Write(function_key_char_table[i], 5); diff --git a/src/apps/terminal/VTKeyTbl.c b/src/apps/terminal/VTKeyTbl.c index ad64d40f64..bc2dadc385 100644 --- a/src/apps/terminal/VTKeyTbl.c +++ b/src/apps/terminal/VTKeyTbl.c @@ -48,10 +48,10 @@ F12_KEY, char *function_key_char_table [] = { -"\033[11~", -"\033[12~", -"\033[13~", -"\033[14~", +"\033OP", +"\033OQ", +"\033OR", +"\033OS", "\033[15~", "\033[16~", "\033[17~", diff --git a/src/apps/terminal/VTkeymap.h b/src/apps/terminal/VTkeymap.h index e1b6b5bd7c..c4b4e99b65 100644 --- a/src/apps/terminal/VTkeymap.h +++ b/src/apps/terminal/VTkeymap.h @@ -64,22 +64,22 @@ #define PAGE_DOWN_KEY 0x36 - -#define LEFT_ARROW_KEY_CODE "\033[D" -#define RIGHT_ARROW_KEY_CODE "\033[C" -#define UP_ARROW_KEY_CODE "\033[A" -#define DOWN_ARROW_KEY_CODE "\033[B" +#define LEFT_ARROW_KEY_CODE "\033OD" +#define RIGHT_ARROW_KEY_CODE "\033OC" +#define UP_ARROW_KEY_CODE "\033OA" +#define DOWN_ARROW_KEY_CODE "\033OB" #define CTRL_LEFT_ARROW_KEY_CODE "\033[5D" #define CTRL_RIGHT_ARROW_KEY_CODE "\033[5C" #define CTRL_UP_ARROW_KEY_CODE "\033[5A" #define CTRL_DOWN_ARROW_KEY_CODE "\033[5B" -//#define HOME_KEY_CODE "\033[@" -#define HOME_KEY_CODE "\033[1~" +#define DELETE_KEY_CODE "\033[3~" +#define BACKSPACE_KEY_CODE "\177" + +#define HOME_KEY_CODE "\033OH" #define INSERT_KEY_CODE "\033[2~" -//#define END_KEY_CODE "\033[[" -#define END_KEY_CODE "\033[4~" +#define END_KEY_CODE "\033OF" #define PAGE_UP_KEY_CODE "\033[5~" #define PAGE_DOWN_KEY_CODE "\033[6~"