From cb7702286517c5483b2a4340538c0747030945b9 Mon Sep 17 00:00:00 2001 From: Michele Calgaro Date: Tue, 22 Apr 2014 15:22:23 +0900 Subject: Fixed support for handling Meta key as Alt key in terminal emulation. This resolves bug 1026. --- konsole/konsole/TEmuVt102.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'konsole') diff --git a/konsole/konsole/TEmuVt102.cpp b/konsole/konsole/TEmuVt102.cpp index ebe090fda..8eeb25d54 100644 --- a/konsole/konsole/TEmuVt102.cpp +++ b/konsole/konsole/TEmuVt102.cpp @@ -948,19 +948,17 @@ void TEmuVt102::onKeyPress( TQKeyEvent* ev ) encodeStat(TQt::AltButton , BITS_Alt ); if (metaKeyMode) bits += encodeStat(TQt::MetaButton , BITS_Alt); - bool transRes = keytrans->findEntry(ev->key(), bits, &cmd, &txt, &len, &metaspecified); -//if (transRes) -// printf("cmd: %d, %s, %d\n",cmd,txt,len); + keytrans->findEntry(ev->key(), bits, &cmd, &txt, &len, &metaspecified); if (connected) { - switch(cmd) // ... and execute if found. - { - case CMD_scrollPageUp : gui->doScroll(-gui->Lines()/2); return; - case CMD_scrollPageDown : gui->doScroll(+gui->Lines()/2); return; - case CMD_scrollLineUp : gui->doScroll(-1 ); return; - case CMD_scrollLineDown : gui->doScroll(+1 ); return; - case CMD_scrollLock : onScrollLock( ); return; - } + switch(cmd) // ... and execute if found. + { + case CMD_scrollPageUp : gui->doScroll(-gui->Lines()/2); return; + case CMD_scrollPageDown : gui->doScroll(+gui->Lines()/2); return; + case CMD_scrollLineUp : gui->doScroll(-1 ); return; + case CMD_scrollLineDown : gui->doScroll(+1 ); return; + case CMD_scrollLock : onScrollLock( ); return; + } } if (holdScreen) { @@ -990,7 +988,8 @@ void TEmuVt102::onKeyPress( TQKeyEvent* ev ) // fall back handling if (!ev->text().isEmpty()) { - if (ev->state() & TQt::AltButton) sendString("\033"); // ESC, this is the ALT prefix + if ((ev->state() & TQt::AltButton) || (metaKeyMode && (ev->state() & TQt::MetaButton))) + sendString("\033"); // ESC, this is the ALT prefix TQCString s = m_codec->fromUnicode(ev->text()); // encode for application // FIXME: In Qt 2, TQKeyEvent::text() would return "\003" for Ctrl-C etc. // while in Qt 3 it returns the actual key ("c" or "C") which caused -- cgit v1.2.3