# HG changeset patch # User John Donoghue # Date 1377891819 14400 # Node ID afc3d47f77044b89b10d661647a8bb56ec547d57 # Parent cf5d41cc3695483edb872972a3918170d2346eca Update windows GUI terminal handling * libgui/src/octave-gui.cc (octave_start_gui): set TERM environment variable to 'cygwin' in windows if no term is set. * libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp (translateKey): deocde delete key before non special keys using moveright \b, use \e[H for home, \e[F for end, decode esc key. diff -r cf5d41cc3695 -r afc3d47f7704 libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp --- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp Fri Aug 30 10:44:56 2013 +0100 +++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp Fri Aug 30 15:43:39 2013 -0400 @@ -96,13 +96,15 @@ static QString translateKey (QKeyEvent *ev) { + QString esc = "\x1b"; QString s; - if (!ev->text ().isEmpty ()) + if (ev->key () == Qt::Key_Delete) + s = esc + "[C\b"; + else if (!ev->text ().isEmpty ()) s = ev->text (); else { - QString esc = "\x1b"; switch (ev->key ()) { @@ -123,21 +125,17 @@ break; case Qt::Key_Home: - s = esc + "[1~"; + s = esc + "[H"; break; case Qt::Key_End: - s = esc + "[4~"; + s = esc + "[F"; break; case Qt::Key_Insert: s = esc + "[2~"; break; - case Qt::Key_Delete: - s = esc + "[3~"; - break; - case Qt::Key_PageUp: s = esc + "[5~"; break; @@ -146,6 +144,10 @@ s = esc + "[6~"; break; + case Qt::Key_Escape: + s = esc; + break; + default: break; } diff -r cf5d41cc3695 -r afc3d47f7704 libgui/src/octave-gui.cc --- a/libgui/src/octave-gui.cc Fri Aug 30 10:44:56 2013 +0100 +++ b/libgui/src/octave-gui.cc Fri Aug 30 15:43:39 2013 -0400 @@ -123,6 +123,11 @@ if (term.empty ()) octave_env::putenv ("TERM", "xterm"); +#else + std::string term = octave_env::getenv ("TERM"); + + if (term.empty ()) + octave_env::putenv ("TERM", "cygwin"); #endif // create main window, read settings, and show window