33 #include <nyx/nyx_client.h>
44 #if defined(HAS_HIDLIB)
47 #include "lunaservice.h"
49 #include <qsocketnotifier.h>
52 #if defined(USE_KEY_FILTER) || defined(USE_MOUSE_FILTER)
53 #include <QApplication>
55 #endif // USE_KEY_FILTER || USE_MOUSE_FILTER
57 #if defined(USE_KEY_FILTER)
58 #include <SysMgrDeviceKeydefs.h>
60 #if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
67 #endif // USE_KEY_FILTER
69 #if defined(USE_MOUSE_FILTER)
70 #include <QMouseEvent>
71 #endif // USE_MOUSE_FILTER
73 #define KEYBOARD_TOKEN "com.palm.properties.KEYoBRD"
74 #define KEYBOARD_QWERTY "z"
75 #define KEYBOARD_AZERTY "w"
76 #define KEYBOARD_QWERTZ "y"
78 #define HIDD_LS_KEYPAD_URI "palm://com.palm.hidd/HidKeypad/"
79 #define HIDD_RINGER_URI HIDD_LS_KEYPAD_URI"RingerState"
80 #define HIDD_SLIDER_URI HIDD_LS_KEYPAD_URI"SliderState"
81 #define HIDD_HEADSET_URI HIDD_LS_KEYPAD_URI"HeadsetState"
82 #define HIDD_HEADSET_MIC_URI HIDD_LS_KEYPAD_URI"HeadsetMicState"
83 #define HIDD_GET_STATE "{\"mode\":\"get\"}"
85 #define HIDD_LS_ACCELEROMETER_URI "palm://com.palm.hidd/HidAccelerometer/"
86 #define HIDD_ACCELEROMETER_RANGE_URI HIDD_LS_ACCELEROMETER_URI"Range"
88 #define HIDD_ACCELEROMETER_MODE HIDD_LS_ACCELEROMETER_URI"Mode"
89 #define HIDD_ACCELEROMETER_INTERRUPT_MODE HIDD_LS_ACCELEROMETER_URI"InterruptMode"
90 #define HIDD_ACCELEROMETER_POLL_INTERVAL HIDD_LS_ACCELEROMETER_URI"PollInterval"
91 #define HIDD_ACCELEROMETER_TILT_TIMER HIDD_LS_ACCELEROMETER_URI"TiltTimer"
92 #define HIDD_ACCELEROMETER_SET_DEFAULT_TILT_TIMER "{\"mode\":\"set\",\"value\":6}"
93 #define HIDD_ACCELEROMETER_SET_DEFAULT_INTERVAL "{\"mode\":\"set\",\"value\":2000}"
94 #define HIDD_ACCELEROMETER_SET_DEFAULT_MODE "{\"mode\":\"set\",\"value\":\"all\"}"
95 #define HIDD_ACCELEROMETER_SET_POLL "{\"mode\":\"set\",\"value\":\"poll\"}"
98 #define REPEAT_DELAY 250
99 #define REPEAT_PERIOD 33
104 #define SW_RINGER 0x5
105 #define SW_SLIDER 0x6
106 #define SW_OPTICAL 0x7
107 #define ABS_ORIENTATION 0x30
110 #define EV_GESTURE 0x06
111 #define EV_FINGERID 0x07
114 #if defined(USE_MOUSE_FILTER)
115 class HostArmQtMouseFilter :
public QObject
122 bool handled =
false;
123 if(event->type() == QEvent::MouseButtonRelease ||
124 event->type() == QEvent::MouseButtonPress ||
125 event->type() == QEvent::MouseMove)
127 QMouseEvent *mouseEvent =
static_cast<QMouseEvent *
>(event);
128 Qt::KeyboardModifiers modifiers = mouseEvent->modifiers();
129 if(modifiers & Qt::ControlModifier)
131 modifiers &= ~Qt::ControlModifier;
132 modifiers |= Qt::AltModifier;
133 mouseEvent->setModifiers(modifiers);
135 if(event->type() == QEvent::MouseButtonRelease && mouseEvent->button() == Qt::LeftButton)
137 QWidget *grabber = QWidget::mouseGrabber();
140 grabber->releaseMouse();
147 #endif // USE_MOUSE_FILTER
149 #if defined(USE_KEY_FILTER)
150 class HostArmQtKeyFilter :
public QObject
157 bool handled =
false;
158 if( (event->type() == QEvent::KeyPress) || (event->type() == QEvent::KeyRelease) )
160 int keyToRemapTo = 0;
161 QKeyEvent* keyEvent =
static_cast<QKeyEvent*
>(event);
163 switch(keyEvent->key())
166 keyToRemapTo = KEYS::Key_CoreNavi_Home;
169 keyToRemapTo = KEYS::Key_CoreNavi_Back;
172 keyToRemapTo = KEYS::Key_CoreNavi_Launcher;
176 #if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
177 keyToRemapTo = KEYS::Key_Power;
179 keyToRemapTo = KEYS::Key_HardPower;
183 if(keyToRemapTo > 0) {
185 window = QApplication::focusWidget();
188 QApplication::postEvent(window,
new QKeyEvent(event->type(), keyToRemapTo, 0));
193 else if(event->type() == QEvent::MouseButtonRelease)
195 #if defined(USE_MOUSE_FILTER)
196 QMouseEvent *mouseEvent =
static_cast<QMouseEvent *
>(event);
197 if(mouseEvent->button() == Qt::LeftButton)
199 QWidget *grabber = QWidget::mouseGrabber();
202 grabber->releaseMouse();
205 #endif // USE_MOUSE_FILTER
210 #endif // USE_KEY_FILTER
248 virtual void init(
int w,
int h);
256 #if defined(HAS_HIDLIB)
271 virtual void getInitialSwitchStates(
void);
288 int readHidEvents(
int fd,
struct input_event* eventBuf,
int bufSize);
335 #if defined(USE_KEY_FILTER)
336 HostArmQtKeyFilter* m_keyFilter;
337 #endif // USE_KEY_FILTER
338 #if defined(USE_MOUSE_FILTER)
339 HostArmQtMouseFilter* m_mouseFilter;
396 #if defined(HAS_HIDLIB)
407 HidHardwareRevision_t m_hwRev;
419 HidHardwarePlatform_t m_hwPlatform;
648 #if defined(HAS_HIDLIB)
666 static bool switchStateCallback(LSHandle* handle, LSMessage* msg,
void* data);