diff options
-rw-r--r-- | qte/qte-2.3.7/simpad.patch | 403 | ||||
-rw-r--r-- | qte/qte-2.3.7/vt-switch.patch | 18 | ||||
-rw-r--r-- | qte/qte-for-opie_2.3.7.oe | 2 | ||||
-rw-r--r-- | qte/qte_2.3.7.oe | 2 |
4 files changed, 414 insertions, 11 deletions
diff --git a/qte/qte-2.3.7/simpad.patch b/qte/qte-2.3.7/simpad.patch index e69de29bb2..4fdb5b1adf 100644 --- a/qte/qte-2.3.7/simpad.patch +++ b/qte/qte-2.3.7/simpad.patch @@ -0,0 +1,403 @@ +diff -u qt-2.3.7.orig/src/kernel/qkeyboard_qws.cpp qt-2.3.7/src/kernel/qkeyboard_qws.cpp +--- qt-2.3.7.orig/src/kernel/qkeyboard_qws.cpp 2004-07-06 23:02:40.000000000 +0200 ++++ qt-2.3.7/src/kernel/qkeyboard_qws.cpp 2004-07-06 23:03:00.000000000 +0200 +@@ -37,6 +37,7 @@ + #include <qapplication.h> + #include <qsocketnotifier.h> + #include <qnamespace.h> ++#include <qdatetime.h> + #include <qtimer.h> + + #include <stdlib.h> +@@ -131,6 +132,59 @@ + + #endif // QNX6 + ++/* ++ * SIMpad switches handler ++ * (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> ++ */ ++ ++//TODO: guard this against inclusion with #ifdef QT_QWS_SIMPAD ++ ++#include <linux/switches.h> ++#define SIMPAD_SWITCHES_DEVICE "/dev/misc/switches" ++ ++// switches from left top to right down over the SIMpad surface ++ ++#define SIMPAD_SWITCH_POWER 0x02 ++#define SIMPAD_SWITCH_UPPER 0x10 ++#define SIMPAD_SWITCH_UP 0x20 ++#define SIMPAD_SWITCH_DOWN 0x40 ++#define SIMPAD_SWITCH_LEFT 0x80 ++#define SIMPAD_SWITCH_RIGHT 0x100 ++#define SIMPAD_SWITCH_LOWER 0x8 ++ ++class QWSsimpadButtonsHandler : public QWSKeyboardHandler ++{ ++ Q_OBJECT ++ ++ public: ++ QWSsimpadButtonsHandler(); ++ virtual ~QWSsimpadButtonsHandler(); ++ ++ bool isOpen() { return fd > 0; } ++ ++ private slots: ++ void readSwitchesData(); ++ void autoRepeat(); ++ ++ private: ++ switches_mask_t switches; ++ ++ int fd; ++ int repeatdelay; ++ int repeatperiod; ++ ++ int lastCode; // last native code ++ int lastPress; // last press/release state ++ ++ int k; // last emitted Qt key code ++ int shiftKeyPressed; // true if one of the SHIFT keys has been pressed and not yet released ++ bool shiftUsed; // true if SHIFT has been used ++ ++ QTime eventTimer; // tracks time between raw events ++ QTimer* repeater; ++ QSocketNotifier *notifier; ++}; ++ + #ifdef QT_QWS_SL5XXX + static const QWSServer::KeyMap keyM[] = { + { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 00 +@@ -1479,7 +1533,11 @@ + } else { + type = spec; + } +- ++ if ( type == "SIMpad" ) ++ { ++ qDebug( "QWSKeyboardHandler: using SIMpad keyboard handler..." ); ++ handler = new QWSsimpadButtonsHandler(); ++ } + if ( type == "Buttons" ) { + #if defined(QT_QWS_YOPY) + handler = new QWSyopyButtonsHandler(); +@@ -1508,6 +1566,217 @@ + return keyM; + } + +-#endif // QT_NO_QWS_KEYBOARD + ++/* ++ * SIMpad switches handler ++ * (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> ++ */ ++ ++ ++QWSsimpadButtonsHandler::QWSsimpadButtonsHandler() ++ :QWSKeyboardHandler(), fd( -1 ), ++ repeatdelay( 700 ), repeatperiod( 80 ), ++ lastCode( 0 ), lastPress( 0 ), ++ k( -1 ), shiftKeyPressed( 0 ), shiftUsed( false ) ++{ ++ qDebug( "SimpadButtonsHandler() - V4.1" ); ++ fd = ::open( SIMPAD_SWITCHES_DEVICE, O_RDWR | O_NDELAY, 0 ); ++ if ( fd < 0 ) ++ { ++ qWarning( "SimpadButtonsHandler(): can't open %s", SIMPAD_SWITCHES_DEVICE ); ++ return; ++ } ++ ++ notifier = new QSocketNotifier( fd, QSocketNotifier::Read, this ); ++ connect( notifier, SIGNAL( activated(int) ),this, SLOT( readSwitchesData() ) ); ++ ++ repeater = new QTimer(this); ++ connect(repeater, SIGNAL(timeout()), this, SLOT(autoRepeat())); ++ ++} ++ ++ ++QWSsimpadButtonsHandler::~QWSsimpadButtonsHandler() ++{ ++ qDebug( "~SimpadButtonsHandler()" ); ++ if ( fd > 0 ) ++ { ++ ::close( fd ); ++ fd = -1; ++ } ++} ++ ++ ++void QWSsimpadButtonsHandler::readSwitchesData() ++{ ++ qDebug( "SimpadButtonsHandler() - detected switches action" ); ++ ++ if ( ::read( fd, &switches, sizeof switches ) < 0 ) ++ { ++ qWarning( "SimpadButtonsHandler() - switches read error!" ); ++ return; ++ } ++ ++ qDebug( "SimpadButtonsHandler() - Shift: %0x [used: %0x] + Event = %0x | %0x", ++ shiftKeyPressed, shiftUsed, switches.events[0], switches.states[0] ); ++ ++ bool press = switches.states[0]; // == switches.event[0]; ++ int code = switches.events[0]; ++ ++ //========================================================================= ++ ++ /** ++ * Work around a bug in the kernel keyboard driver emitting ++ * bogus events when pressing multiple switches at once ++ **/ ++ ++ if ( lastCode == 0 ) ++ { ++ // first press ever ++ eventTimer.start(); ++ lastPress = press; ++ lastCode = code; ++ } ++ else ++ { ++ int interval = eventTimer.restart(); ++ qDebug( "event interval = %d", interval ); ++ if ( code == lastCode && interval < 10 ) ++ { ++ qDebug( "event interval too small - ignoring bogus event" ); ++ qDebug( "did I say i hate buggy kernel drivers? :-D" ); ++ return; ++ } ++ ++ lastPress = press; ++ lastCode = code; ++ } ++ ++ /** ++ * Actually it may also be a hardware problem, but I really don't like ++ * to review kernel code for further inquiry. So just being lazy and ++ * do the workaround in user space :-D ++ **/ ++ ++ //===================================================================== ++ ++ if ( shiftKeyPressed ) ++ { ++ // a shift key obviously is being held ++ qDebug( "while shift key is being held..." ); ++ ++ if ( code != shiftKeyPressed ) ++ { ++ // another key is being touched - that means shift mode for us! ++ qDebug( " another key is being touched -> shift use now = true" ); ++ ++ shiftUsed = true; ++ ++ if ( shiftKeyPressed == SIMPAD_SWITCH_LOWER ) // SHIFT 1 ++ { ++ qDebug( " shift mode 1" ); ++ switch(code) ++ { ++ case SIMPAD_SWITCH_UP: k = Qt::Key_F9; break; // Shift1-Up = Calendar ++ case SIMPAD_SWITCH_DOWN: k = Qt::Key_F10; break; // Shift1-Down = Contacts ++ case SIMPAD_SWITCH_LEFT: k = Qt::Key_F13; break; // Shift1-Left = Mail ++ case SIMPAD_SWITCH_RIGHT: k = Qt::Key_F11; break; // Shift1-Up = Menu ++ case SIMPAD_SWITCH_UPPER: k = Qt::Key_F12; break; // Shift1-Upper = Home ++ default: k=-1; qWarning( "SimpadButtonsHandler() - unhandled event for Shift 1 !" ); break; ++ } ++ } ++ else if ( shiftKeyPressed == SIMPAD_SWITCH_UPPER ) // SHIFT 2 ++ { ++ qDebug( " shift mode 2" ); ++ switch(code) ++ { ++ case SIMPAD_SWITCH_UP: k = Qt::Key_F5; break; // Shift2-Up = F5 ++ case SIMPAD_SWITCH_DOWN: k = Qt::Key_F6; break; // Shift2-Down = F6 ++ case SIMPAD_SWITCH_LEFT: k = Qt::Key_F7; break; // Shift2-Left = F7 ++ case SIMPAD_SWITCH_RIGHT: k = Qt::Key_F8; break; // Shift2-Up = F8 ++ case SIMPAD_SWITCH_LOWER: k = Qt::Key_F9; break; // Shift2-Lower = F9 ++ default: k=-1; qWarning( "SimpadButtonsHandler() - unhandled event for Shift 2!" ); break; ++ } ++ } ++ } ++ else ++ { ++ qDebug( " shift key has been released. checking if being used..." ); ++ shiftKeyPressed = 0; ++ ++ if ( !shiftUsed ) ++ { ++ qDebug( " ... has _not_ being used -> really emit the key" ); ++ k = ( code == SIMPAD_SWITCH_UPPER ? Qt::Key_Escape : Qt::Key_Return ); ++ qDebug( "Emitting key = %d (pressed)", k ); ++ processKeyEvent( 0, k, 0, true, true ); ++ qDebug( "Emitting key = %d (released)", k ); ++ processKeyEvent( 0, k, 0, false, true ); ++ return; ++ } ++ else ++ { ++ qDebug( " ... has being used -> doing nothing" ); ++ return; ++ } ++ } ++ } ++ else ++ { ++ qDebug( "standard mode - no shift yet..." ); + ++ switch(code) ++ { ++ case SIMPAD_SWITCH_UP: k = Qt::Key_Up; break; ++ case SIMPAD_SWITCH_DOWN: k = Qt::Key_Down; break; ++ case SIMPAD_SWITCH_LEFT: k = Qt::Key_Left; break; ++ case SIMPAD_SWITCH_RIGHT: k = Qt::Key_Right; break; ++ ++ case SIMPAD_SWITCH_UPPER: k=-1; shiftKeyPressed = press? code:0; shiftUsed = false; qDebug( "shiftkey pressed now = %d", shiftKeyPressed ); return; ++ case SIMPAD_SWITCH_LOWER: k=-1; shiftKeyPressed = press? code:0; shiftUsed = false; qDebug( "shiftkey pressed now = %d", shiftKeyPressed ); return; ++ ++ default: k=-1; qWarning( "SimpadButtonsHandler() - unhandled event!" ); break; ++ } ++ } ++ ++ if ( k == -1 ) ++ { ++ qDebug( "no key to emit - returning." ); ++ return; ++ } ++ ++ bool repeatable = ( k == Qt::Key_Up || k == Qt::Key_Down || ++ k == Qt::Key_Right || k == Qt::Key_Left ); ++ ++ qDebug( "key to emit = %d [%s] [repeat=%s]", k, ++ press ? "press" : "release", ++ repeatable ? "true":"false" ); ++ ++ if ( qt_screen->isTransformed() && k >= Qt::Key_Left && k <= Qt::Key_Down ) ++ { ++ qDebug( "SimpadButtonsHandler() - We are transformed! Correcting..." ); ++ int oldK = k; ++ k = xform_dirkey( k ); ++ qDebug( "SimpadButtonsHandler() - Old Key: %d - New Key %d", oldK, k ); ++ } ++ ++ if ( repeatable && press ) ++ repeater->start( repeatdelay, true ); ++ else ++ repeater->stop(); ++ ++ qwsServer->processKeyEvent( 0, k, 0, press, false ); ++} ++ ++ ++void QWSsimpadButtonsHandler::autoRepeat() ++{ ++ qDebug( "Emitting key = %d (released)", k ); ++ processKeyEvent( 0, k, 0, false, true ); ++ qDebug( "Emitting key = %d (pressed)", k ); ++ processKeyEvent( 0, k, 0, true, true ); ++ repeater->start(repeatperiod); ++} ++ ++ ++#endif // QT_NO_QWS_KEYBOARD +diff -u qt-2.3.7.orig/src/kernel/qsoundqss_qws.cpp qt-2.3.7/src/kernel/qsoundqss_qws.cpp +--- qt-2.3.7.orig/src/kernel/qsoundqss_qws.cpp 2004-07-06 23:02:40.000000000 +0200 ++++ qt-2.3.7/src/kernel/qsoundqss_qws.cpp 2004-07-06 23:03:00.000000000 +0200 +@@ -47,8 +47,8 @@ + #include <sys/ioctl.h> + #include <sys/soundcard.h> + +-#define QT_QWS_SOUND_16BIT 1 // or 0, or undefined for always 0 +-#define QT_QWS_SOUND_STEREO 1 // or 0, or undefined for always 0 ++#define QT_QWS_SOUND_16BIT 0 // or 0, or undefined for always 0 ++#define QT_QWS_SOUND_STEREO 0 // or 0, or undefined for always 0 + + static int sound_speed = 44100; + #ifndef QT_NO_SOUNDSERVER +diff -u qt-2.3.7.orig/src/kernel/qwsmouse_qws.cpp qt-2.3.7/src/kernel/qwsmouse_qws.cpp +--- qt-2.3.7.orig/src/kernel/qwsmouse_qws.cpp 2004-07-06 23:02:39.000000000 +0200 ++++ qt-2.3.7/src/kernel/qwsmouse_qws.cpp 2004-07-06 22:57:44.000000000 +0200 +@@ -51,6 +51,7 @@ + #include <stdlib.h> + #include <stdio.h> + #include <sys/ioctl.h> ++#include <sys/time.h> + #include <sys/types.h> + #include <sys/stat.h> + #include <fcntl.h> +@@ -74,6 +75,7 @@ + unsigned short x; + unsigned short y; + unsigned short pad; ++ struct timeval stamp; + } TS_EVENT; + #elif defined(QT_QWS_SL5XXX) + #define QT_QWS_SL5XXX_RAW +@@ -1472,29 +1474,13 @@ + : samples(QT_QWS_TP_SAMPLE_SIZE), currSample(0), lastSample(0), + numSamples(0), skipCount(0) + { +-#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_SLC700) +-#if defined(QT_QWS_IPAQ) +-# ifdef QT_QWS_IPAQ_RAW +- if ((mouseFD = open( "/dev/h3600_tsraw", O_RDONLY | O_NDELAY)) < 0) { +-# else +- if ((mouseFD = open( "/dev/h3600_ts", O_RDONLY | O_NDELAY)) < 0) { +-# endif +- qWarning( "Cannot open /dev/h3600_ts (%s)", strerror(errno)); +- return; +- } +-#elif defined(QT_QWS_SL5XXX) || defined(QT_QWS_SLC700) +-//# ifdef QT_QWS_SL5XXX_TSRAW +-# if 0 +- if ((mouseFD = open( "/dev/tsraw", O_RDONLY | O_NDELAY)) < 0) { +- qWarning( "Cannot open /dev/tsraw (%s)", strerror(errno)); +- return; +- } +-# else +- if ((mouseFD = open( "/dev/ts", O_RDONLY | O_NDELAY)) < 0) { +- qWarning( "Cannot open /dev/ts (%s)", strerror(errno)); ++#ifdef QT_QWS_SIMPAD ++ if ((mouseFD = open( "/dev/touchscreen/ucb1x00", O_RDONLY | O_NONBLOCK )) ++< 0) { ++ qWarning( "Cannot open /dev/touchscreen/ucb1x00 (%s)", strerror(errno) ++); + return; + } +-# endif + #endif + + QSocketNotifier *mouseNotifier; +@@ -1503,12 +1489,11 @@ + connect(mouseNotifier, SIGNAL(activated(int)),this, SLOT(readMouseData())); + waspressed=FALSE; + mouseIdx = 0; +-#endif + } + + QTPanelHandlerPrivate::~QTPanelHandlerPrivate() + { +-#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_SLC700) ++#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_SLC700) || defined(QT_QWS_SIMPAD) + if (mouseFD >= 0) + close(mouseFD); + #endif +@@ -1516,7 +1501,7 @@ + + void QTPanelHandlerPrivate::readMouseData() + { +-#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_SLC700) ++#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_SLC700) || defined(QT_QWS_SIMPAD) + if(!qt_screen) + return; + +@@ -1929,7 +1914,7 @@ + handler = new QCustomTPanelHandlerPrivate( mouseProtocol, mouseDev ); + #elif defined(QT_QWS_YOPY) + handler = new QYopyTPanelHandlerPrivate( mouseProtocol, mouseDev ); +-#elif defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_SLC700) ++#elif defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_SLC700) || defined(QT_QWS_SIMPAD) + handler = new QTPanelHandlerPrivate( mouseProtocol, mouseDev ); + #elif defined(QT_QWS_CASSIOPEIA) + handler = new QVrTPanelHandlerPrivate( mouseProtocol, mouseDev ); diff --git a/qte/qte-2.3.7/vt-switch.patch b/qte/qte-2.3.7/vt-switch.patch index 0763e064e1..be2745c986 100644 --- a/qte/qte-2.3.7/vt-switch.patch +++ b/qte/qte-2.3.7/vt-switch.patch @@ -1,10 +1,10 @@ # -# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher +# Patch managed by http://www.holgerschurig.de/patcher.html # ---- 2.3.7/src/kernel/qapplication_qws.cpp~vt-switch 2004-06-28 15:17:37.000000000 +0200 -+++ 2.3.7/src/kernel/qapplication_qws.cpp 2004-06-28 15:43:13.000000000 +0200 +--- qt-2.3.7/src/kernel/qapplication_qws.cpp~vt-switch.patch ++++ qt-2.3.7/src/kernel/qapplication_qws.cpp @@ -123,6 +123,12 @@ static int qt_thread_pipe[2]; #endif @@ -144,7 +144,7 @@ #endif ) { qt_last_cursor = 0xffffffff; // cursor can be changed by another application -@@ -3399,7 +3492,7 @@ +@@ -3394,7 +3487,7 @@ #ifndef QT_NO_QWS_IM if ( mouse.state&button && w != QInputContext::microFocusWidget() ) //button press QInputContext::reset( oldFocus ); @@ -153,7 +153,7 @@ QFocusEvent::setReason( QFocusEvent::Mouse); w->setFocus(); QFocusEvent::resetReason(); -@@ -3545,7 +3638,7 @@ +@@ -3540,7 +3633,7 @@ QApplication::sendEvent( widget, &enter ); (*mouseInWidget) = widget; #ifndef QT_NO_QWS_IM @@ -162,8 +162,8 @@ !widget->testWFlags( Qt::WStyle_Tool ) && !widget->topLevelWidget()->testWFlags( Qt::WStyle_Tool ) ) QInputContext::reset( oldFocus ); ---- 2.3.7/src/kernel/qkeyboard_qws.cpp~vt-switch 2004-06-28 15:17:37.000000000 +0200 -+++ 2.3.7/src/kernel/qkeyboard_qws.cpp 2004-06-28 15:18:13.000000000 +0200 +--- qt-2.3.7/src/kernel/qkeyboard_qws.cpp~vt-switch.patch ++++ qt-2.3.7/src/kernel/qkeyboard_qws.cpp @@ -1068,6 +1068,24 @@ { if (kbdFD >= 0) @@ -189,8 +189,8 @@ #if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_) ioctl(kbdFD, KDSKBMODE, K_XLATE); #endif ---- 2.3.7/src/kernel/qgfxlinuxfb_qws.cpp~vt-switch 2003-07-17 03:20:25.000000000 +0200 -+++ 2.3.7/src/kernel/qgfxlinuxfb_qws.cpp 2004-06-28 15:20:38.000000000 +0200 +--- qt-2.3.7/src/kernel/qgfxlinuxfb_qws.cpp~vt-switch.patch ++++ qt-2.3.7/src/kernel/qgfxlinuxfb_qws.cpp @@ -251,9 +251,9 @@ bool QLinuxFbScreen::initDevice() diff --git a/qte/qte-for-opie_2.3.7.oe b/qte/qte-for-opie_2.3.7.oe index 8a397280cd..730c3d58c5 100644 --- a/qte/qte-for-opie_2.3.7.oe +++ b/qte/qte-for-opie_2.3.7.oe @@ -6,4 +6,4 @@ DESCRIPTION = "Qt/Embedded w/ Opie Patches version ${PV}" SRC_URI_append = "file://opie.patch;patch=1 \ file://lefthand.patch;patch=1 \ - file://qiconview-speed.patch;patch=1" + file://qiconview-speed.patch;patch=1 " diff --git a/qte/qte_2.3.7.oe b/qte/qte_2.3.7.oe index 7fbeeda287..9c24072300 100644 --- a/qte/qte_2.3.7.oe +++ b/qte/qte_2.3.7.oe @@ -17,7 +17,7 @@ SRC_URI = "ftp://ftp.trolltech.com/pub/qt/source/qt-embedded-${PV}.tar.gz \ file://sharp_char.h \ file://switches.h " -SRC_URI_append_simpad = "file://simpad.patch;patch=1 file://devfs.patch;patch=1 " +SRC_URI_append_simpad = "file://devfs.patch;patch=1 file://simpad.patch;patch=1 " SRC_URI_append_h3600 = "file://devfs.patch;patch=1 " SRC_URI_append_h3900 = "file://devfs.patch;patch=1 " |