Free the Virtual Terminal and Keyboard on a segfault in all cases... --- qt-2.3.7-old/src/kernel/qwindowsystem_qws.cpp 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/src/kernel/qwindowsystem_qws.cpp 2004-07-23 15:33:47.000000000 +0200 @@ -844,6 +844,18 @@ { } +static void catchSegvSignal( int ) +{ +#ifndef QT_NO_QWS_KEYBOARD + if ( qwsServer ) + qwsServer->closeKeyboard(); +#endif + QWSServer::closedown(); + fprintf(stderr, "Segmentation fault.\n"); + exit(1); +} + + /*! \class QWSServer qwindowsystem_qws.h \brief Server-specific functionality in Qt/Embedded @@ -936,6 +948,7 @@ } signal(SIGPIPE, ignoreSignal); //we get it when we read + signal(SIGSEGV, catchSegvSignal); //recover the keyboard on crash #endif focusw = 0; mouseGrabber = 0; --- qt-2.3.7-old/src/kernel/qkeyboard_qws.cpp 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/src/kernel/qkeyboard_qws.cpp 2004-07-23 15:33:46.000000000 +0200 @@ -238,7 +238,7 @@ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 63 { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 64 { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 65 - { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 66 + { Qt::Key_F14, 0xffff , 0xffff , 0xffff }, // 66 { Qt::Key_Meta, 0xffff , 0xffff , 0xffff }, // 67 { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 68 { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 69