diff options
Diffstat (limited to 'qte/qte-2.3.8-snapshot/simpad.patch')
-rw-r--r-- | qte/qte-2.3.8-snapshot/simpad.patch | 403 |
1 files changed, 0 insertions, 403 deletions
diff --git a/qte/qte-2.3.8-snapshot/simpad.patch b/qte/qte-2.3.8-snapshot/simpad.patch deleted file mode 100644 index 4fdb5b1adf..0000000000 --- a/qte/qte-2.3.8-snapshot/simpad.patch +++ /dev/null @@ -1,403 +0,0 @@ -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 ); |