Mercurial > octave-nkf
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 } |