summaryrefslogtreecommitdiff
path: root/libopie2
authorzecke <zecke>2004-02-19 01:01:30 (UTC)
committer zecke <zecke>2004-02-19 01:01:30 (UTC)
commit3b4b9e070f84ce884a98b4112eaee2cef7530308 (patch) (unidiff)
treea63b57ec3368e41ea1482a37a41b4b9df2f30fd4 /libopie2
parentab41e301eb7f06af0869844d197e38a7838f3f2d (diff)
downloadopie-3b4b9e070f84ce884a98b4112eaee2cef7530308.zip
opie-3b4b9e070f84ce884a98b4112eaee2cef7530308.tar.gz
opie-3b4b9e070f84ce884a98b4112eaee2cef7530308.tar.bz2
The hardware keys on the H5xxx are rotated by 270°
so rotate the key events
Diffstat (limited to 'libopie2') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice_ipaq.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/libopie2/opiecore/device/odevice_ipaq.cpp b/libopie2/opiecore/device/odevice_ipaq.cpp
index d20ea4d..cc4b01a 100644
--- a/libopie2/opiecore/device/odevice_ipaq.cpp
+++ b/libopie2/opiecore/device/odevice_ipaq.cpp
@@ -249,105 +249,111 @@ OLedState iPAQ::ledState ( OLed l ) const
249 } 249 }
250} 250}
251 251
252bool iPAQ::setLedState ( OLed l, OLedState st ) 252bool iPAQ::setLedState ( OLed l, OLedState st )
253{ 253{
254 static int fd = ::open ( "/dev/touchscreen/0", O_RDWR | O_NONBLOCK ); 254 static int fd = ::open ( "/dev/touchscreen/0", O_RDWR | O_NONBLOCK );
255 255
256 if ( l == Led_Power ) { 256 if ( l == Led_Power ) {
257 if ( fd >= 0 ) { 257 if ( fd >= 0 ) {
258 LED_IN leds; 258 LED_IN leds;
259 ::memset ( &leds, 0, sizeof( leds )); 259 ::memset ( &leds, 0, sizeof( leds ));
260 leds. TotalTime = 0; 260 leds. TotalTime = 0;
261 leds. OnTime = 0; 261 leds. OnTime = 0;
262 leds. OffTime = 1; 262 leds. OffTime = 1;
263 leds. OffOnBlink = 2; 263 leds. OffOnBlink = 2;
264 264
265 switch ( st ) { 265 switch ( st ) {
266 case Led_Off : leds. OffOnBlink = 0; break; 266 case Led_Off : leds. OffOnBlink = 0; break;
267 case Led_On : leds. OffOnBlink = 1; break; 267 case Led_On : leds. OffOnBlink = 1; break;
268 case Led_BlinkSlow: leds. OnTime = 10; leds. OffTime = 10; break; 268 case Led_BlinkSlow: leds. OnTime = 10; leds. OffTime = 10; break;
269 case Led_BlinkFast: leds. OnTime = 5; leds. OffTime = 5; break; 269 case Led_BlinkFast: leds. OnTime = 5; leds. OffTime = 5; break;
270 } 270 }
271 271
272 if ( ::ioctl ( fd, LED_ON, &leds ) >= 0 ) { 272 if ( ::ioctl ( fd, LED_ON, &leds ) >= 0 ) {
273 m_leds [0] = st; 273 m_leds [0] = st;
274 return true; 274 return true;
275 } 275 }
276 } 276 }
277 } 277 }
278 return false; 278 return false;
279} 279}
280 280
281 281
282bool iPAQ::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat ) 282bool iPAQ::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat )
283{ 283{
284 int newkeycode = keycode; 284 int newkeycode = keycode;
285 285
286 switch ( keycode ) { 286 switch ( keycode ) {
287 // H38xx/H39xx have no "Q" key anymore - this is now the Mail key 287 // H38xx/H39xx have no "Q" key anymore - this is now the Mail key
288 case HardKey_Menu: { 288 case HardKey_Menu: {
289 if (( d->m_model == Model_iPAQ_H38xx ) || 289 if (( d->m_model == Model_iPAQ_H38xx ) ||
290 ( d->m_model == Model_iPAQ_H39xx ) || 290 ( d->m_model == Model_iPAQ_H39xx ) ||
291 ( d->m_model == Model_iPAQ_H5xxx)) { 291 ( d->m_model == Model_iPAQ_H5xxx)) {
292 newkeycode = HardKey_Mail; 292 newkeycode = HardKey_Mail;
293 } 293 }
294 break; 294 break;
295 } 295 }
296 296
297 // Rotate cursor keys 180° 297 // Rotate cursor keys 180° or 270°
298 case Key_Left : 298 case Key_Left :
299 case Key_Right: 299 case Key_Right:
300 case Key_Up : 300 case Key_Up :
301 case Key_Down : { 301 case Key_Down : {
302 if (( d->m_model == Model_iPAQ_H31xx ) || 302 if (( d->m_model == Model_iPAQ_H31xx ) ||
303 ( d->m_model == Model_iPAQ_H38xx )) { 303 ( d->m_model == Model_iPAQ_H38xx )) {
304 newkeycode = Key_Left + ( keycode - Key_Left + 2 ) % 4; 304 newkeycode = Key_Left + ( keycode - Key_Left + 2 ) % 4;
305 } 305 }
306 // Rotate the cursor keys by 270°
307 // keycode - Key_Left = position of the button starting from left clockwise
308 // add the rotation to it and modolo. No we've the original offset
309 // add the offset to the Key_Left key
310 if ( d-> m_model == Model_iPAQ_H5xxx )
311 newkeycode = Key_Left + ( keycode - Key_Left + 3 ) % 4;
306 break; 312 break;
307 } 313 }
308 314
309 // map Power Button short/long press to F34/F35 315 // map Power Button short/long press to F34/F35
310 case Key_SysReq: { 316 case Key_SysReq: {
311 if ( isPress ) { 317 if ( isPress ) {
312 if ( m_power_timer ) 318 if ( m_power_timer )
313 killTimer ( m_power_timer ); 319 killTimer ( m_power_timer );
314 m_power_timer = startTimer ( 500 ); 320 m_power_timer = startTimer ( 500 );
315 } 321 }
316 else if ( m_power_timer ) { 322 else if ( m_power_timer ) {
317 killTimer ( m_power_timer ); 323 killTimer ( m_power_timer );
318 m_power_timer = 0; 324 m_power_timer = 0;
319 QWSServer::sendKeyEvent ( -1, HardKey_Suspend, 0, true, false ); 325 QWSServer::sendKeyEvent ( -1, HardKey_Suspend, 0, true, false );
320 QWSServer::sendKeyEvent ( -1, HardKey_Suspend, 0, false, false ); 326 QWSServer::sendKeyEvent ( -1, HardKey_Suspend, 0, false, false );
321 } 327 }
322 newkeycode = Key_unknown; 328 newkeycode = Key_unknown;
323 break; 329 break;
324 } 330 }
325 } 331 }
326 332
327 if ( newkeycode != keycode ) { 333 if ( newkeycode != keycode ) {
328 if ( newkeycode != Key_unknown ) 334 if ( newkeycode != Key_unknown )
329 QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat ); 335 QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat );
330 return true; 336 return true;
331 } 337 }
332 else 338 else
333 return false; 339 return false;
334} 340}
335 341
336void iPAQ::timerEvent ( QTimerEvent * ) 342void iPAQ::timerEvent ( QTimerEvent * )
337{ 343{
338 killTimer ( m_power_timer ); 344 killTimer ( m_power_timer );
339 m_power_timer = 0; 345 m_power_timer = 0;
340 QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, true, false ); 346 QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, true, false );
341 QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, false, false ); 347 QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, false, false );
342} 348}
343 349
344 350
345void iPAQ::playAlarmSound() 351void iPAQ::playAlarmSound()
346{ 352{
347#ifndef QT_NO_SOUND 353#ifndef QT_NO_SOUND
348 static Sound snd ( "alarm" ); 354 static Sound snd ( "alarm" );
349 int fd; 355 int fd;
350 int vol; 356 int vol;
351 bool vol_reset = false; 357 bool vol_reset = false;
352 358
353 if (( fd = ::open ( "/dev/sound/mixer", O_RDWR )) >= 0 ) { 359 if (( fd = ::open ( "/dev/sound/mixer", O_RDWR )) >= 0 ) {