summaryrefslogtreecommitdiff
path: root/libopie/odevice.cpp
Unidiff
Diffstat (limited to 'libopie/odevice.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/odevice.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp
index 35d6cb4..c5a916b 100644
--- a/libopie/odevice.cpp
+++ b/libopie/odevice.cpp
@@ -1309,57 +1309,64 @@ bool iPAQ::setLedState ( OLed l, OLedState st )
1309 m_leds [0] = st; 1309 m_leds [0] = st;
1310 return true; 1310 return true;
1311 } 1311 }
1312 } 1312 }
1313 } 1313 }
1314 return false; 1314 return false;
1315} 1315}
1316 1316
1317 1317
1318bool iPAQ::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat ) 1318bool iPAQ::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat )
1319{ 1319{
1320 int newkeycode = keycode; 1320 int newkeycode = keycode;
1321 1321
1322 switch ( keycode ) { 1322 switch ( keycode ) {
1323 // H38xx/H39xx have no "Q" key anymore - this is now the Mail key 1323 // H38xx/H39xx have no "Q" key anymore - this is now the Mail key
1324 case HardKey_Menu: { 1324 case HardKey_Menu: {
1325 if (( d-> m_model == Model_iPAQ_H38xx ) || 1325 if (( d-> m_model == Model_iPAQ_H38xx ) ||
1326 ( d-> m_model == Model_iPAQ_H39xx ) || 1326 ( d-> m_model == Model_iPAQ_H39xx ) ||
1327 ( d-> m_model == Model_iPAQ_H5xxx)) { 1327 ( d-> m_model == Model_iPAQ_H5xxx)) {
1328 newkeycode = HardKey_Mail; 1328 newkeycode = HardKey_Mail;
1329 } 1329 }
1330 break; 1330 break;
1331 } 1331 }
1332 1332
1333 // Rotate cursor keys 180° 1333 // Rotate cursor keys 180° or 270°
1334 case Key_Left : 1334 case Key_Left :
1335 case Key_Right: 1335 case Key_Right:
1336 case Key_Up : 1336 case Key_Up :
1337 case Key_Down : { 1337 case Key_Down : {
1338
1338 if (( d-> m_model == Model_iPAQ_H31xx ) || 1339 if (( d-> m_model == Model_iPAQ_H31xx ) ||
1339 ( d-> m_model == Model_iPAQ_H38xx )) { 1340 ( d-> m_model == Model_iPAQ_H38xx )) {
1340 newkeycode = Key_Left + ( keycode - Key_Left + 2 ) % 4; 1341 newkeycode = Key_Left + ( keycode - Key_Left + 2 ) % 4;
1341 } 1342 }
1343 // Rotate the cursor keys by 270°
1344 // keycode - Key_Left = position of the button starting from left clockwise
1345 // add the rotation to it and modolo. No we've the original offset
1346 // add the offset to the Key_Left key
1347 if ( d-> m_model == Model_iPAQ_H5xxx )
1348 newkeycode = Key_Left + ( keycode - Key_Left + 3 ) % 4;
1342 break; 1349 break;
1343 } 1350 }
1344 1351
1345 // map Power Button short/long press to F34/F35 1352 // map Power Button short/long press to F34/F35
1346 case Key_SysReq: { 1353 case Key_SysReq: {
1347 if ( isPress ) { 1354 if ( isPress ) {
1348 if ( m_power_timer ) 1355 if ( m_power_timer )
1349 killTimer ( m_power_timer ); 1356 killTimer ( m_power_timer );
1350 m_power_timer = startTimer ( 500 ); 1357 m_power_timer = startTimer ( 500 );
1351 } 1358 }
1352 else if ( m_power_timer ) { 1359 else if ( m_power_timer ) {
1353 killTimer ( m_power_timer ); 1360 killTimer ( m_power_timer );
1354 m_power_timer = 0; 1361 m_power_timer = 0;
1355 QWSServer::sendKeyEvent ( -1, HardKey_Suspend, 0, true, false ); 1362 QWSServer::sendKeyEvent ( -1, HardKey_Suspend, 0, true, false );
1356 QWSServer::sendKeyEvent ( -1, HardKey_Suspend, 0, false, false ); 1363 QWSServer::sendKeyEvent ( -1, HardKey_Suspend, 0, false, false );
1357 } 1364 }
1358 newkeycode = Key_unknown; 1365 newkeycode = Key_unknown;
1359 break; 1366 break;
1360 } 1367 }
1361 } 1368 }
1362 1369
1363 if ( newkeycode != keycode ) { 1370 if ( newkeycode != keycode ) {
1364 if ( newkeycode != Key_unknown ) 1371 if ( newkeycode != Key_unknown )
1365 QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat ); 1372 QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat );