From 37bea90971b01478dbd89d2d8165a6a6471be3cc Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Wed, 20 Aug 2014 23:03:50 +0200 Subject: [PATCH] Translate arrow keys to VT100 escape sequences * I think this is what everyone expects. --- src/apps/serialconnect/TermView.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/apps/serialconnect/TermView.cpp b/src/apps/serialconnect/TermView.cpp index 91921513ef..d5937f9ec3 100644 --- a/src/apps/serialconnect/TermView.cpp +++ b/src/apps/serialconnect/TermView.cpp @@ -142,6 +142,28 @@ TermView::GetPreferredSize(float* width, float* height) void 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); keyEvent->AddData("data", B_RAW_TYPE, bytes, numBytes); be_app_messenger.SendMessage(keyEvent);