summaryrefslogtreecommitdiff
path: root/libopie2
authoralwin <alwin>2005-03-13 14:47:33 (UTC)
committer alwin <alwin>2005-03-13 14:47:33 (UTC)
commit826bc5ef2aa34877fd8816ddfc4156f865dc9149 (patch) (side-by-side diff)
tree1862353f2954b81a2f1d8b5b522e147a43f46d55 /libopie2
parenteaec48ce99bc4e2f4e53dbd539a031b3ed993fb3 (diff)
downloadopie-826bc5ef2aa34877fd8816ddfc4156f865dc9149.zip
opie-826bc5ef2aa34877fd8816ddfc4156f865dc9149.tar.gz
opie-826bc5ef2aa34877fd8816ddfc4156f865dc9149.tar.bz2
inserted a keyevent-filter just used by CL3000 and C7x0/C8x0.
That way I map the cursor keys depending on hinge-status, eg, on portrait mode scrolling wheel down the cursor key will realy key down and not key left. If this is the wrong place, please correct and tell me - I had tooked this idea and code from iPAQ (but it works fine this moment).
Diffstat (limited to 'libopie2') (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice_zaurus.cpp87
-rw-r--r--libopie2/opiecore/device/odevice_zaurus.h50
2 files changed, 92 insertions, 45 deletions
diff --git a/libopie2/opiecore/device/odevice_zaurus.cpp b/libopie2/opiecore/device/odevice_zaurus.cpp
index 67dfa41..89b9258 100644
--- a/libopie2/opiecore/device/odevice_zaurus.cpp
+++ b/libopie2/opiecore/device/odevice_zaurus.cpp
@@ -1,30 +1,30 @@
/*
-                 This file is part of the Opie Project
-              Copyright (C) The Opie Team <opie-devel@handhelds.org>
- =. Copyright (C) 2003-2005 Michael 'Mickey' Lauer <mickey@Vanille.de>
+                 This file is part of the Opie Project
+              Copyright (C) 2002,2003,2004 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_zaurus.h"
@@ -235,12 +235,16 @@ void Zaurus::init(const QString& cpu_info)
void Zaurus::initButtons()
{
if ( d->m_buttons )
return;
+ if ( isQWS( ) ) {
+ addPreHandler(this);
+ }
+
d->m_buttons = new QValueList <ODeviceButton>;
struct z_button * pz_buttons;
int buttoncount;
switch ( d->m_model ) {
case Model_Zaurus_SLC3000: // fallthrough
@@ -588,6 +592,45 @@ OHingeStatus Zaurus::readHingeSensor() const
else if ( keyboard && keyboard->isHeld( OInputDevice::Key_KP1 ) ) return CASE_PORTRAIT;
else if ( keyboard && keyboard->isHeld( OInputDevice::Key_KP2 ) ) return CASE_CLOSED;
qWarning("Zaurus::readHingeSensor() - couldn't compute hinge status!" );
return CASE_UNKNOWN;
}
}
+
+/*
+ * Take code from iPAQ device.
+ * That way we switch the cursor directions depending on status of hinge sensor, eg. hardware direction.
+ * I hope that is ok - Alwin
+ */
+bool Zaurus::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat )
+{
+ Transformation rot;
+ int newkeycode = keycode;
+
+
+ if (d->m_model!=Model_Zaurus_SLC3000 && d->m_model!=Model_Zaurus_SLC7x0) return false;
+ rot = rotation();
+ if (rot==Rot0) return false;
+
+ /* map cursor keys depending on the hinge status */
+ switch ( keycode ) {
+ // Rotate cursor keys
+ case Key_Left :
+ case Key_Right:
+ case Key_Up :
+ case Key_Down :
+ {
+ if (rot==Rot90) {
+ newkeycode = Key_Left + ( keycode - Key_Left + 3 ) % 4;
+ }
+ }
+ break;
+
+ }
+ if (newkeycode!=keycode) {
+ if ( newkeycode != Key_unknown ) {
+ QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat );
+ }
+ return true;
+ }
+ return false;
+}
diff --git a/libopie2/opiecore/device/odevice_zaurus.h b/libopie2/opiecore/device/odevice_zaurus.h
index 6e6ca46..1fb0cd9 100644
--- a/libopie2/opiecore/device/odevice_zaurus.h
+++ b/libopie2/opiecore/device/odevice_zaurus.h
@@ -1,40 +1,43 @@
/*
-                 This file is part of the Opie Project
-              Copyright (C) The Opie Team <opie-devel@handhelds.org>
- =. Copyright (C) 2003-2005 Michael 'Mickey' Lauer <mickey@Vanille.de>
+                 This file is part of the Opie Project
+              Copyright (C) 2002,2003,2004 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.
*/
#ifndef ODEVICE_ZAURUS
#define ODEVICE_ZAURUS
#include "odevice_abstractmobiledevice.h"
+/* QT */
+#include <qwindowsystem_qws.h>
+
#ifndef ARRAY_SIZE
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
#endif
// _IO and friends are only defined in kernel headers ...
#define OD_IOC(dir,type,number,size) (( dir << 30 ) | ( type << 8 ) | ( number ) | ( size << 16 ))
@@ -88,13 +91,13 @@
#define FB_BLANK_POWERDOWN 4
namespace Opie {
namespace Core {
namespace Internal {
-class Zaurus : public OAbstractMobileDevice
+class Zaurus : public OAbstractMobileDevice, public QWSServer::KeyboardFilter
{
protected:
virtual void init(const QString&);
virtual void initButtons();
public:
@@ -116,12 +119,13 @@ class Zaurus : public OAbstractMobileDevice
virtual Transformation rotation() const;
virtual ODirection direction() const;
protected:
virtual void buzzer( int snd );
+ virtual bool filter( int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat );
OLedState m_leds[1];
bool m_embedix;
};
struct z_button {