author | korovkin <korovkin> | 2006-12-13 19:31:16 (UTC) |
---|---|---|
committer | korovkin <korovkin> | 2006-12-13 19:31:16 (UTC) |
commit | 5a0012fb3b75ff41437b0685386731d1367e4e7b (patch) (side-by-side diff) | |
tree | 39aaca04066159ed4c97a4ffae521d938d013780 /libopie2/opiecore/device/odevice_ipaq.cpp | |
parent | a691909050b60b94f5525093062c23d0fab11d1b (diff) | |
download | opie-5a0012fb3b75ff41437b0685386731d1367e4e7b.zip opie-5a0012fb3b75ff41437b0685386731d1367e4e7b.tar.gz opie-5a0012fb3b75ff41437b0685386731d1367e4e7b.tar.bz2 |
Committed patch provided by Paul Solkolovsky which combines all
the 2.6 based PDAs togeter. Thank you Paul!
Diffstat (limited to 'libopie2/opiecore/device/odevice_ipaq.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | libopie2/opiecore/device/odevice_ipaq.cpp | 77 |
1 files changed, 33 insertions, 44 deletions
diff --git a/libopie2/opiecore/device/odevice_ipaq.cpp b/libopie2/opiecore/device/odevice_ipaq.cpp index 00939bf..16ecc27 100644 --- a/libopie2/opiecore/device/odevice_ipaq.cpp +++ b/libopie2/opiecore/device/odevice_ipaq.cpp @@ -63,118 +63,110 @@ using namespace Opie::Core::Internal; /* KERNEL */ #define OD_IOC(dir,type,number,size) (( dir << 30 ) | ( type << 8 ) | ( number ) | ( size << 16 )) #define OD_IO(type,number) OD_IOC(0,type,number,0) #define OD_IOW(type,number,size) OD_IOC(1,type,number,sizeof(size)) #define OD_IOR(type,number,size) OD_IOC(2,type,number,sizeof(size)) #define OD_IORW(type,number,size) OD_IOC(3,type,number,sizeof(size)) typedef struct { unsigned char OffOnBlink; /* 0=off 1=on 2=Blink */ unsigned char TotalTime; /* Units of 5 seconds */ unsigned char OnTime; /* units of 100m/s */ unsigned char OffTime; /* units of 100m/s */ } LED_IN; typedef struct { unsigned char mode; unsigned char pwr; unsigned char brightness; } FLITE_IN; #define LED_ON OD_IOW( 'f', 5, LED_IN ) #define FLITE_ON OD_IOW( 'f', 7, FLITE_IN ) +#define Model_Keyboardless_2_6 (Model_iPAQ_H191x | Model_iPAQ_H22xx | Model_iPAQ_HX4700 | Model_iPAQ_H4xxx) + struct i_button ipaq_buttons [] = { - { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx | Model_iPAQ_H38xx | Model_iPAQ_H39xx | Model_iPAQ_H5xxx | Model_iPAQ_H191x | Model_iPAQ_H22xx | Model_iPAQ_HX4700 | Model_iPAQ_H4xxx, + + // Common button map for all keyboardless devices with 2.6 kernel + { Model_Keyboardless_2_6, Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"), "devicebuttons/ipaq_calendar", "datebook", "nextView()", "today", "raise()" }, - { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx | Model_iPAQ_H38xx | Model_iPAQ_H39xx | Model_iPAQ_H5xxx | Model_iPAQ_H191x | Model_iPAQ_H22xx | Model_iPAQ_HX4700 | Model_iPAQ_H4xxx, + { Model_Keyboardless_2_6, Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"), "devicebuttons/ipaq_contact", "addressbook", "raise()", "addressbook", "beamBusinessCard()" }, - { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx, - Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"), - "devicebuttons/ipaq_menu", - "QPE/TaskBar", "toggleMenu()", - "QPE/TaskBar", "toggleStartMenu()" }, - { Model_iPAQ_H38xx | Model_iPAQ_H39xx | Model_iPAQ_H5xxx, - Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"), + { Model_Keyboardless_2_6, + Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Mail Button"), "devicebuttons/ipaq_mail", "opiemail", "raise()", "opiemail", "newMail()" }, - { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx | Model_iPAQ_H38xx | Model_iPAQ_H39xx | Model_iPAQ_H5xxx | Model_iPAQ_H191x | Model_iPAQ_H4xxx, + { Model_Keyboardless_2_6, Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"), "devicebuttons/ipaq_home", "QPE/Launcher", "home()", "buttonsettings", "raise()" }, - { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx | Model_iPAQ_H38xx | Model_iPAQ_H39xx | Model_iPAQ_H5xxx, + { Model_Keyboardless_2_6, Qt::Key_F24, QT_TRANSLATE_NOOP("Button", "Record Button"), "devicebuttons/ipaq_record", "QPE/VMemo", "toggleRecord()", "sound", "raise()" }, - { Model_iPAQ_H191x | Model_iPAQ_H4xxx, - Qt::Key_F8, QT_TRANSLATE_NOOP("Button", "Mail Button"), - "devicebuttons/ipaq_mail", - "opiemail", "raise()", - "opiemail", "newMail()" }, - { Model_iPAQ_H191x | Model_iPAQ_H4xxx, - Qt::Key_F7, QT_TRANSLATE_NOOP("Button", "Record Button"), - "devicebuttons/ipaq_record", - "QPE/VMemo", "toggleRecord()", - "sound", "raise()" }, - - //h2200 has different button mapping - { Model_iPAQ_H22xx, - Qt::Key_NumLock, QT_TRANSLATE_NOOP("Button", "Mail Button"), - "devicebuttons/ipaq_mail", - "opiemail", "raise()", - "opiemail", "newMail()" }, - { Model_iPAQ_H22xx, - Qt::Key_ScrollLock, QT_TRANSLATE_NOOP("Button", "Menu Button"), + // Devices with 2.4 kernel + { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx | Model_iPAQ_H38xx | Model_iPAQ_H39xx | Model_iPAQ_H5xxx, + Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"), + "devicebuttons/ipaq_calendar", + "datebook", "nextView()", + "today", "raise()" }, + { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx | Model_iPAQ_H38xx | Model_iPAQ_H39xx | Model_iPAQ_H5xxx, + Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"), + "devicebuttons/ipaq_contact", + "addressbook", "raise()", + "addressbook", "beamBusinessCard()" }, + { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx, + Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"), "devicebuttons/ipaq_menu", "QPE/TaskBar", "toggleMenu()", "QPE/TaskBar", "toggleStartMenu()" }, - // and hx4700 has different button mapping still - { Model_iPAQ_HX4700, - Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Mail Button"), + { Model_iPAQ_H38xx | Model_iPAQ_H39xx | Model_iPAQ_H5xxx, + Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"), "devicebuttons/ipaq_mail", "opiemail", "raise()", "opiemail", "newMail()" }, - { Model_iPAQ_HX4700, - Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Record Button"), - "devicebuttons/ipaq_record", - "QPE/VMemo", "toggleRecord()", - "sound", "raise()" }, - { Model_iPAQ_HX4700, - Qt::Key_Home, QT_TRANSLATE_NOOP("Button", "Home Button"), + { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx | Model_iPAQ_H38xx | Model_iPAQ_H39xx | Model_iPAQ_H5xxx, + Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"), "devicebuttons/ipaq_home", "QPE/Launcher", "home()", "buttonsettings", "raise()" }, + { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx | Model_iPAQ_H38xx | Model_iPAQ_H39xx | Model_iPAQ_H5xxx, + Qt::Key_F24, QT_TRANSLATE_NOOP("Button", "Record Button"), + "devicebuttons/ipaq_record", + "QPE/VMemo", "toggleRecord()", + "sound", "raise()" }, }; void iPAQ::init(const QString& model) { d->m_vendorstr = "HP"; d->m_vendor = Vendor_HP; d->m_modelstr = model.mid(model.findRev('H')); if ( d->m_modelstr == "H3100" ) d->m_model = Model_iPAQ_H31xx; else if ( d->m_modelstr == "H3600" ) d->m_model = Model_iPAQ_H36xx; else if ( d->m_modelstr == "H3700" ) d->m_model = Model_iPAQ_H37xx; else if ( d->m_modelstr == "H3800" ) d->m_model = Model_iPAQ_H38xx; else if ( d->m_modelstr == "H3900" ) d->m_model = Model_iPAQ_H39xx; else if ( d->m_modelstr == "H5400" ) d->m_model = Model_iPAQ_H5xxx; else if ( d->m_modelstr == "H2200" ) d->m_model = Model_iPAQ_H22xx; @@ -325,53 +317,50 @@ bool iPAQ::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, b break; } // Rotate cursor keys 180 or 270 case Key_Left : case Key_Right: case Key_Up : case Key_Down : { if (( d->m_model == Model_iPAQ_H31xx ) || ( d->m_model == Model_iPAQ_H38xx )) { newkeycode = Key_Left + ( keycode - Key_Left + 2 ) % 4; } // Rotate the cursor keys by 270 // keycode - Key_Left = position of the button starting from left clockwise // add the rotation to it and modolo. No we've the original offset // add the offset to the Key_Left key if (( d->m_model == Model_iPAQ_H5xxx ) || ( d->m_model == Model_iPAQ_H191x ) || ( d->m_model == Model_iPAQ_H4xxx ) || ( d->m_model == Model_iPAQ_H1940 )) newkeycode = Key_Left + ( keycode - Key_Left + 3 ) % 4; break; } - // map Power Button short/long press to F6 for h191x - case Key_F6: - if ( d->m_model != Model_iPAQ_H191x && d->m_model != Model_iPAQ_H4xxx ) - break; // map Power Button short/long press to F34/F35 + case HardKey_Suspend: // Hope we don't have infinite recursion here case Key_SysReq: { if ( isPress ) { if ( m_power_timer ) killTimer ( m_power_timer ); m_power_timer = startTimer ( 500 ); } else if ( m_power_timer ) { killTimer ( m_power_timer ); m_power_timer = 0; QWSServer::sendKeyEvent ( -1, HardKey_Suspend, 0, true, false ); QWSServer::sendKeyEvent ( -1, HardKey_Suspend, 0, false, false ); } newkeycode = Key_unknown; break; } } if ( newkeycode != keycode ) { if ( newkeycode != Key_unknown ) QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat ); return true; } else return false; |