author | paule <paule> | 2007-06-20 10:40:49 (UTC) |
---|---|---|
committer | paule <paule> | 2007-06-20 10:40:49 (UTC) |
commit | accbef5e0097a32847dfbaff9f2abfbf39f7595d (patch) (side-by-side diff) | |
tree | cb94af4ef9bc2681ec033bebe5ab5aa45699a2f8 | |
parent | 4b3ffb4d533f034513d5bd9cae497aa117b2afaf (diff) | |
download | opie-accbef5e0097a32847dfbaff9f2abfbf39f7595d.zip opie-accbef5e0097a32847dfbaff9f2abfbf39f7595d.tar.gz opie-accbef5e0097a32847dfbaff9f2abfbf39f7595d.tar.bz2 |
Renumber device vendor bits to avoid clashes, expand model mask to 20 bits, and add support for various Palm devices. Original patch by Jan Herman (z72ka) & Marek Va?ut (Marex) <marek.vasut@gmail.com> (fixes bug #1856)
-rw-r--r-- | libopie2/opiecore/device/odevice.h | 200 | ||||
-rw-r--r-- | libopie2/opiecore/device/odevice_palm.cpp | 222 |
2 files changed, 295 insertions, 127 deletions
diff --git a/libopie2/opiecore/device/odevice.h b/libopie2/opiecore/device/odevice.h index c6306e7..f80183c 100644 --- a/libopie2/opiecore/device/odevice.h +++ b/libopie2/opiecore/device/odevice.h @@ -1,421 +1,437 @@ /* This file is part of the Opie Project (C) 2002-2006 The Opie Team <opie-devel@handhelds.org> =. .=l. .>+-= _;:, .> :=|. This program is free software; you can .> <`_, > . <= redistribute it and/or modify it under :`=1 )Y*s>-.-- : the terms of the GNU Library General Public .="- .-=="i, .._ License as published by the Free Software - . .-<_> .<> Foundation; version 2 of the License. ._= =} : .%`+i> _;_. .i_,=:_. -<s. This program is distributed in the hope that + . -:. = it will be useful, but WITHOUT ANY WARRANTY; : .. .:, . . . without even the implied warranty of =_ + =;=|` MERCHANTABILITY or FITNESS FOR A _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU ..}^=.= = ; Library General Public License for more ++= -. .` .: details. : = ...= . :.=- -. .:....=;==+<; You should have received a copy of the GNU -_. . . )=. = Library General Public License along with -- :-=` this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef ODEVICE_H_ #define ODEVICE_H_ /* OPIE */ #include <opie2/odevicebutton.h> #include <qpe/qpeapplication.h> /* for Transformation enum.. */ /* QT */ #include <qnamespace.h> #include <qobject.h> #include <qstring.h> #include <qstrlist.h> #include <qwindowsystem_qws.h> class Sound; namespace Opie{ namespace Core{ class ODeviceData; /** * The available devices */ enum OModel { Model_Unknown, // = 0 - Model_Series_Mask = 0xffff0000, - - Model_iPAQ = ( 1 << 16 ), - - Model_iPAQ_All = ( Model_iPAQ | 0xffff ), - Model_iPAQ_H31xx = ( Model_iPAQ | 0x0001 ), - Model_iPAQ_H36xx = ( Model_iPAQ | 0x0002 ), - Model_iPAQ_H37xx = ( Model_iPAQ | 0x0004 ), - Model_iPAQ_H38xx = ( Model_iPAQ | 0x0008 ), - Model_iPAQ_H39xx = ( Model_iPAQ | 0x0010 ), - Model_iPAQ_H5xxx = ( Model_iPAQ | 0x0020 ), - Model_iPAQ_H22xx = ( Model_iPAQ | 0x0040 ), - Model_iPAQ_H191x = ( Model_iPAQ | 0x0080 ), - Model_iPAQ_H1940 = ( Model_iPAQ | 0x0100 ), - Model_iPAQ_HX4700 = ( Model_iPAQ | 0x0200 ), - Model_iPAQ_H4xxx = ( Model_iPAQ | 0x0400 ), - - Model_Jornada = ( 3 << 17 ), - - Model_Jornada_56x = ( Model_Jornada | 0x0001 ), - Model_Jornada_720 = ( Model_Jornada | 0x0002 ), - Model_Jornada_820 = ( Model_Jornada | 0x0004 ), - - Model_Zaurus = ( 2 << 16 ), - - Model_Zaurus_SL5000 = ( Model_Zaurus | 0x0001 ), - Model_Zaurus_SL5500 = ( Model_Zaurus | 0x0002 ), - Model_Zaurus_SLA300 = ( Model_Zaurus | 0x0004 ), - Model_Zaurus_SLB600 = ( Model_Zaurus | 0x0008 ), - Model_Zaurus_SLC7x0 = ( Model_Zaurus | 0x0010 ), - Model_Zaurus_SL6000 = ( Model_Zaurus | 0x0020 ), - Model_Zaurus_SLC3000 = ( Model_Zaurus | 0x0040 ), - Model_Zaurus_SLC1000 = ( Model_Zaurus | 0x0080 ), - Model_Zaurus_SLC3100 = ( Model_Zaurus | 0x0100 ), - - Model_SIMpad = ( 3 << 16 ), - - Model_SIMpad_All = ( Model_SIMpad | 0xffff ), - Model_SIMpad_CL4 = ( Model_SIMpad | 0x0001 ), - Model_SIMpad_SL4 = ( Model_SIMpad | 0x0002 ), - Model_SIMpad_SLC = ( Model_SIMpad | 0x0004 ), - Model_SIMpad_TSinus = ( Model_SIMpad | 0x0008 ), - - Model_Ramses = ( 4 << 16 ), - - Model_Ramses_All = ( Model_Ramses | 0xffff ), - Model_Ramses_MNCI = ( Model_Ramses | 0x0001 ), - Model_Ramses_MNCIRX = ( Model_Ramses | 0x0002 ), - - Model_Yopy = ( 5 << 16 ), - - Model_Yopy_All = ( Model_Yopy | 0xffff ), - Model_Yopy_3000 = ( Model_Yopy | 0x0001 ), - Model_Yopy_3500 = ( Model_Yopy | 0x0002 ), - Model_Yopy_3700 = ( Model_Yopy | 0x0004 ), - - Model_Beagle = ( 6 << 16 ), - - Model_Beagle_All = ( Model_Beagle | 0xffff ), - Model_Beagle_PA100 = ( Model_Beagle | 0x0001 ), - - Model_GenuineIntel = ( 7 << 16 ), - - Model_MyPal = ( 8 << 16 ), - - Model_MyPal_All = ( Model_MyPal | 0xffff ), - Model_MyPal_620 = ( Model_MyPal | 0x0001 ), - Model_MyPal_716 = ( Model_MyPal | 0x0002 ), - Model_MyPal_730 = ( Model_MyPal | 0x0004 ), - - Model_HTC = ( 9 << 16 ), - - Model_HTC_All = ( Model_HTC | 0xffff ), - Model_HTC_Universal = ( Model_HTC | 0x0001 ), - Model_HTC_Alpine = ( Model_HTC | 0x0002 ), - Model_HTC_Apache = ( Model_HTC | 0x0004 ), - Model_HTC_Beetles = ( Model_HTC | 0x0008 ), - Model_HTC_Blueangel = ( Model_HTC | 0x0010 ), - Model_HTC_Himalaya = ( Model_HTC | 0x0020 ), - Model_HTC_Magician = ( Model_HTC | 0x0040 ), - - Model_Motorola = ( 2 << 17 ), - - Model_Motorola_All = ( Model_Motorola | 0xffff ), - Model_Motorola_EZX = ( Model_Motorola | 0x0001 ), - - Model_Palm = ( 1 << 17), - - Model_Palm_All = ( Model_Palm | 0xffff ), - Model_Palm_LD = ( Model_Palm | 0x0001 ), - Model_Palm_TX = ( Model_Palm | 0x0002 ), - Model_Palm_Z72 = ( Model_Palm | 0x0004 ), + Model_Series_Mask = 0xfff00000, + + Model_iPAQ = ( 1 << 20 ), + + Model_iPAQ_All = ( Model_iPAQ | 0xfffff ), + Model_iPAQ_H31xx = ( Model_iPAQ | 0x00001 ), + Model_iPAQ_H36xx = ( Model_iPAQ | 0x00002 ), + Model_iPAQ_H37xx = ( Model_iPAQ | 0x00004 ), + Model_iPAQ_H38xx = ( Model_iPAQ | 0x00008 ), + Model_iPAQ_H39xx = ( Model_iPAQ | 0x00010 ), + Model_iPAQ_H5xxx = ( Model_iPAQ | 0x00020 ), + Model_iPAQ_H22xx = ( Model_iPAQ | 0x00040 ), + Model_iPAQ_H191x = ( Model_iPAQ | 0x00080 ), + Model_iPAQ_H1940 = ( Model_iPAQ | 0x00100 ), + Model_iPAQ_HX4700 = ( Model_iPAQ | 0x00200 ), + Model_iPAQ_H4xxx = ( Model_iPAQ | 0x00400 ), + + Model_Jornada = ( 2 << 20 ), + + Model_Jornada_56x = ( Model_Jornada | 0x00001 ), + Model_Jornada_720 = ( Model_Jornada | 0x00002 ), + Model_Jornada_820 = ( Model_Jornada | 0x00004 ), + + Model_Zaurus = ( 3 << 20 ), + + Model_Zaurus_SL5000 = ( Model_Zaurus | 0x00001 ), + Model_Zaurus_SL5500 = ( Model_Zaurus | 0x00002 ), + Model_Zaurus_SLA300 = ( Model_Zaurus | 0x00004 ), + Model_Zaurus_SLB600 = ( Model_Zaurus | 0x00008 ), + Model_Zaurus_SLC7x0 = ( Model_Zaurus | 0x00010 ), + Model_Zaurus_SL6000 = ( Model_Zaurus | 0x00020 ), + Model_Zaurus_SLC3000 = ( Model_Zaurus | 0x00040 ), + Model_Zaurus_SLC1000 = ( Model_Zaurus | 0x00080 ), + Model_Zaurus_SLC3100 = ( Model_Zaurus | 0x00100 ), + + Model_SIMpad = ( 4 << 20 ), + + Model_SIMpad_All = ( Model_SIMpad | 0xfffff ), + Model_SIMpad_CL4 = ( Model_SIMpad | 0x00001 ), + Model_SIMpad_SL4 = ( Model_SIMpad | 0x00002 ), + Model_SIMpad_SLC = ( Model_SIMpad | 0x00004 ), + Model_SIMpad_TSinus = ( Model_SIMpad | 0x00008 ), + + Model_Ramses = ( 5 << 20 ), + + Model_Ramses_All = ( Model_Ramses | 0xfffff ), + Model_Ramses_MNCI = ( Model_Ramses | 0x00001 ), + Model_Ramses_MNCIRX = ( Model_Ramses | 0x00002 ), + + Model_Yopy = ( 6 << 20 ), + + Model_Yopy_All = ( Model_Yopy | 0xfffff ), + Model_Yopy_3000 = ( Model_Yopy | 0x00001 ), + Model_Yopy_3500 = ( Model_Yopy | 0x00002 ), + Model_Yopy_3700 = ( Model_Yopy | 0x00004 ), + + Model_Beagle = ( 7 << 20 ), + + Model_Beagle_All = ( Model_Beagle | 0xfffff ), + Model_Beagle_PA100 = ( Model_Beagle | 0x00001 ), + + Model_GenuineIntel = ( 8 << 20 ), + + Model_MyPal = ( 9 << 20 ), + + Model_MyPal_All = ( Model_MyPal | 0xfffff ), + Model_MyPal_620 = ( Model_MyPal | 0x00001 ), + Model_MyPal_716 = ( Model_MyPal | 0x00002 ), + Model_MyPal_730 = ( Model_MyPal | 0x00004 ), + + Model_HTC = ( 10 << 20 ), + + Model_HTC_All = ( Model_HTC | 0xfffff ), + Model_HTC_Universal = ( Model_HTC | 0x00001 ), + Model_HTC_Alpine = ( Model_HTC | 0x00002 ), + Model_HTC_Apache = ( Model_HTC | 0x00004 ), + Model_HTC_Beetles = ( Model_HTC | 0x00008 ), + Model_HTC_Blueangel = ( Model_HTC | 0x00010 ), + Model_HTC_Himalaya = ( Model_HTC | 0x00020 ), + Model_HTC_Magician = ( Model_HTC | 0x00040 ), + + Model_Motorola = ( 11 << 20 ), + + Model_Motorola_All = ( Model_Motorola | 0xfffff ), + Model_Motorola_EZX = ( Model_Motorola | 0x00001 ), + + Model_Palm = ( 12 << 20 ), + + Model_Palm_All = ( Model_Palm | 0xfffff ), + Model_Palm_TT = ( Model_Palm | 0x00001 ), + Model_Palm_TT2 = ( Model_Palm | 0x00002 ), + Model_Palm_TT3 = ( Model_Palm | 0x00004 ), + Model_Palm_TT5 = ( Model_Palm | 0x00008 ), + Model_Palm_TC = ( Model_Palm | 0x00010 ), + Model_Palm_TE = ( Model_Palm | 0x00020 ), + Model_Palm_TE2 = ( Model_Palm | 0x00040 ), + Model_Palm_LD = ( Model_Palm | 0x00080 ), + Model_Palm_TX = ( Model_Palm | 0x00100 ), + Model_Palm_Z71 = ( Model_Palm | 0x00200 ), + Model_Palm_Z72 = ( Model_Palm | 0x00400 ), + Model_Palm_T600 = ( Model_Palm | 0x00800 ), + Model_Palm_T650 = ( Model_Palm | 0x01000 ), + Model_Palm_T680 = ( Model_Palm | 0x02000 ), + Model_Palm_T700W = ( Model_Palm | 0x04000 ), + Model_Palm_T700P = ( Model_Palm | 0x08000 ), + Model_Palm_T750 = ( Model_Palm | 0x10000 ), + Model_Palm_T755P = ( Model_Palm | 0x20000 ), + Model_Palm_FOLEO = ( Model_Palm | 0x40000 ), }; /** * The vendor of the device */ enum OVendor { Vendor_Unknown, Vendor_HP, Vendor_Sharp, Vendor_SIEMENS, Vendor_MundN, Vendor_GMate, Vendor_MasterIA, Vendor_GenuineIntel, Vendor_Asus, Vendor_HTC, Vendor_Motorola, Vendor_Palm, }; /** * The System used */ enum OSystem { System_Unknown, System_Familiar, System_Zaurus, System_OpenZaurus, System_Linupy, System_OpenEmbedded, System_PC, System_OpenEZX, System_Angstrom, }; typedef struct { OSystem system; char* sysstr; char* sysvfile; } ODistribution; extern ODistribution distributions[]; enum OLedState { Led_Off, Led_On, Led_BlinkSlow, Led_BlinkFast }; enum OLed { Led_Mail, Led_Power, Led_BlueTooth }; enum OHardKey { HardKey_Datebook = Qt::Key_F9, HardKey_Contacts = Qt::Key_F10, HardKey_Menu = Qt::Key_F11, HardKey_Home = Qt::Key_F12, HardKey_Mail = Qt::Key_F13, HardKey_Record = Qt::Key_F24, HardKey_Suspend = Qt::Key_F34, HardKey_Backlight = Qt::Key_F35, HardKey_Action = Qt::Key_F10, HardKey_OK = Qt::Key_F11, HardKey_End = Qt::Key_F12, }; enum ODirection { CW = 0, CCW = 1, Flip = 2, }; enum OHingeStatus { CASE_CLOSED = 3, CASE_PORTRAIT = 2, CASE_LANDSCAPE = 0, CASE_UNKNOWN = 1, }; /* default button for qvfb or such * see odevice.cpp for details. * hint: manage a user defined button for qvfb? * alwin */ struct default_button { Qt::Key code; char *utext; char *pix; char *fpressedservice; char *fpressedaction; char *fheldservice; char *fheldaction; }; /** * A singleton which gives informations about device specefic option * like the Hardware used, LEDs, the Base Distribution and * hardware key mappings. * * @short A small class for device specific options * @see QObject * @author Robert Griebl * @version 1.0 */ class ODevice : public QObject { Q_OBJECT private: /* disable copy */ ODevice ( const ODevice & ); protected: ODevice(); virtual void init(const QString&); virtual void initButtons(); static void sendSuspendmsg(); ODeviceData *d; public: // sandman do we want to allow destructions? -zecke? virtual ~ODevice(); static ODevice *inst(); // information QString modelString() const; OModel model() const; inline OModel series() const { return (OModel) ( model() & Model_Series_Mask ); } QString vendorString() const; OVendor vendor() const; QString systemString() const; OSystem system() const; QString systemVersionString() const; virtual Transformation rotation() const; virtual ODirection direction() const; QString qteDriver() const; // system virtual bool suspend(); virtual bool setDisplayStatus ( bool on ); virtual bool setDisplayBrightness ( int brightness ); virtual int displayBrightnessResolution() const; virtual bool setDisplayContrast ( int contrast ); virtual int displayContrastResolution() const; // don't add new virtual methods, use this: // /*virtual */ void boo(int i ) { return virtual_hook(1,&i); }; // and in your subclass do overwrite // protected virtual int virtual_hook(int, void *) // which is defined below // input / output virtual void playAlarmSound(); virtual void playKeySound(); virtual void playTouchSound(); virtual QValueList <OLed> ledList() const; virtual QValueList <OLedState> ledStateList ( OLed led ) const; virtual OLedState ledState ( OLed led ) const; virtual bool setLedState ( OLed led, OLedState st ); virtual bool hasLightSensor() const; virtual int readLightSensor(); virtual int lightSensorResolution() const; virtual bool hasHingeSensor() const; virtual OHingeStatus readHingeSensor()const; const QStrList &allowedCpuFrequencies() const; bool setCurrentCpuFrequency(uint index); /** * Returns the available buttons on this device. The number and location * of buttons will vary depending on the device. Button numbers will be assigned * by the device manufacturer and will be from most preferred button to least preffered * button. Note that this list only contains "user mappable" buttons. * * @todo Make method const and take care of calling initButtons or make that const too * */ const QValueList<ODeviceButton> &buttons(); /** * Returns the DeviceButton for the \a keyCode. If \a keyCode is not found, it * returns 0L */ const ODeviceButton *buttonForKeycode ( ushort keyCode ); /** * Reassigns the pressed action for \a button. To return to the factory * default pass an empty string as \a qcopMessage. */ void remapPressedAction ( int button, const OQCopMessage &qcopMessage ); /** * Reassigns the held action for \a button. To return to the factory * default pass an empty string as \a qcopMessage. */ void remapHeldAction ( int button, const OQCopMessage &qcopMessage ); /** * How long (in ms) you have to press a button for a "hold" action */ uint buttonHoldTime() const; signals: void buttonMappingChanged(); private slots: void systemMessage ( const QCString &, const QByteArray & ); void playingStopped(); protected: void addPreHandler(QWSServer::KeyboardFilter*aFilter); void remPreHandler(QWSServer::KeyboardFilter*aFilter); void reloadButtonMapping(); void changeMixerForAlarm( int mixer, const char* file, Sound *snd); /* ugly virtual hook */ virtual void virtual_hook( int id, void* data ); }; class ODeviceData { public: QString m_vendorstr; OVendor m_vendor; QString m_modelstr; OModel m_model; QString m_systemstr; OSystem m_system; QString m_sysverstr; Transformation m_rotation; ODirection m_direction; QString m_qteDriver; QValueList <ODeviceButton> *m_buttons; uint m_holdtime; QStrList *m_cpu_frequencies; bool m_initializedButtonQcop : 1; /* values for changeMixerForAlarm */ int m_sound, m_vol, m_mixer; }; extern bool isQWS(); extern QCString makeChannel ( const char *str ); } } #endif diff --git a/libopie2/opiecore/device/odevice_palm.cpp b/libopie2/opiecore/device/odevice_palm.cpp index d40dfce..892083e 100644 --- a/libopie2/opiecore/device/odevice_palm.cpp +++ b/libopie2/opiecore/device/odevice_palm.cpp @@ -1,288 +1,440 @@ /* - This file is part of the Opie Project + � � � � � � � � This file is part of the Opie Project Copyright (C)2002-2005 The Opie Team <opie-devel@handhelds.org> =. .=l. - .>+-= - _;:, .> :=|. This program is free software; you can -.> <`_, > . <= redistribute it and/or modify it under -:`=1 )Y*s>-.-- : the terms of the GNU Library General Public -.="- .-=="i, .._ License as published by the Free Software - - . .-<_> .<> Foundation; either version 2 of the License, - ._= =} : or (at your option) any later version. - .%`+i> _;_. - .i_,=:_. -<s. This program is distributed in the hope that - + . -:. = it will be useful, but WITHOUT ANY WARRANTY; - : .. .:, . . . without even the implied warranty of - =_ + =;=|` MERCHANTABILITY or FITNESS FOR A - _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU -..}^=.= = ; Library General Public License for more -++= -. .` .: details. -: = ...= . :.=- - -. .:....=;==+<; You should have received a copy of the GNU - -_. . . )=. = Library General Public License along with - -- :-=` this library; see the file COPYING.LIB. +� � � � � �.>+-= +�_;:, � � .> � �:=|. This program is free software; you can +.> <`_, � > �. � <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- � : the terms of the GNU Library General Public +.="- .-=="i, � � .._ License as published by the Free Software +�- . � .-<_> � � .<> Foundation; either version 2 of the License, +� � �._= =} � � � : or (at your option) any later version. +� � .%`+i> � � � _;_. +� � .i_,=:_. � � �-<s. This program is distributed in the hope that +� � �+ �. �-:. � � � = it will be useful, but WITHOUT ANY WARRANTY; + : .. � �.:, � � . . . without even the implied warranty of +� � =_ � � � �+ � � =;=|` MERCHANTABILITY or FITNESS FOR A +� _.=:. � � � : � �:=>`: PARTICULAR PURPOSE. See the GNU +..}^=.= � � � = � � � ; Library General Public License for more +++= � -. � � .` � � .: details. +: � � = �...= . :.=- +�-. � .:....=;==+<; You should have received a copy of the GNU +� -_. . . � )=. �= Library General Public License along with +� � -- � � � �:-=` this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "odevice_palm.h" /* QT */ #include <qapplication.h> #include <qfile.h> #include <qtextstream.h> #include <qwindowsystem_qws.h> #include <qgfx_qws.h> /* OPIE */ #include <qpe/config.h> #include <qpe/sound.h> #include <qpe/qcopenvelope_qws.h> #include <opie2/okeyfilter.h> #include <opie2/oresource.h> /* STD */ #include <fcntl.h> #include <math.h> #include <stdlib.h> #include <signal.h> #include <sys/ioctl.h> #include <sys/time.h> #include <unistd.h> #ifndef QT_NO_SOUND #include <linux/soundcard.h> #endif using namespace Opie::Core; using namespace Opie::Core::Internal; struct palm_button palm_buttons [] = { - { Model_Palm_TX | Model_Palm_LD | Model_Palm_Z72, + { Model_Palm_TT | Model_Palm_TT2 | Model_Palm_TT3 | Model_Palm_TT5 | + Model_Palm_TE | Model_Palm_TE2 | Model_Palm_TC | Model_Palm_LD | + Model_Palm_TX | Model_Palm_Z71 | Model_Palm_Z72 | Model_Palm_T600 | + Model_Palm_T650 | Model_Palm_T680 | Model_Palm_T700W | + Model_Palm_T700P | Model_Palm_T750 | Model_Palm_T755P, Qt::Key_F9, QT_TRANSLATE_NOOP( "Button", "Home Button" ), "devicebuttons/palm_home", "QPE/Launcher", "home()", "buttonsettings", "raise()" }, - { Model_Palm_TX | Model_Palm_LD | Model_Palm_Z72, + { Model_Palm_TT | Model_Palm_TT2 | Model_Palm_TT3 | Model_Palm_TT5 | + Model_Palm_TE | Model_Palm_TE2 | Model_Palm_TC | Model_Palm_LD | + Model_Palm_TX | Model_Palm_Z71 | Model_Palm_Z72 | Model_Palm_T600 | + Model_Palm_T650 | Model_Palm_T680 | Model_Palm_T700W | + Model_Palm_T700P | Model_Palm_T750 | Model_Palm_T755P, Qt::Key_F10, QT_TRANSLATE_NOOP( "Button", "Calendar Button" ), "devicebuttons/palm_calendar", "datebook", "nextView()", "today", "raise()" }, - { Model_Palm_TX | Model_Palm_LD | Model_Palm_Z72, + { Model_Palm_TT | Model_Palm_TT2 | Model_Palm_TT3 | Model_Palm_TT5 | + Model_Palm_TE | Model_Palm_TE2 | Model_Palm_TC | Model_Palm_LD | + Model_Palm_TX | Model_Palm_Z71 | Model_Palm_Z72 | Model_Palm_T600 | + Model_Palm_T650 | Model_Palm_T680 | Model_Palm_T700W | + Model_Palm_T700P | Model_Palm_T750 | Model_Palm_T755P, Qt::Key_F11, QT_TRANSLATE_NOOP( "Button", "Todo Button" ), "devicebuttons/palm_todo", "todolist", "raise()", "todolist", "create()" }, - { Model_Palm_TX | Model_Palm_LD | Model_Palm_Z72, + { Model_Palm_TT | Model_Palm_TT2 | Model_Palm_TT3 | Model_Palm_TT5 | + Model_Palm_TE | Model_Palm_TE2 | Model_Palm_TC | Model_Palm_LD | + Model_Palm_TX | Model_Palm_Z71 | Model_Palm_Z72 | Model_Palm_T600 | + Model_Palm_T650 | Model_Palm_T680 | Model_Palm_T700W | + Model_Palm_T700P | Model_Palm_T750 | Model_Palm_T755P, Qt::Key_F12, QT_TRANSLATE_NOOP( "Button", "Mail Button" ), "devicebuttons/palm_mail", "opiemail", "raise()", "opiemail", "newmail()" }, - { Model_Palm_LD, - Qt::Key_F7, QT_TRANSLATE_NOOP( "Button", "Voice Memo Button" ), - "devicebuttons/palm_voice_memo", - "QPE/TaskBar", "toggleMenu()", - "QPE/TaskBar", "toggleStartMenu()" }, - { Model_Palm_LD, - Qt::Key_F8, QT_TRANSLATE_NOOP( "Button", "Rotate Button" ), - "devicebuttons/palm_rotate", - "QPE/Rotation", "flip()",0,0}, + { Model_Palm_LD | Model_Palm_Z72 | Model_Palm_T600 | Model_Palm_T650 | + Model_Palm_T680 | Model_Palm_T700W | Model_Palm_T700P | + Model_Palm_T750 | Model_Palm_T755P, + Qt::Key_F7, QT_TRANSLATE_NOOP( "Button", "Record Button" ), + "devicebuttons/palm_record", + "QPE/VMemo", "toggleRecord()", + "sound", "raise()" }, + { Model_Palm_TT | Model_Palm_TT2 | Model_Palm_TT3 | Model_Palm_TT5 | + Model_Palm_TE | Model_Palm_TE2 | Model_Palm_TC | Model_Palm_LD | + Model_Palm_TX | Model_Palm_Z71 | Model_Palm_Z72 | Model_Palm_T600 | + Model_Palm_T650 | Model_Palm_T680 | Model_Palm_T700W | + Model_Palm_T700P | Model_Palm_T750 | Model_Palm_T755P, + Qt::Key_F8, QT_TRANSLATE_NOOP( "Button", "Suspend Button" ), + "devicebuttons/palm_suspend", + "suspend", "raise()", + "suspend", "raise()" }, }; void Palm::init(const QString& cpu_info) { d->m_vendorstr = "Palm"; d->m_vendor = Vendor_Palm; QString model = "unknown"; int loc = cpu_info.find( ":" ); if ( loc != -1 ) model = cpu_info.mid( loc+2 ).simplifyWhiteSpace(); else model = cpu_info; - if ( model == "Palm LifeDrive" ) { + if ( model == "Palm Tungsten T" ) { + d->m_modelstr = "Palm Tungsten|T"; + d->m_model = Model_Palm_TT; + } + else if ( model == "Palm Tungsten T2" ) { + d->m_modelstr = "Palm Tungsten|T2"; + d->m_model = Model_Palm_TT2; + } + else if ( model == "Palm Tungsten T3" ) { + d->m_modelstr = "Palm Tungsten|T3"; + d->m_model = Model_Palm_TT3; + } + else if ( model == "Palm Tungsten T5" ) { + d->m_modelstr = "Palm Tungsten|T5"; + d->m_model = Model_Palm_TT5; + } + else if ( model == "Palm Tungsten C" ) { + d->m_modelstr = "Palm Tungsten|C"; + d->m_model = Model_Palm_TC; + } + else if ( model == "Palm Tungsten E" ) { + d->m_modelstr = "Palm Tungsten|E"; + d->m_model = Model_Palm_TE; + } + else if ( model == "Palm Tungsten E2" ) { + d->m_modelstr = "Palm Tungsten|E2"; + d->m_model = Model_Palm_TE2; + } + else if ( model == "Palm LifeDrive" ) { d->m_modelstr = "Palm LifeDrive"; d->m_model = Model_Palm_LD; } else if ( model == "Palm TX" ) { d->m_modelstr = "Palm TX"; d->m_model = Model_Palm_TX; } + else if ( model == "Palm Zire 71" ) { + d->m_modelstr = "Palm Zire 71"; + d->m_model = Model_Palm_Z71; + } else if ( model == "Palm Zire 72" ) { d->m_modelstr = "Palm Zire 72"; d->m_model = Model_Palm_Z72; } + else if ( model == "Palm Treo 600" ) { + d->m_modelstr = "Palm Treo 600"; + d->m_model = Model_Palm_T600; + } + else if ( model == "Palm Treo 650" ) { + d->m_modelstr = "Palm Treo 650"; + d->m_model = Model_Palm_T650; + } + else if ( model == "Palm Treo 680" ) { + d->m_modelstr = "Palm Treo 680"; + d->m_model = Model_Palm_T680; + } + else if ( model == "Palm Treo 700w" ) { + d->m_modelstr = "Palm Treo 700w/700wx"; + d->m_model = Model_Palm_T700W; + } + else if ( model == "Palm Treo 700p" ) { + d->m_modelstr = "Palm Treo 700p"; + d->m_model = Model_Palm_T700P; + } + else if ( model == "Palm Treo 750" ) { + d->m_modelstr = "Palm Treo 750"; + d->m_model = Model_Palm_T750; + } + else if ( model == "Palm Treo 755p" ) { + d->m_modelstr = "Palm Treo 755"; + d->m_model = Model_Palm_T755P; + } + else if ( model == "Palm Foleo" ) { + d->m_modelstr = "Palm Foleo"; + d->m_model = Model_Palm_FOLEO; + } else d->m_model = Model_Unknown; switch ( d->m_model ) { + case Model_Palm_TT3: + case Model_Palm_TT5: + case Model_Palm_TC: case Model_Palm_LD: case Model_Palm_TX: + case Model_Palm_TE2: case Model_Palm_Z72: m_backlightdev = "/sys/class/backlight/pxapwm-bl/"; d->m_rotation = Rot0; d->m_direction = CCW; d->m_qteDriver = "Transformed"; break; + case Model_Palm_T600: + case Model_Palm_TT: + case Model_Palm_TT2: + case Model_Palm_TE: + case Model_Palm_Z71: + m_backlightdev = "/sys/class/backlight/omap-bl/"; + break; + case Model_Palm_T650: + case Model_Palm_T680: + case Model_Palm_T700W: + case Model_Palm_T700P: + case Model_Palm_T750: + case Model_Palm_T755P: + m_backlightdev = "/sys/class/backlight/corgi-bl/"; + break; + default: m_backlightdev = ""; } } void Palm::initButtons() { if ( d->m_buttons ) return ; if ( isQWS( ) ) { addPreHandler(this); } d->m_buttons = new QValueList <ODeviceButton>; for ( uint i = 0; i < ( sizeof( palm_buttons ) / sizeof( palm_button ) ); i++ ) { palm_button *ib = palm_buttons + i; ODeviceButton b; if (( ib->model & d->m_model ) == d->m_model ) { b. setKeycode ( ib->code ); b. setUserText ( QObject::tr ( "Button", ib->utext )); b. setPixmap ( OResource::loadPixmap ( ib->pix )); b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib->fpressedservice ), ib->fpressedaction )); b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib->fheldservice ), ib->fheldaction )); d->m_buttons->append ( b ); } } reloadButtonMapping(); } bool Palm::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat ) { int newkeycode = keycode; if (qt_screen->transformOrientation() != Rot0){ switch ( keycode ) { case Key_Left : case Key_Right: case Key_Up : case Key_Down : newkeycode = Key_Left + ( keycode - Key_Left + (int) qt_screen->transformOrientation() ) % 4; default: break; } if (newkeycode!=keycode) { if ( newkeycode != Key_unknown ) { QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat ); } return true; } } return false; } bool Palm::suspend() { // some Palms do not implement their own power management at the moment. bool res = false; if ( !isQWS( ) ) // only qwsserver is allowed to suspend return false; switch ( d->m_model ) { + case Model_Palm_TT: + case Model_Palm_TT2: + case Model_Palm_TT3: + case Model_Palm_TT5: + case Model_Palm_TE: + case Model_Palm_TE2: + case Model_Palm_TC: case Model_Palm_LD: + case Model_Palm_TX: + case Model_Palm_Z71: case Model_Palm_Z72: + case Model_Palm_T600: + case Model_Palm_T650: + case Model_Palm_T680: + case Model_Palm_T700W: + case Model_Palm_T700P: + case Model_Palm_T750: + case Model_Palm_T755P: { QCopChannel::send( "QPE/System", "aboutToSuspend()" ); ::sync(); // flush fs caches res = ( ::system ( "apm --suspend" ) == 0 ); QCopChannel::send( "QPE/System", "returnFromSuspend()" ); } break; default: break; } return res; } int Palm::displayBrightnessResolution() const { int res = 1; int fd = -1; switch ( d->m_model ) { + case Model_Palm_TT: + case Model_Palm_TT2: + case Model_Palm_TT3: + case Model_Palm_TT5: + case Model_Palm_TE: + case Model_Palm_TE2: + case Model_Palm_TC: case Model_Palm_LD: case Model_Palm_TX: + case Model_Palm_Z71: case Model_Palm_Z72: + case Model_Palm_T600: + case Model_Palm_T650: + case Model_Palm_T680: + case Model_Palm_T700W: + case Model_Palm_T700P: + case Model_Palm_T750: + case Model_Palm_T755P: fd = ::open( m_backlightdev + "max_brightness", O_RDONLY|O_NONBLOCK ); if ( fd != -1) { char buf[100]; if ( ::read( fd, &buf[0], sizeof buf ) > 0 ) ::sscanf( &buf[0], "%d", &res ); ::close( fd ); } break; default: res = 1; } return res; } bool Palm::setDisplayBrightness( int bright ) { bool res = false; if ( bright > 255 ) bright = 255; if ( bright < 0 ) bright = 0; int numberOfSteps = displayBrightnessResolution(); int val = ( bright == 1 ) ? 1 : ( bright * numberOfSteps ) / 255; int fd = -1; switch ( d->m_model ) { - + case Model_Palm_TT: + case Model_Palm_TT2: + case Model_Palm_TT3: + case Model_Palm_TT5: + case Model_Palm_TE: + case Model_Palm_TE2: + case Model_Palm_TC: case Model_Palm_LD: case Model_Palm_TX: + case Model_Palm_Z71: case Model_Palm_Z72: + case Model_Palm_T600: + case Model_Palm_T650: + case Model_Palm_T680: + case Model_Palm_T700W: + case Model_Palm_T700P: + case Model_Palm_T750: + case Model_Palm_T755P: fd = ::open( m_backlightdev + "brightness", O_WRONLY|O_NONBLOCK ); if ( fd != -1 ) { char buf[100]; int len = ::snprintf( &buf[0], sizeof buf, "%d", val ); res = ( ::write( fd, &buf[0], len ) == 0 ); ::close( fd ); } break; default: res = false; } return res; } |