changeset 17373:afc3d47f7704

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.
author John Donoghue <john.donoghue@ieee.org>
date Fri, 30 Aug 2013 15:43:39 -0400
parents cf5d41cc3695
children 9258de031721
files libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp libgui/src/octave-gui.cc
diffstat 2 files changed, 15 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp
+++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp
@@ -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;
         }
--- a/libgui/src/octave-gui.cc
+++ b/libgui/src/octave-gui.cc
@@ -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