Translate arrow keys to VT100 escape sequences
* I think this is what everyone expects.
This commit is contained in:
@@ -142,6 +142,28 @@ TermView::GetPreferredSize(float* width, float* height)
|
|||||||
void
|
void
|
||||||
TermView::KeyDown(const char* bytes, int32 numBytes)
|
TermView::KeyDown(const char* bytes, int32 numBytes)
|
||||||
{
|
{
|
||||||
|
// Translate some keys to more usual VT100 escape codes
|
||||||
|
switch(bytes[0])
|
||||||
|
{
|
||||||
|
case B_UP_ARROW:
|
||||||
|
numBytes = 3;
|
||||||
|
bytes = "\x1B[A";
|
||||||
|
break;
|
||||||
|
case B_DOWN_ARROW:
|
||||||
|
numBytes = 3;
|
||||||
|
bytes = "\x1B[B";
|
||||||
|
break;
|
||||||
|
case B_RIGHT_ARROW:
|
||||||
|
numBytes = 3;
|
||||||
|
bytes = "\x1B[C";
|
||||||
|
break;
|
||||||
|
case B_LEFT_ARROW:
|
||||||
|
numBytes = 3;
|
||||||
|
bytes = "\x1B[D";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send the bytes to the serial port
|
||||||
BMessage* keyEvent = new BMessage(kMsgDataWrite);
|
BMessage* keyEvent = new BMessage(kMsgDataWrite);
|
||||||
keyEvent->AddData("data", B_RAW_TYPE, bytes, numBytes);
|
keyEvent->AddData("data", B_RAW_TYPE, bytes, numBytes);
|
||||||
be_app_messenger.SendMessage(keyEvent);
|
be_app_messenger.SendMessage(keyEvent);
|
||||||
|
|||||||
Reference in New Issue
Block a user