summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2003-05-30 23:00:51 (UTC)
committer mickeyl <mickeyl>2003-05-30 23:00:51 (UTC)
commita0e3407973f1383e27375be0b37e0ede46f9bd96 (patch) (unidiff)
treee7bba77b316092a563debdafe493318a7fea91ba
parentb0af03e11acc0680a8ca4825cfe9f73e793a5fe1 (diff)
downloadopie-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!
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--qt/qte234-for-opie091-simpad.patch25
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
@@ -27,17 +27,17 @@
27 --- src/kernel/qkeyboard_qws.cpp.origFri May 30 16:05:20 2003 27 --- src/kernel/qkeyboard_qws.cpp.origFri May 30 16:05:20 2003
28 +++ src/kernel/qkeyboard_qws.cppFri May 30 16:03:41 2003 28 +++ src/kernel/qkeyboard_qws.cppFri May 30 16:03:41 2003
29@@ -37,6 +37,7 @@ 29@@ -37,6 +37,7 @@
30 #include <qapplication.h> 30 #include <qapplication.h>
31 #include <qsocketnotifier.h> 31 #include <qsocketnotifier.h>
32 #include <qnamespace.h> 32 #include <qnamespace.h>
33+#include <qdatetime.h> 33+#include <qdatetime.h>
34 #include <qtimer.h> 34 #include <qtimer.h>
35 35
36 #include <stdlib.h> 36 #include <stdlib.h>
37@@ -131,6 +132,59 @@ 37@@ -131,6 +132,59 @@
38 38
39 #endif // QNX6 39 #endif // QNX6
40 40
41+/* 41+/*
42+ * SIMpad switches handler 42+ * SIMpad switches handler
43+ * (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> 43+ * (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de>
@@ -89,64 +89,55 @@
89+ QTime eventTimer; // tracks time between raw events 89+ QTime eventTimer; // tracks time between raw events
90+ QTimer* repeater; 90+ QTimer* repeater;
91+ QSocketNotifier *notifier; 91+ QSocketNotifier *notifier;
92+}; 92+};
93+ 93+
94 #ifdef QT_QWS_SL5XXX 94 #ifdef QT_QWS_SL5XXX
95 static const QWSServer::KeyMap keyM[] = { 95 static const QWSServer::KeyMap keyM[] = {
96 { Qt::Key_unknown,0xffff , 0xffff , 0xffff }, // 00 96 { Qt::Key_unknown,0xffff , 0xffff , 0xffff }, // 00
97@@ -396,7 +450,7 @@
98 for the list of codes).
99 <li>\a modifiers is the set of modifier keys (see Qt::Modifier).
100 <li>\a isPress says whether this is a press or a release.
101- <li>\a autoRepeat says whether this event was generated by an auto-repeat
102+ <li>\a time says whether this event was generated by an auto-repeat
103 mechanism, or an actual key press.
104 </ul>
105 */
106@@ -1440,7 +1494,11 @@ 97@@ -1440,7 +1494,11 @@
107 } else { 98 } else {
108 type = spec; 99 type = spec;
109 } 100 }
110- 101-
111+ if ( type == "SIMpad" ) 102+ if ( type == "SIMpad" )
112+ { 103+ {
113+ qDebug( "QWSKeyboardHandler: using SIMpad keyboard handler..." ); 104+ qDebug( "QWSKeyboardHandler: using SIMpad keyboard handler..." );
114+ handler = new QWSsimpadButtonsHandler(); 105+ handler = new QWSsimpadButtonsHandler();
115+ } 106+ }
116 if ( type == "Buttons" ) { 107 if ( type == "Buttons" ) {
117 #if defined(QT_QWS_YOPY) 108 #if defined(QT_QWS_YOPY)
118 handler = new QWSyopyButtonsHandler(); 109 handler = new QWSyopyButtonsHandler();
119@@ -1469,6 +1527,217 @@ 110@@ -1469,6 +1527,217 @@
120 return keyM; 111 return keyM;
121 } 112 }
122 113
123-#endif // QT_NO_QWS_KEYBOARD 114-#endif // QT_NO_QWS_KEYBOARD
124 115
125+/* 116+/*
126+ * SIMpad switches handler 117+ * SIMpad switches handler
127+ * (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> 118+ * (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de>
128+ */ 119+ */
129+ 120+
130+ 121+
131+QWSsimpadButtonsHandler::QWSsimpadButtonsHandler() 122+QWSsimpadButtonsHandler::QWSsimpadButtonsHandler()
132+ :QWSKeyboardHandler(), fd( -1 ), 123+ :QWSKeyboardHandler(), fd( -1 ),
133+ repeatdelay( 700 ), repeatperiod( 80 ), 124+ repeatdelay( 700 ), repeatperiod( 80 ),
134+ lastCode( 0 ), lastPress( 0 ), 125+ lastCode( 0 ), lastPress( 0 ),
135+ k( -1 ), shiftKeyPressed( 0 ), shiftUsed( false ) 126+ k( -1 ), shiftKeyPressed( 0 ), shiftUsed( false )
136+{ 127+{
137+ qDebug( "SimpadButtonsHandler()" ); 128+ qDebug( "SimpadButtonsHandler() - V4.1" );
138+ fd = ::open( SIMPAD_SWITCHES_DEVICE, O_RDWR | O_NDELAY, 0 ); 129+ fd = ::open( SIMPAD_SWITCHES_DEVICE, O_RDWR | O_NDELAY, 0 );
139+ if ( fd < 0 ) 130+ if ( fd < 0 )
140+ { 131+ {
141+ qWarning( "SimpadButtonsHandler(): can't open %s", SIMPAD_SWITCHES_DEVICE ); 132+ qWarning( "SimpadButtonsHandler(): can't open %s", SIMPAD_SWITCHES_DEVICE );
142+ return; 133+ return;
143+ } 134+ }
144 135
145+ notifier = new QSocketNotifier( fd, QSocketNotifier::Read, this ); 136+ notifier = new QSocketNotifier( fd, QSocketNotifier::Read, this );
146+ connect( notifier, SIGNAL( activated(int) ),this, SLOT( readSwitchesData() ) ); 137+ connect( notifier, SIGNAL( activated(int) ),this, SLOT( readSwitchesData() ) );
147+ 138+
148+ repeater = new QTimer(this); 139+ repeater = new QTimer(this);
149+ connect(repeater, SIGNAL(timeout()), this, SLOT(autoRepeat())); 140+ connect(repeater, SIGNAL(timeout()), this, SLOT(autoRepeat()));
150+ 141+
151+} 142+}
152+ 143+
@@ -191,17 +182,17 @@
191+ eventTimer.start(); 182+ eventTimer.start();
192+ lastPress = press; 183+ lastPress = press;
193+ lastCode = code; 184+ lastCode = code;
194+ } 185+ }
195+ else 186+ else
196+ { 187+ {
197+ int interval = eventTimer.restart(); 188+ int interval = eventTimer.restart();
198+ qDebug( "event interval = %d", interval ); 189+ qDebug( "event interval = %d", interval );
199+ if ( code == lastCode && interval < 30 ) 190+ if ( code == lastCode && interval < 10 )
200+ { 191+ {
201+ qDebug( "event interval too small - ignoring bogus event" ); 192+ qDebug( "event interval too small - ignoring bogus event" );
202+ qDebug( "did I say i hate buggy kernel drivers? :-D" ); 193+ qDebug( "did I say i hate buggy kernel drivers? :-D" );
203+ return; 194+ return;
204+ } 195+ }
205+ 196+
206+ lastPress = press; 197+ lastPress = press;
207+ lastCode = code; 198+ lastCode = code;
@@ -282,18 +273,18 @@
282+ 273+
283+ switch(code) 274+ switch(code)
284+ { 275+ {
285+ case SIMPAD_SWITCH_UP: k = Qt::Key_Up; break; 276+ case SIMPAD_SWITCH_UP: k = Qt::Key_Up; break;
286+ case SIMPAD_SWITCH_DOWN: k = Qt::Key_Down; break; 277+ case SIMPAD_SWITCH_DOWN: k = Qt::Key_Down; break;
287+ case SIMPAD_SWITCH_LEFT: k = Qt::Key_Left; break; 278+ case SIMPAD_SWITCH_LEFT: k = Qt::Key_Left; break;
288+ case SIMPAD_SWITCH_RIGHT: k = Qt::Key_Right; break; 279+ case SIMPAD_SWITCH_RIGHT: k = Qt::Key_Right; break;
289+ 280+
290+ case SIMPAD_SWITCH_UPPER: k=-1; shiftKeyPressed = code; shiftUsed = false; return; 281+ case SIMPAD_SWITCH_UPPER: k=-1; shiftKeyPressed = press? code:0; shiftUsed = false; qDebug( "shiftkey pressed now = %d", shiftKeyPressed ); return;
291+ case SIMPAD_SWITCH_LOWER: k=-1; shiftKeyPressed = code; shiftUsed = false; return; 282+ case SIMPAD_SWITCH_LOWER: k=-1; shiftKeyPressed = press? code:0; shiftUsed = false; qDebug( "shiftkey pressed now = %d", shiftKeyPressed ); return;
292+ 283+
293+ default: k=-1; qWarning( "SimpadButtonsHandler() - unhandled event!" ); break; 284+ default: k=-1; qWarning( "SimpadButtonsHandler() - unhandled event!" ); break;
294+ } 285+ }
295+ } 286+ }
296+ 287+
297+ if ( k == -1 ) 288+ if ( k == -1 )
298+ { 289+ {
299+ qDebug( "no key to emit - returning." ); 290+ qDebug( "no key to emit - returning." );