diff --git a/src/kernel/apps/consoled/Jamfile b/src/kernel/apps/consoled/Jamfile index 366733db7a..5a3efba4b6 100644 --- a/src/kernel/apps/consoled/Jamfile +++ b/src/kernel/apps/consoled/Jamfile @@ -1,6 +1,7 @@ SubDir OBOS_TOP src kernel apps consoled ; UsePrivateHeaders kernel ; +UseHeaders [ FDirName $(OBOS_TOP) src apps terminal MYOB ] ; App consoled : consoled.cpp diff --git a/src/kernel/apps/consoled/consoled.cpp b/src/kernel/apps/consoled/consoled.cpp index f994db4546..c6c57711a2 100644 --- a/src/kernel/apps/consoled/consoled.cpp +++ b/src/kernel/apps/consoled/consoled.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -20,6 +21,8 @@ #include #include +#include "VTkeymap.h" + //#define USE_INPUT_SERVER // define this if consoled should use the input_server to // get to its keyboard input @@ -100,7 +103,25 @@ keyboard_reader(void *arg) continue; event.FindData("bytes", B_STRING_TYPE, (const void**)&string, &length); - write(con->tty_master_fd, string, length); + if (length <= 2) + switch (*string) { + case B_LEFT_ARROW: + write(con->tty_master_fd, LEFT_ARROW_KEY_CODE, sizeof(LEFT_ARROW_KEY_CODE)); + break; + case B_RIGHT_ARROW: + write(con->tty_master_fd, RIGHT_ARROW_KEY_CODE, sizeof(RIGHT_ARROW_KEY_CODE)); + break; + case B_UP_ARROW: + write(con->tty_master_fd, UP_ARROW_KEY_CODE, sizeof(UP_ARROW_KEY_CODE)); + break; + case B_DOWN_ARROW: + write(con->tty_master_fd, DOWN_ARROW_KEY_CODE, sizeof(DOWN_ARROW_KEY_CODE)); + break; + default: + write(con->tty_master_fd, string, length); + } + else + write(con->tty_master_fd, string, length); } #else // USE_INPUT_SERVER char buffer[1024];