added support for arrows (from our Terminal impl)

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11383 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval
2005-02-15 16:58:28 +00:00
parent 133c5b73a2
commit 82698ec120
2 changed files with 23 additions and 1 deletions
+1
View File
@@ -1,6 +1,7 @@
SubDir OBOS_TOP src kernel apps consoled ; SubDir OBOS_TOP src kernel apps consoled ;
UsePrivateHeaders kernel ; UsePrivateHeaders kernel ;
UseHeaders [ FDirName $(OBOS_TOP) src apps terminal MYOB ] ;
App consoled : App consoled :
consoled.cpp consoled.cpp
+22 -1
View File
@@ -11,6 +11,7 @@
#include <image.h> #include <image.h>
#include <Message.h> #include <Message.h>
#include <AppDefs.h> #include <AppDefs.h>
#include <InterfaceDefs.h>
#include <TypeConstants.h> #include <TypeConstants.h>
#include <termios.h> #include <termios.h>
@@ -20,6 +21,8 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "VTkeymap.h"
//#define USE_INPUT_SERVER //#define USE_INPUT_SERVER
// define this if consoled should use the input_server to // define this if consoled should use the input_server to
// get to its keyboard input // get to its keyboard input
@@ -100,7 +103,25 @@ keyboard_reader(void *arg)
continue; continue;
event.FindData("bytes", B_STRING_TYPE, (const void**)&string, &length); 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 #else // USE_INPUT_SERVER
char buffer[1024]; char buffer[1024];