author | mickeyl <mickeyl> | 2003-05-30 23:00:51 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2003-05-30 23:00:51 (UTC) |
commit | a0e3407973f1383e27375be0b37e0ede46f9bd96 (patch) (side-by-side diff) | |
tree | e7bba77b316092a563debdafe493318a7fea91ba /qt | |
parent | b0af03e11acc0680a8ca4825cfe9f73e793a5fe1 (diff) | |
download | opie-a0e3407973f1383e27375be0b37e0ede46f9bd96.zip opie-a0e3407973f1383e27375be0b37e0ede46f9bd96.tar.gz opie-a0e3407973f1383e27375be0b37e0ede46f9bd96.tar.bz2 |
minor tweaks to the keyboard driver. i'm still not satisfied though, but
i'll stop now until we have a broader testing audience.
eventually that whole stuff must be done in the kernel as part of the
new input layer!
-rw-r--r-- | qt/qte234-for-opie091-simpad.patch | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/qt/qte234-for-opie091-simpad.patch b/qt/qte234-for-opie091-simpad.patch index 5959469..e4af4f7 100644 --- a/qt/qte234-for-opie091-simpad.patch +++ b/qt/qte234-for-opie091-simpad.patch @@ -29,13 +29,13 @@ @@ -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 +/* @@ -91,21 +91,12 @@ + QSocketNotifier *notifier; +}; + #ifdef QT_QWS_SL5XXX static const QWSServer::KeyMap keyM[] = { { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 00 -@@ -396,7 +450,7 @@ - for the list of codes). - <li>\a modifiers is the set of modifier keys (see Qt::Modifier). - <li>\a isPress says whether this is a press or a release. -- <li>\a autoRepeat says whether this event was generated by an auto-repeat -+ <li>\a time says whether this event was generated by an auto-repeat - mechanism, or an actual key press. - </ul> - */ @@ -1440,7 +1494,11 @@ } else { type = spec; } - + if ( type == "SIMpad" ) @@ -116,35 +107,35 @@ if ( type == "Buttons" ) { #if defined(QT_QWS_YOPY) handler = new QWSyopyButtonsHandler(); @@ -1469,6 +1527,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()" ); ++ 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())); + @@ -193,13 +184,13 @@ + lastCode = code; + } + else + { + int interval = eventTimer.restart(); + qDebug( "event interval = %d", interval ); -+ if ( code == lastCode && interval < 30 ) ++ if ( code == lastCode && interval < 10 ) + { + qDebug( "event interval too small - ignoring bogus event" ); + qDebug( "did I say i hate buggy kernel drivers? :-D" ); + return; + } + @@ -284,14 +275,14 @@ + { + 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 = code; shiftUsed = false; return; -+ case SIMPAD_SWITCH_LOWER: k=-1; shiftKeyPressed = code; shiftUsed = false; return; ++ 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 ) |