comparison libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp @ 17360: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 aa09b746fa16
children d63878346099
comparison
equal deleted inserted replaced
17359:cf5d41cc3695 17360:afc3d47f7704
94 94
95 ////////////////////////////////////////////////////////////////////////////// 95 //////////////////////////////////////////////////////////////////////////////
96 96
97 static QString translateKey (QKeyEvent *ev) 97 static QString translateKey (QKeyEvent *ev)
98 { 98 {
99 QString esc = "\x1b";
99 QString s; 100 QString s;
100 101
101 if (!ev->text ().isEmpty ()) 102 if (ev->key () == Qt::Key_Delete)
103 s = esc + "[C\b";
104 else if (!ev->text ().isEmpty ())
102 s = ev->text (); 105 s = ev->text ();
103 else 106 else
104 { 107 {
105 QString esc = "\x1b";
106 108
107 switch (ev->key ()) 109 switch (ev->key ())
108 { 110 {
109 case Qt::Key_Up: 111 case Qt::Key_Up:
110 s = esc + "[A"; 112 s = esc + "[A";
121 case Qt::Key_Left: 123 case Qt::Key_Left:
122 s = esc + "[D"; 124 s = esc + "[D";
123 break; 125 break;
124 126
125 case Qt::Key_Home: 127 case Qt::Key_Home:
126 s = esc + "[1~"; 128 s = esc + "[H";
127 break; 129 break;
128 130
129 case Qt::Key_End: 131 case Qt::Key_End:
130 s = esc + "[4~"; 132 s = esc + "[F";
131 break; 133 break;
132 134
133 case Qt::Key_Insert: 135 case Qt::Key_Insert:
134 s = esc + "[2~"; 136 s = esc + "[2~";
135 break; 137 break;
136 138
137 case Qt::Key_Delete:
138 s = esc + "[3~";
139 break;
140
141 case Qt::Key_PageUp: 139 case Qt::Key_PageUp:
142 s = esc + "[5~"; 140 s = esc + "[5~";
143 break; 141 break;
144 142
145 case Qt::Key_PageDown: 143 case Qt::Key_PageDown:
146 s = esc + "[6~"; 144 s = esc + "[6~";
145 break;
146
147 case Qt::Key_Escape:
148 s = esc;
147 break; 149 break;
148 150
149 default: 151 default:
150 break; 152 break;
151 } 153 }