summaryrefslogtreecommitdiff
authoralwin <alwin>2004-08-01 10:33:38 (UTC)
committer alwin <alwin>2004-08-01 10:33:38 (UTC)
commitecd0e7c523c9f190eb2b8765ef2d629aa399d635 (patch) (unidiff)
tree1ac230cbfd75b94f7d1496dc16ccb1c9af1a81be
parent142d432ef9f8215636a81c358c828d4b6986a6ad (diff)
downloadopie-ecd0e7c523c9f190eb2b8765ef2d629aa399d635.zip
opie-ecd0e7c523c9f190eb2b8765ef2d629aa399d635.tar.gz
opie-ecd0e7c523c9f190eb2b8765ef2d629aa399d635.tar.bz2
switched keyboard filter to the new singleton class OKeyFilter from within
opiecore2 so we can better handle it.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/applets/zkbapplet/zkbwidget.cpp235
-rw-r--r--noncore/applets/zkbapplet/zkbwidget.h32
-rw-r--r--noncore/apps/keyz-cfg/zkb.cpp3
3 files changed, 140 insertions, 130 deletions
diff --git a/noncore/applets/zkbapplet/zkbwidget.cpp b/noncore/applets/zkbapplet/zkbwidget.cpp
index 38bfba9..8499500 100644
--- a/noncore/applets/zkbapplet/zkbwidget.cpp
+++ b/noncore/applets/zkbapplet/zkbwidget.cpp
@@ -1,161 +1,168 @@
1#include <opie2/otaskbarapplet.h> 1#include <opie2/otaskbarapplet.h>
2#include <opie2/okeyfilter.h>
2#include <qpe/qcopenvelope_qws.h> 3#include <qpe/qcopenvelope_qws.h>
3#include <qpe/applnk.h> 4#include <qpe/applnk.h>
4#include <qpe/qpeapplication.h> 5#include <qpe/qpeapplication.h>
5#include <qpe/resource.h> 6#include <qpe/resource.h>
6#include <stdio.h> 7#include <stdio.h>
7#include <unistd.h> 8#include <unistd.h>
8#include "zkbwidget.h" 9#include "zkbwidget.h"
9#include "zkbcfg.h" 10#include "zkbcfg.h"
10 11
11using namespace Opie::Ui; 12using namespace Opie::Ui;
12ZkbWidget::ZkbWidget(QWidget* parent):QLabel(parent),keymap(0),
13 disabled(Resource::loadPixmap("zkb-disabled")) {
14 13
15 labels = new QPopupMenu(); 14ZkbWidget::ZkbWidget(QWidget* parent)
16 connect(labels, SIGNAL(activated(int)), this, 15 :QLabel(parent),keymap(0),disabled(Resource::loadPixmap("zkb-disabled")) {
17 SLOT(labelChanged(int)));
18 16
19 loadKeymap(); 17 labels = new QPopupMenu();
18 connect(labels, SIGNAL(activated(int)), this,
19 SLOT(labelChanged(int)));
20 20
21 channel = new QCopChannel("QPE/zkb", this); 21 loadKeymap();
22 connect(channel, SIGNAL(received(const QCString&,const QByteArray&)), 22
23 this, SLOT(signalReceived(const QCString&,const QByteArray&))); 23 channel = new QCopChannel("QPE/zkb", this);
24 connect(channel, SIGNAL(received(const QCString&,const QByteArray&)),
25 this, SLOT(signalReceived(const QCString&,const QByteArray&)));
24 setFixedWidth ( AppLnk::smallIconSize() ); 26 setFixedWidth ( AppLnk::smallIconSize() );
25 setFixedHeight ( AppLnk::smallIconSize() ); 27 setFixedHeight ( AppLnk::smallIconSize() );
26} 28}
27 29
28ZkbWidget::~ZkbWidget() { 30ZkbWidget::~ZkbWidget()
31{
32 if (keymap != 0) {
33 delete keymap;
34 keymap = 0;
35 }
29} 36}
30 37
31int ZkbWidget::position() 38int ZkbWidget::position()
32{ 39{
33 return 8; 40 return 8;
34} 41}
35 42
36bool ZkbWidget::loadKeymap() { 43bool ZkbWidget::loadKeymap() {
37 ZkbConfig c(QPEApplication::qpeDir()+"/share/zkb"); 44 ZkbConfig c(QPEApplication::qpeDir()+"/share/zkb");
38 QFontMetrics fm(font()); 45 QFontMetrics fm(font());
39 46
40 if (keymap != 0) { 47 if (keymap != 0) {
41 delete keymap; 48 delete keymap;
42 keymap = 0; 49 keymap = 0;
43 } 50 }
44 51
45 Keymap* km = new Keymap(); 52 Keymap* km = new Keymap();
46 53
47 if (!c.load("zkb.xml", *km, "")) { 54 if (!c.load("zkb.xml", *km, "")) {
48 delete km; 55 delete km;
49 setPixmap(disabled); 56 setPixmap(disabled);
50 return false; 57 return false;
51 } 58 }
52 59
53 connect(km, SIGNAL(stateChanged(const QString&)), 60 connect(km, SIGNAL(stateChanged(const QString&)),
54 this, SLOT(stateChanged(const QString&))); 61 this, SLOT(stateChanged(const QString&)));
55 62
56 qwsServer->setKeyboardFilter(km); 63 Opie::Core::OKeyFilter::inst()->addHandler(km);
57 64
58 Keymap* oldkm = keymap; 65 Keymap* oldkm = keymap;
59 keymap = km; 66 keymap = km;
60 67
61 if (oldkm != 0) { 68 if (oldkm != 0) {
62 delete oldkm; 69 delete oldkm;
63 } 70 }
64 71
65 setText(keymap->getCurrentLabel()); 72 QString ltext = keymap->getCurrentLabel();
66 73 if (ltext.length()==0) ltext = "??";
67 labels->clear(); 74 setText(ltext);
68 QStringList l = keymap->listLabels(); 75
69 labels->insertItem(disabled, 0, 0); 76 labels->clear();
70 int n = 1; 77 QStringList l = keymap->listLabels();
71 w = 0; 78 labels->insertItem(disabled, 0, 0);
72 for(QStringList::Iterator it = l.begin(); it != l.end(); 79 int n = 1;
73 ++it, n++) { 80 w = 0;
74 81 for(QStringList::Iterator it = l.begin(); it != l.end();
75 // printf("label: %s\n", (const char*) (*it).utf8()); 82 ++it, n++) {
76 83
77 labels->insertItem(*it, n, n); 84// printf("label: %s\n", (const char*) (*it).utf8());
78 int lw = fm.width(*it); 85
79 if (lw > w) { 86 labels->insertItem(*it, n, n);
80 w = lw; 87 int lw = fm.width(*it);
81 } 88 if (lw > w) {
82 } 89 w = lw;
83 90 }
84 if (w == 0) { 91 }
85 hide(); 92
86 } else { 93 if (w == 0) {
87 show(); 94 hide();
88 } 95 } else {
89 return true; 96 show();
97 }
98 return true;
90} 99}
91 100
92QSize ZkbWidget::sizeHint() const { 101QSize ZkbWidget::sizeHint() const {
93 return QSize(AppLnk::smallIconSize(),AppLnk::smallIconSize()); 102 return QSize(AppLnk::smallIconSize(),AppLnk::smallIconSize());
94} 103}
95 104
96void ZkbWidget::stateChanged(const QString& s) { 105void ZkbWidget::stateChanged(const QString& s) {
97 //odebug << "stateChanged: " << s.utf8() << "\n" << oendl; 106// odebug << "stateChanged: " << s.utf8() << "\n" << oendl;
98 setText(s); 107 setText(s);
99} 108}
100 109
101void ZkbWidget::labelChanged(int id) { 110void ZkbWidget::labelChanged(int id) {
102 if (id == 0) { 111 if (id == 0) {
103 keymap->disable(); 112 keymap->disable();
104 setPixmap(disabled); 113 setPixmap(disabled);
105 return; 114 return;
106 } 115 }
107 116
108 keymap->enable(); 117 keymap->enable();
109 118
110 QStringList l = keymap->listLabels(); 119 QStringList l = keymap->listLabels();
111 QString lbl = l[id-1]; 120 QString lbl = l[id-1];
112 121
113 //printf("labelChanged: %s\n", (const char*) lbl.utf8()); 122// printf("labelChanged: %s\n", (const char*) lbl.utf8());
114 State* state = keymap->getStateByLabel(lbl); 123 State* state = keymap->getStateByLabel(lbl);
115 if (state != 0) { 124 if (state != 0) {
116 keymap->setCurrentState(state); 125 keymap->setCurrentState(state);
117 setText(lbl); 126 setText(lbl);
118 } 127 }
119} 128}
120 129
121void ZkbWidget::mouseReleaseEvent(QMouseEvent*) { 130void ZkbWidget::mouseReleaseEvent(QMouseEvent*) {
122 QSize sh = labels->sizeHint(); 131 QSize sh = labels->sizeHint();
123 QPoint p = mapToGlobal(QPoint((width()-sh.width())/2,-sh.height())); 132 QPoint p = mapToGlobal(QPoint((width()-sh.width())/2,-sh.height()));
124 labels->exec(p); 133 labels->exec(p);
125} 134}
126 135
127void ZkbWidget::signalReceived(const QCString& msg, const QByteArray& data) { 136void ZkbWidget::signalReceived(const QCString& msg, const QByteArray& data) {
128 QDataStream stream(data, IO_ReadOnly); 137 QDataStream stream(data, IO_ReadOnly);
129 138
130 if (msg == "enable()") { 139 if (msg == "enable()") {
131 keymap->enable(); 140 keymap->enable();
132 } else if (msg == "disable()") { 141 } else if (msg == "disable()") {
133 keymap->disable(); 142 keymap->disable();
134 } else if (msg == "reload()") { 143 } else if (msg == "reload()") {
135 QCopEnvelope("QPE/System", "busy()"); 144 QCopEnvelope("QPE/System", "busy()");
136 QTimer::singleShot(0, this, SLOT(reload())); 145 QTimer::singleShot(0, this, SLOT(reload()));
137 } else if (msg == "switch(QString)") { 146 } else if (msg == "switch(QString)") {
138 QString lbl; 147 QString lbl;
139 stream >> lbl; 148 stream >> lbl;
140 149
141 if (keymap != 0) { 150 if (keymap != 0) {
142 State* state = keymap->getStateByLabel(lbl); 151 State* state = keymap->getStateByLabel(lbl);
143 if (state != 0) { 152 if (state != 0) {
144 keymap->setCurrentState(state); 153 keymap->setCurrentState(state);
145 setText(lbl); 154 setText(lbl);
146 } 155 }
147 } 156 }
148 } else if (msg == "debug(QString)") { 157 } else if (msg == "debug(QString)") {
149 QString flag; 158 QString flag;
150 stream >> flag; 159 stream >> flag;
151 } 160 }
152} 161}
153 162
154void ZkbWidget::reload() { 163void ZkbWidget::reload() {
155 loadKeymap(); 164 loadKeymap();
156 QCopEnvelope("QPE/System", "notBusy()"); 165 QCopEnvelope("QPE/System", "notBusy()");
157} 166}
158 167
159EXPORT_OPIE_APPLET_v1( ZkbWidget ) 168EXPORT_OPIE_APPLET_v1( ZkbWidget )
160
161
diff --git a/noncore/applets/zkbapplet/zkbwidget.h b/noncore/applets/zkbapplet/zkbwidget.h
index 7c67794..9bce85a 100644
--- a/noncore/applets/zkbapplet/zkbwidget.h
+++ b/noncore/applets/zkbapplet/zkbwidget.h
@@ -1,39 +1,39 @@
1#ifndef ZKBWIDGET_H 1#ifndef ZKBWIDGET_H
2#define ZKBWIDGET_H 2#define ZKBWIDGET_H
3 3
4#include <qwidget.h> 4#include <qwidget.h>
5#include <qlabel.h> 5#include <qlabel.h>
6#include <qpopupmenu.h> 6#include <qpopupmenu.h>
7#include <qpixmap.h> 7#include <qpixmap.h>
8#include <qcopchannel_qws.h> 8#include <qcopchannel_qws.h>
9 9
10#include "zkb.h" 10#include "zkb.h"
11 11
12class ZkbWidget : public QLabel { 12class ZkbWidget : public QLabel {
13Q_OBJECT 13Q_OBJECT
14 14
15public: 15public:
16 ZkbWidget(QWidget* parent); 16 ZkbWidget(QWidget* parent);
17 ~ZkbWidget(); 17 ~ZkbWidget();
18 static int position(); 18 static int position();
19 19
20 QSize sizeHint() const; 20 QSize sizeHint() const;
21 21
22protected: 22protected:
23 QLabel* label; 23 QLabel* label;
24 Keymap* keymap; 24 Keymap* keymap;
25 QPopupMenu* labels; 25 QPopupMenu* labels;
26 QCopChannel* channel; 26 QCopChannel* channel;
27 int w, h; 27 int w, h;
28 QPixmap disabled; 28 QPixmap disabled;
29 29
30 bool loadKeymap(); 30 bool loadKeymap();
31 void mouseReleaseEvent(QMouseEvent*); 31 void mouseReleaseEvent(QMouseEvent*);
32 32
33protected slots: 33protected slots:
34 void stateChanged(const QString&); 34 void stateChanged(const QString&);
35 void labelChanged(int id); 35 void labelChanged(int id);
36 void signalReceived(const QCString& msg, const QByteArray& data); 36 void signalReceived(const QCString& msg, const QByteArray& data);
37 void reload(); 37 void reload();
38}; 38};
39#endif 39#endif
diff --git a/noncore/apps/keyz-cfg/zkb.cpp b/noncore/apps/keyz-cfg/zkb.cpp
index c9e1dc5..a357b88 100644
--- a/noncore/apps/keyz-cfg/zkb.cpp
+++ b/noncore/apps/keyz-cfg/zkb.cpp
@@ -1,100 +1,101 @@
1#include "zkb.h" 1#include "zkb.h"
2 2
3/* OPIE */ 3/* OPIE */
4#include <opie2/odebug.h> 4#include <opie2/odebug.h>
5#include <opie2/okeyfilter.h>
5 6
6#include <stdio.h> 7#include <stdio.h>
7 8
8// Implementation of Action class 9// Implementation of Action class
9Action::Action():state(0), keycode(0), unicode(0), flags(0) { 10Action::Action():state(0), keycode(0), unicode(0), flags(0) {
10} 11}
11 12
12Action::Action(State* s, ushort kc, ushort uni, int f): 13Action::Action(State* s, ushort kc, ushort uni, int f):
13 state(s), keycode(kc), unicode(uni), flags(f) { 14 state(s), keycode(kc), unicode(uni), flags(f) {
14} 15}
15 16
16Action::~Action() { 17Action::~Action() {
17} 18}
18 19
19State* Action::getState() const { 20State* Action::getState() const {
20 return state; 21 return state;
21} 22}
22 23
23void Action::setState(State* s) { 24void Action::setState(State* s) {
24 state = s; 25 state = s;
25 setDefined(true); 26 setDefined(true);
26} 27}
27 28
28bool Action::hasEvent() const { 29bool Action::hasEvent() const {
29 return flags & Event; 30 return flags & Event;
30} 31}
31 32
32void Action::setEvent(bool e) { 33void Action::setEvent(bool e) {
33 flags = (flags & ~Event) | ((e) ? Event : 0); 34 flags = (flags & ~Event) | ((e) ? Event : 0);
34 35
35 if (e) { 36 if (e) {
36 setDefined(true); 37 setDefined(true);
37 } else { 38 } else {
38 if (state == 0) { 39 if (state == 0) {
39 setDefined(false); 40 setDefined(false);
40 } 41 }
41 } 42 }
42} 43}
43 44
44bool Action::isDefined() const { 45bool Action::isDefined() const {
45 return flags & Defined; 46 return flags & Defined;
46} 47}
47 48
48void Action::setDefined(bool d) { 49void Action::setDefined(bool d) {
49 flags = (flags & ~Defined) | ((d) ? Defined : 0); 50 flags = (flags & ~Defined) | ((d) ? Defined : 0);
50} 51}
51 52
52int Action::getKeycode() const { 53int Action::getKeycode() const {
53 return keycode; 54 return keycode;
54} 55}
55 56
56void Action::setKeycode(int c) { 57void Action::setKeycode(int c) {
57 keycode = (ushort) c; 58 keycode = (ushort) c;
58 setEvent(true); 59 setEvent(true);
59} 60}
60 61
61int Action::getUnicode() const { 62int Action::getUnicode() const {
62 return unicode; 63 return unicode;
63} 64}
64 65
65void Action::setUnicode(int u) { 66void Action::setUnicode(int u) {
66 unicode = (ushort) u; 67 unicode = (ushort) u;
67 setEvent(true); 68 setEvent(true);
68} 69}
69 70
70int Action::getModifiers() const { 71int Action::getModifiers() const {
71 int ret = 0; 72 int ret = 0;
72 if (flags & Shift_Mod) { 73 if (flags & Shift_Mod) {
73 ret |= Qt::ShiftButton; 74 ret |= Qt::ShiftButton;
74 } 75 }
75 76
76 if (flags & Ctrl_Mod) { 77 if (flags & Ctrl_Mod) {
77 ret |= Qt::ControlButton; 78 ret |= Qt::ControlButton;
78 } 79 }
79 80
80 if (flags & Alt_Mod) { 81 if (flags & Alt_Mod) {
81 ret |= Qt::AltButton; 82 ret |= Qt::AltButton;
82 } 83 }
83 84
84 if (flags & Keypad_Mod) { 85 if (flags & Keypad_Mod) {
85 ret |= Qt::Keypad; 86 ret |= Qt::Keypad;
86 } 87 }
87 88
88 return ret; 89 return ret;
89} 90}
90 91
91void Action::setModifiers(int m) { 92void Action::setModifiers(int m) {
92 int n = 0; 93 int n = 0;
93 94
94 if (m & Qt::ShiftButton) { 95 if (m & Qt::ShiftButton) {
95 n |= Shift_Mod; 96 n |= Shift_Mod;
96 } 97 }
97 98
98 if (m & Qt::ControlButton) { 99 if (m & Qt::ControlButton) {
99 n |= Ctrl_Mod; 100 n |= Ctrl_Mod;
100 } 101 }
@@ -153,192 +154,194 @@ const short State::x2[] = { /* from 0x1000 to 0x1057*/
153 33, 35, 34, -1, 36, 27, -1, -1, /* 0x1020 - 0x1027 */ 154 33, 35, 34, -1, 36, 27, -1, -1, /* 0x1020 - 0x1027 */
154 -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1028 - 0x102f */ 155 -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1028 - 0x102f */
155 -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1030 - 0x1037 */ 156 -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1030 - 0x1037 */
156 37, 38, 40, 39, 41, -1, -1, -1, /* 0x1038 - 0x103f */ 157 37, 38, 40, 39, 41, -1, -1, -1, /* 0x1038 - 0x103f */
157 -1, -1, -1, -1, -1, 35, -1, -1, /* 0x1040 - 0x1047 */ 158 -1, -1, -1, -1, -1, 35, -1, -1, /* 0x1040 - 0x1047 */
158 -1, -1, -1, -1, -1, 48, -1, -1, /* 0x1048 - 0x104f */ 159 -1, -1, -1, -1, -1, 48, -1, -1, /* 0x1048 - 0x104f */
159 43, 49, 50, -1, -1, -1, -1, -1, /* 0x1050 - 0x1057 */ 160 43, 49, 50, -1, -1, -1, -1, -1, /* 0x1050 - 0x1057 */
160}; 161};
161 162
162State::State(State* p):parent(p), keys(0) { 163State::State(State* p):parent(p), keys(0) {
163 keys = new Action[Key_Max * 2 + 1]; 164 keys = new Action[Key_Max * 2 + 1];
164} 165}
165 166
166State::State(const State& s) { 167State::State(const State& s) {
167 parent = s.parent; 168 parent = s.parent;
168 keys = new Action[Key_Max * 2 + 1]; 169 keys = new Action[Key_Max * 2 + 1];
169 memcpy(keys, s.keys, sizeof(Action) * (Key_Max * 2 + 1)); 170 memcpy(keys, s.keys, sizeof(Action) * (Key_Max * 2 + 1));
170} 171}
171 172
172State::~State() { 173State::~State() {
173 if (keys!=0) { 174 if (keys!=0) {
174 delete [] keys; 175 delete [] keys;
175 } 176 }
176} 177}
177 178
178Action* State::get(int keycode, bool pressed, bool follow) const { 179Action* State::get(int keycode, bool pressed, bool follow) const {
179 Action* ret = 0; 180 Action* ret = 0;
180 int n = translateKeycode(keycode); 181 int n = translateKeycode(keycode);
181 182
182 if (n != -1 && keys != 0) { 183 if (n != -1 && keys != 0) {
183 if (pressed) { 184 if (pressed) {
184 n += Key_Max; 185 n += Key_Max;
185 } 186 }
186 ret = &keys[n]; 187 ret = &keys[n];
187 } 188 }
188 189
189 if (ret==0 || !ret->isDefined()) { 190 if (ret==0 || !ret->isDefined()) {
190 if (follow && parent!=0) { 191 if (follow && parent!=0) {
191 ret = parent->get(keycode, pressed, follow); 192 ret = parent->get(keycode, pressed, follow);
192 } 193 }
193 } 194 }
194 195
195 return ret; 196 return ret;
196} 197}
197 198
198bool State::set(int keycode, bool pressed, Action& action) { 199bool State::set(int keycode, bool pressed, Action& action) {
199 int n = translateKeycode(keycode); 200 int n = translateKeycode(keycode);
200 201
201 if (n==-1 || keys==0) { 202 if (n==-1 || keys==0) {
202 return false; 203 return false;
203 } 204 }
204 205
205 if (pressed) { 206 if (pressed) {
206 n += Key_Max + 1; 207 n += Key_Max + 1;
207 } 208 }
208 209
209 keys[n] = action; 210 keys[n] = action;
210 return true; 211 return true;
211} 212}
212 213
213State* State::getParent() const { 214State* State::getParent() const {
214 return parent; 215 return parent;
215} 216}
216 217
217void State::setParent(State* s) { 218void State::setParent(State* s) {
218 parent = s; 219 parent = s;
219} 220}
220 221
221int State::translateKeycode(int keycode) const { 222int State::translateKeycode(int keycode) const {
222 if (keycode < 0x20) { 223 if (keycode < 0x20) {
223 return -1; 224 return -1;
224 } 225 }
225 226
226 if (keycode < 0x80) { 227 if (keycode < 0x80) {
227 return x1[keycode - 0x20]; 228 return x1[keycode - 0x20];
228 } 229 }
229 230
230 if (keycode < 0x1000) { 231 if (keycode < 0x1000) {
231 return -1; 232 return -1;
232 } 233 }
233 234
234 if (keycode < 0x1057) { 235 if (keycode < 0x1057) {
235 return x2[keycode - 0x1000]; 236 return x2[keycode - 0x1000];
236 } 237 }
237 238
238 return -1; 239 return -1;
239} 240}
240 241
241// Implementation of Keymap class 242// Implementation of Keymap class
242Keymap::Keymap():enabled(true), currentState(0), autoRepeatAction(0), repeater(this) { 243Keymap::Keymap():enabled(true), currentState(0), autoRepeatAction(0), repeater(this) {
243 repeatDelay=400; 244 repeatDelay=400;
244 repeatPeriod=80; 245 repeatPeriod=80;
245 connect(&repeater, SIGNAL(timeout()), this, SLOT(autoRepeat())); 246 connect(&repeater, SIGNAL(timeout()), this, SLOT(autoRepeat()));
246} 247}
247 248
248Keymap::~Keymap() { 249Keymap::~Keymap() {
250 odebug << "removing keyboard filter for zkb"<<oendl;
251 Opie::Core::OKeyFilter::inst()->remHandler(this);
249 QMap<QString, State*>::Iterator it; 252 QMap<QString, State*>::Iterator it;
250 for(it = states.begin(); it != states.end(); ++it) { 253 for(it = states.begin(); it != states.end(); ++it) {
251 delete it.data(); 254 delete it.data();
252 } 255 }
253 states.clear(); 256 states.clear();
254} 257}
255 258
256bool Keymap::filter(int unicode, int keycode, int modifiers, 259bool Keymap::filter(int unicode, int keycode, int modifiers,
257 bool isPress, bool autoRepeat) { 260 bool isPress, bool autoRepeat) {
258 261
259 odebug << "filter: >>> unicode=" << unicode << ", keycode=" << keycode 262 odebug << "filter: >>> unicode=" << unicode << ", keycode=" << keycode
260 << ", modifiers=" << modifiers << ", ispressed=" << isPress << oendl; 263 << ", modifiers=" << modifiers << ", ispressed=" << isPress << oendl;
261 264
262 if (!enabled) { 265 if (!enabled) {
263 return false; 266 return false;
264 } 267 }
265 268
266 // the second check is workaround to make suspend work if 269 // the second check is workaround to make suspend work if
267 // the user pressed it right after he did resume. for some 270 // the user pressed it right after he did resume. for some
268 // reason the event sent by qt has autoRepeat true in this 271 // reason the event sent by qt has autoRepeat true in this
269 // case 272 // case
270 if (autoRepeat && keycode != 4177) { 273 if (autoRepeat && keycode != 4177) {
271 return true; 274 return true;
272 } 275 }
273 276
274 (void) unicode; (void) modifiers; 277 (void) unicode; (void) modifiers;
275 278
276 Action* action = currentState->get(keycode, isPress, true); 279 Action* action = currentState->get(keycode, isPress, true);
277 if (action==0 || !action->isDefined()) { 280 if (action==0 || !action->isDefined()) {
278 return true; 281 return true;
279 } 282 }
280 283
281 if (action->hasEvent()) { 284 if (action->hasEvent()) {
282 odebug << "filter:<<< unicode=" << action->getUnicode() << ", keycode=" << action->getKeycode() 285 odebug << "filter:<<< unicode=" << action->getUnicode() << ", keycode=" << action->getKeycode()
283 << ", modifiers=" << action->getModifiers() << ", ispressed=" << action->isPressed() << oendl; 286 << ", modifiers=" << action->getModifiers() << ", ispressed=" << action->isPressed() << oendl;
284 287
285 QWSServer::sendKeyEvent(action->getUnicode(), 288 QWSServer::sendKeyEvent(action->getUnicode(),
286 action->getKeycode(), action->getModifiers(), 289 action->getKeycode(), action->getModifiers(),
287 action->isPressed(), false); 290 action->isPressed(), false);
288 } 291 }
289 292
290 if (action->isAutorepeat()) { 293 if (action->isAutorepeat()) {
291 autoRepeatAction = action; 294 autoRepeatAction = action;
292 repeater.start(repeatDelay, TRUE); 295 repeater.start(repeatDelay, TRUE);
293 } else { 296 } else {
294 autoRepeatAction = 0; 297 autoRepeatAction = 0;
295 } 298 }
296 299
297 State* nstate = action->getState(); 300 State* nstate = action->getState();
298 if (nstate != 0) { 301 if (nstate != 0) {
299 setCurrentState(nstate); 302 setCurrentState(nstate);
300 QString lbl = getCurrentLabel(); 303 QString lbl = getCurrentLabel();
301 if (!lbl.isEmpty()) { 304 if (!lbl.isEmpty()) {
302 emit stateChanged(lbl); 305 emit stateChanged(lbl);
303 } 306 }
304 } 307 }
305 308
306 309
307 return true; 310 return true;
308} 311}
309 312
310void Keymap::enable() { 313void Keymap::enable() {
311 enabled = true; 314 enabled = true;
312} 315}
313 316
314void Keymap::disable() { 317void Keymap::disable() {
315 enabled = false; 318 enabled = false;
316} 319}
317 320
318QStringList Keymap::listStates() { 321QStringList Keymap::listStates() {
319 QStringList ret; 322 QStringList ret;
320 323
321 QMap<QString, State*>::Iterator it; 324 QMap<QString, State*>::Iterator it;
322 for(it = states.begin(); it != states.end(); ++it) { 325 for(it = states.begin(); it != states.end(); ++it) {
323 ret.append(it.key()); 326 ret.append(it.key());
324 } 327 }
325 328
326 return ret; 329 return ret;
327} 330}
328 331
329State* Keymap::getStateByName(const QString& name) { 332State* Keymap::getStateByName(const QString& name) {
330 QMap<QString, State*>::Iterator it = states.find(name); 333 QMap<QString, State*>::Iterator it = states.find(name);
331 334
332 if (it == states.end()) { 335 if (it == states.end()) {
333 return 0; 336 return 0;
334 } 337 }
335 338
336 return it.data(); 339 return it.data();
337} 340}
338 341
339QStringList Keymap::listLabels() { 342QStringList Keymap::listLabels() {
340 QStringList ret; 343 QStringList ret;
341 344
342 for(uint i = 0; i < labelList.count(); i++) { 345 for(uint i = 0; i < labelList.count(); i++) {
343 ret.append(*labelList.at(i)); 346 ret.append(*labelList.at(i));
344 } 347 }