summaryrefslogtreecommitdiff
path: root/inputmethods/kjumpx
authorsimon <simon>2002-11-22 10:56:30 (UTC)
committer simon <simon>2002-11-22 10:56:30 (UTC)
commit480284c491e26427c630131a25e56f9ed1d129b2 (patch) (unidiff)
tree3bdd60afe34e8c466fbea92dcf89fcab381b110d /inputmethods/kjumpx
parent772c1321e4e95a415b9de700c3474f81f98b5482 (diff)
downloadopie-480284c491e26427c630131a25e56f9ed1d129b2.zip
opie-480284c491e26427c630131a25e56f9ed1d129b2.tar.gz
opie-480284c491e26427c630131a25e56f9ed1d129b2.tar.bz2
- properly namespace the input methods. fixes symbols clashes at run-time
with names like 'Keyboard' or 'KeyboardConfig' . the qcom interface objects are in an anonymous namespace now and the actual keyboard implementations are in Dvorak, JumpX, etc. namespaces. What's left is to solve the symbol clashes of the multiply compiled pickboard classes. I'll leave that one (as part of the patch posted yesterday) for another day for review. This part (namespacing) sounds like a safe bet to me though, so comitting now. (got no comments anyway)
Diffstat (limited to 'inputmethods/kjumpx') (more/less context) (ignore whitespace changes)
-rw-r--r--inputmethods/kjumpx/keyboard.cpp1
-rw-r--r--inputmethods/kjumpx/keyboard.h5
-rw-r--r--inputmethods/kjumpx/keyboardimpl.cpp4
-rw-r--r--inputmethods/kjumpx/keyboardimpl.h12
4 files changed, 18 insertions, 4 deletions
diff --git a/inputmethods/kjumpx/keyboard.cpp b/inputmethods/kjumpx/keyboard.cpp
index 3af6a78..dc44805 100644
--- a/inputmethods/kjumpx/keyboard.cpp
+++ b/inputmethods/kjumpx/keyboard.cpp
@@ -1,855 +1,856 @@
1/**************************************************************************************94x78** 1/**************************************************************************************94x78**
2** 2**
3** This file may be distributed and/or modified under the terms of the 3** This file may be distributed and/or modified under the terms of the
4** GNU General Public License version 2 as published by the Free Software 4** GNU General Public License version 2 as published by the Free Software
5** Foundation and appearing in the file LICENSE.GPL included in the 5** Foundation and appearing in the file LICENSE.GPL included in the
6** packaging of this file. 6** packaging of this file.
7** 7**
8** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 8** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
9** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 9** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
10** 10**
11*********************************************************************************************/ 11*********************************************************************************************/
12#include "keyboard.h" 12#include "keyboard.h"
13 13
14#include <qpe/resource.h> 14#include <qpe/resource.h>
15 15
16//#include <iostream.h> 16//#include <iostream.h>
17 17
18 18
19static const int autorepeatDelaytime = 500; // ms 19static const int autorepeatDelaytime = 500; // ms
20static const int autorepeatRate = 20; // chars per second 20static const int autorepeatRate = 20; // chars per second
21 21
22static const int mod1x1 = 0; 22static const int mod1x1 = 0;
23static const int mod1x2 = 23; 23static const int mod1x2 = 23;
24static const int mod1w = mod1x2 - mod1x1; 24static const int mod1w = mod1x2 - mod1x1;
25 25
26static const int letterx1 = 27; 26static const int letterx1 = 27;
27static const int letterx2 = 129; 27static const int letterx2 = 129;
28static const int letterw = 17; 28static const int letterw = 17;
29static const int letterh = 14; 29static const int letterh = 14;
30 30
31static const int num1x1 = 130; 31static const int num1x1 = 130;
32static const int num1x2 = 137; 32static const int num1x2 = 137;
33static const int num1w = num1x2 - num1x1; 33static const int num1w = num1x2 - num1x1;
34 34
35static const int specialx1 = 138; 35static const int specialx1 = 138;
36static const int specialx2 = 170; 36static const int specialx2 = 170;
37static const int specialw = 16; 37static const int specialw = 16;
38 38
39static const int num2x1 = 171; 39static const int num2x1 = 171;
40static const int num2x2 = 178; 40static const int num2x2 = 178;
41static const int num2w = num2x2 - num2x1; 41static const int num2w = num2x2 - num2x1;
42 42
43static const int mod2x1 = 179; 43static const int mod2x1 = 179;
44static const int mod2x2 = 203; 44static const int mod2x2 = 203;
45static const int mod2w = mod2x2 - mod2x1; 45static const int mod2w = mod2x2 - mod2x1;
46 46
47static const int cursorx1 = 207; 47static const int cursorx1 = 207;
48static const int cursorw = 16; 48static const int cursorw = 16;
49 49
50static const int myParenID = -10; 50static const int myParenID = -10;
51 51
52 52
53typedef struct mapElement 53typedef struct mapElement
54{ 54{
55 int qcode; 55 int qcode;
56 ushort unicode; 56 ushort unicode;
57}; 57};
58 58
59static const mapElement mod1Map[] = { 59static const mapElement mod1Map[] = {
60 { Qt::Key_Escape, 27 }, 60 { Qt::Key_Escape, 27 },
61 { Qt::Key_Tab, 9 }, 61 { Qt::Key_Tab, 9 },
62 { Qt::Key_Return, 13 }, 62 { Qt::Key_Return, 13 },
63 { Qt::Key_Alt, 0 }, 63 { Qt::Key_Alt, 0 },
64 { Qt::Key_Control, 0 }, 64 { Qt::Key_Control, 0 },
65}; 65};
66 66
67static const uchar *const letterMap[] = { 67static const uchar *const letterMap[] = {
68 (const uchar *const)"zvchwk", 68 (const uchar *const)"zvchwk",
69 (const uchar *const)"fitaly", 69 (const uchar *const)"fitaly",
70 (const uchar *const)" ne ", 70 (const uchar *const)" ne ",
71 (const uchar *const)"gdorsb", 71 (const uchar *const)"gdorsb",
72 (const uchar *const)"qjumpx", 72 (const uchar *const)"qjumpx",
73}; 73};
74 74
75static const ushort kletterMap[][6] = { 75static const ushort kletterMap[][6] = {
76 { 0x110c, 0x1112, 0x1109, 0x116d, 0x1167, 0x1163 }, 76 { 0x110c, 0x1112, 0x1109, 0x116d, 0x1167, 0x1163 },
77 { 0x110f, 0x1105, 0x1100, 0x1161, 0x1175, 0x1162 }, 77 { 0x110f, 0x1105, 0x1100, 0x1161, 0x1175, 0x1162 },
78 { ' ', ' ', 0x110b, 0x1165, ' ', ' ' }, 78 { ' ', ' ', 0x110b, 0x1165, ' ', ' ' },
79 { 0x1110, 0x1103, 0x1102, 0x1169, 0x1173, 0x1166 }, 79 { 0x1110, 0x1103, 0x1102, 0x1169, 0x1173, 0x1166 },
80 { 0x110e, 0x1107, 0x1106, 0x1111, 0x116e, 0x1172 }, 80 { 0x110e, 0x1107, 0x1106, 0x1111, 0x116e, 0x1172 },
81}; 81};
82 82
83static const uchar *const letterMapShift[] = { 83static const uchar *const letterMapShift[] = {
84 (const uchar *const)"ZVCHWK", 84 (const uchar *const)"ZVCHWK",
85 (const uchar *const)"FITALY", 85 (const uchar *const)"FITALY",
86 (const uchar *const)" NE ", 86 (const uchar *const)" NE ",
87 (const uchar *const)"GDORSB", 87 (const uchar *const)"GDORSB",
88 (const uchar *const)"QJUMPX", 88 (const uchar *const)"QJUMPX",
89}; 89};
90 90
91static const ushort kletterMapShift[][6] = { 91static const ushort kletterMapShift[][6] = {
92 { 0x110d, 0x1112, 0x110a, 0x116d, 0x1167, 0x1163 }, 92 { 0x110d, 0x1112, 0x110a, 0x116d, 0x1167, 0x1163 },
93 { 0x110f, 0x1105, 0x1101, 0x1161, 0x1175, 0x1164 }, 93 { 0x110f, 0x1105, 0x1101, 0x1161, 0x1175, 0x1164 },
94 { ' ', ' ', 0x110b, 0x1165, ' ', ' ' }, 94 { ' ', ' ', 0x110b, 0x1165, ' ', ' ' },
95 { 0x1110, 0x1104, 0x1102, 0x1169, 0x1173, 0x1168 }, 95 { 0x1110, 0x1104, 0x1102, 0x1169, 0x1173, 0x1168 },
96 { 0x110e, 0x1108, 0x1106, 0x1111, 0x116e, 0x1172 }, 96 { 0x110e, 0x1108, 0x1106, 0x1111, 0x116e, 0x1172 },
97}; 97};
98 98
99static const uchar *const num1Map = (const uchar *const)"12345"; 99static const uchar *const num1Map = (const uchar *const)"12345";
100 100
101static const uchar *const specialMap[] = { 101static const uchar *const specialMap[] = {
102 (const uchar *const)"-+", 102 (const uchar *const)"-+",
103 (const uchar *const)"*!", 103 (const uchar *const)"*!",
104 (const uchar *const)",'", 104 (const uchar *const)",'",
105 (const uchar *const)".%", 105 (const uchar *const)".%",
106 (const uchar *const)"/$", 106 (const uchar *const)"/$",
107}; 107};
108 108
109static const uchar *const specialMapShift[] = { 109static const uchar *const specialMapShift[] = {
110 (const uchar *const)"_=", 110 (const uchar *const)"_=",
111 (const uchar *const)"#?", 111 (const uchar *const)"#?",
112 (const uchar *const)";\"", 112 (const uchar *const)";\"",
113 (const uchar *const)":|", 113 (const uchar *const)":|",
114 (const uchar *const)"\\&", 114 (const uchar *const)"\\&",
115}; 115};
116 116
117static const uchar *const specialMapParen[] = { 117static const uchar *const specialMapParen[] = {
118 (const uchar *const)"()", 118 (const uchar *const)"()",
119 (const uchar *const)"[]", 119 (const uchar *const)"[]",
120 (const uchar *const)"{}", 120 (const uchar *const)"{}",
121 (const uchar *const)"<>", 121 (const uchar *const)"<>",
122 (const uchar *const)"@~", 122 (const uchar *const)"@~",
123}; 123};
124 124
125static const uchar *const num2Map = (const uchar *const)"67890"; 125static const uchar *const num2Map = (const uchar *const)"67890";
126 126
127static const mapElement mod2Map[] = { 127static const mapElement mod2Map[] = {
128 { Qt::Key_Backspace, 8 }, 128 { Qt::Key_Backspace, 8 },
129 { Qt::Key_Delete, 0 }, 129 { Qt::Key_Delete, 0 },
130 { Qt::Key_Return, 13 }, 130 { Qt::Key_Return, 13 },
131 { Qt::Key_Shift, 0 }, 131 { Qt::Key_Shift, 0 },
132 { myParenID, 0 }, 132 { myParenID, 0 },
133}; 133};
134 134
135static const int cursorMap[][2] = { 135static const int cursorMap[][2] = {
136 { Qt::Key_Home, Qt::Key_PageUp }, 136 { Qt::Key_Home, Qt::Key_PageUp },
137 { Qt::Key_End, Qt::Key_PageDown }, 137 { Qt::Key_End, Qt::Key_PageDown },
138 { Qt::Key_Up, Qt::Key_Up }, 138 { Qt::Key_Up, Qt::Key_Up },
139 { Qt::Key_Left, Qt::Key_Right }, 139 { Qt::Key_Left, Qt::Key_Right },
140 { Qt::Key_Down, Qt::Key_Down }, 140 { Qt::Key_Down, Qt::Key_Down },
141}; 141};
142 142
143using namespace KJumpX;
143 144
144Keyboard::Keyboard(QWidget* parent, const char* name, WFlags f) : 145Keyboard::Keyboard(QWidget* parent, const char* name, WFlags f) :
145 QFrame(parent, name, f), 146 QFrame(parent, name, f),
146 shift(0), paren(0), ctrl(0), alt(0), lang(1), lastKey(0), 147 shift(0), paren(0), ctrl(0), alt(0), lang(1), lastKey(0),
147 pressedKeyUnicode(0), pressedKeyQcode(0), pressedMod(0), 148 pressedKeyUnicode(0), pressedKeyQcode(0), pressedMod(0),
148 isnoncont(false), 149 isnoncont(false),
149 slideKeyUnicodeH(0), slideKeyQcodeH(0), slideKeyUnicodeV(0), slideKeyQcodeV(0), 150 slideKeyUnicodeH(0), slideKeyQcodeH(0), slideKeyUnicodeV(0), slideKeyQcodeV(0),
150 enableMouseTracking(false), slidePix(NULL), slidePixH(NULL), slidePixV(NULL), 151 enableMouseTracking(false), slidePix(NULL), slidePixH(NULL), slidePixV(NULL),
151 releasedPix(NULL), pressedPix(NULL) 152 releasedPix(NULL), pressedPix(NULL)
152{ 153{
153 //setPalette(QPalette(QColor(240,240,230))); // Beige! 154 //setPalette(QPalette(QColor(240,240,230))); // Beige!
154 155
155 releasedPlain = releasedShift = releasedParen = Resource::loadPixmap("kjumpx/released"); 156 releasedPlain = releasedShift = releasedParen = Resource::loadPixmap("kjumpx/released");
156 pressedPlain = pressedShift = pressedParen = Resource::loadPixmap("kjumpx/pressed"); 157 pressedPlain = pressedShift = pressedParen = Resource::loadPixmap("kjumpx/pressed");
157 pressedDigit = Resource::loadPixmap("kjumpx/pressed"); 158 pressedDigit = Resource::loadPixmap("kjumpx/pressed");
158 159
159 QPixmap tmp; 160 QPixmap tmp;
160 161
161 tmp = Resource::loadPixmap("kjumpx/releasedShift"); 162 tmp = Resource::loadPixmap("kjumpx/releasedShift");
162 bitBlt(&releasedShift, letterx1, 0, &tmp); 163 bitBlt(&releasedShift, letterx1, 0, &tmp);
163 164
164 tmp = Resource::loadPixmap("kjumpx/releasedParen"); 165 tmp = Resource::loadPixmap("kjumpx/releasedParen");
165 bitBlt(&releasedParen, specialx1, 0, &tmp); 166 bitBlt(&releasedParen, specialx1, 0, &tmp);
166 167
167 tmp = Resource::loadPixmap("kjumpx/pressedShift"); 168 tmp = Resource::loadPixmap("kjumpx/pressedShift");
168 bitBlt(&pressedShift, letterx1, 0, &tmp); 169 bitBlt(&pressedShift, letterx1, 0, &tmp);
169 170
170 tmp = Resource::loadPixmap("kjumpx/pressedParen"); 171 tmp = Resource::loadPixmap("kjumpx/pressedParen");
171 bitBlt(&pressedParen, specialx1, 0, &tmp); 172 bitBlt(&pressedParen, specialx1, 0, &tmp);
172 173
173 tmp = Resource::loadPixmap("kjumpx/pressedDigit"); 174 tmp = Resource::loadPixmap("kjumpx/pressedDigit");
174 bitBlt(&pressedDigit, specialx1, 0, &tmp); 175 bitBlt(&pressedDigit, specialx1, 0, &tmp);
175 176
176 offscreen = QPixmap( releasedPlain ); 177 offscreen = QPixmap( releasedPlain );
177 178
178 releasedPix = &releasedPlain; 179 releasedPix = &releasedPlain;
179 pressedPix = &pressedPlain; 180 pressedPix = &pressedPlain;
180 slidePix = &pressedPlain; 181 slidePix = &pressedPlain;
181 182
182 delayTimer = new QTimer(this); 183 delayTimer = new QTimer(this);
183 rateTimer = new QTimer(this); 184 rateTimer = new QTimer(this);
184 connect( delayTimer, SIGNAL( timeout() ), this, SLOT( delayTimerDone() ) ); 185 connect( delayTimer, SIGNAL( timeout() ), this, SLOT( delayTimerDone() ) );
185 connect( rateTimer, SIGNAL( timeout() ), this, SLOT( rateTimerDone() ) ); 186 connect( rateTimer, SIGNAL( timeout() ), this, SLOT( rateTimerDone() ) );
186} 187}
187 188
188void Keyboard::resizeEvent(QResizeEvent*) 189void Keyboard::resizeEvent(QResizeEvent*)
189{ 190{
190 //cout << "resizeEvent()" << endl; 191 //cout << "resizeEvent()" << endl;
191} 192}
192 193
193void Keyboard::paintEvent(QPaintEvent*) 194void Keyboard::paintEvent(QPaintEvent*)
194{ 195{
195 bitBlt(this, 0, 0, &offscreen); 196 bitBlt(this, 0, 0, &offscreen);
196} 197}
197 198
198void Keyboard::mousePressEvent(QMouseEvent *e) 199void Keyboard::mousePressEvent(QMouseEvent *e)
199{ 200{
200 pressedx = -1; 201 pressedx = -1;
201 pressedKeyUnicode = pressedKeyQcode = pressedMod = 0; 202 pressedKeyUnicode = pressedKeyQcode = pressedMod = 0;
202 203
203 int x = e->x(); 204 int x = e->x();
204 int y = e->y(); 205 int y = e->y();
205 206
206 int row = (y - 1) / letterh; 207 int row = (y - 1) / letterh;
207 208
208 if ( x <= mod1x2 ) // mod1 209 if ( x <= mod1x2 ) // mod1
209 { 210 {
210 pressedx = mod1x1; 211 pressedx = mod1x1;
211 pressedy = row * letterh; 212 pressedy = row * letterh;
212 pressedw = mod1w + 1; 213 pressedw = mod1w + 1;
213 pressedh = letterh + 1; 214 pressedh = letterh + 1;
214 if ( row == 2 ) // return 215 if ( row == 2 ) // return
215 { 216 {
216 pressed2x = mod2x1; 217 pressed2x = mod2x1;
217 pressed2y = 2 * letterh; 218 pressed2y = 2 * letterh;
218 pressed2w = mod2w + 1; 219 pressed2w = mod2w + 1;
219 pressed2h = letterh + 1; 220 pressed2h = letterh + 1;
220 isnoncont = true; 221 isnoncont = true;
221 } 222 }
222 else if ( row == 3 ) // alt 223 else if ( row == 3 ) // alt
223 alt = 1; 224 alt = 1;
224 else if ( row == 4 ) // ctrl 225 else if ( row == 4 ) // ctrl
225 ctrl = 1; 226 ctrl = 1;
226 pressedKeyUnicode = mod1Map[row].unicode; 227 pressedKeyUnicode = mod1Map[row].unicode;
227 pressedKeyQcode = mod1Map[row].qcode; 228 pressedKeyQcode = mod1Map[row].qcode;
228 } 229 }
229 else if ( x >= letterx1 && x <= letterx2 ) // letter 230 else if ( x >= letterx1 && x <= letterx2 ) // letter
230 { 231 {
231 int column = (x - letterx1 - 1) / letterw; 232 int column = (x - letterx1 - 1) / letterw;
232 QChar temp; 233 QChar temp;
233 if (lang == 0) // english 234 if (lang == 0) // english
234 if ( shift ) 235 if ( shift )
235 temp = QChar( letterMapShift[row][column] ); 236 temp = QChar( letterMapShift[row][column] );
236 else 237 else
237 temp = QChar( letterMap[row][column] ); 238 temp = QChar( letterMap[row][column] );
238 else if (lang == 1) // korean 239 else if (lang == 1) // korean
239 if ( shift ) 240 if ( shift )
240 temp = parseKoreanInput( kletterMapShift[row][column] ); 241 temp = parseKoreanInput( kletterMapShift[row][column] );
241 else 242 else
242 temp = parseKoreanInput( kletterMap[row][column] ); 243 temp = parseKoreanInput( kletterMap[row][column] );
243 244
244 if ( temp == ' ' ) // space 245 if ( temp == ' ' ) // space
245 { 246 {
246 if ( column < 3 ) 247 if ( column < 3 )
247 { 248 {
248 pressedx = letterx1; 249 pressedx = letterx1;
249 pressed2x = letterx1 + letterw * 4; 250 pressed2x = letterx1 + letterw * 4;
250 } 251 }
251 else 252 else
252 { 253 {
253 pressedx = letterx1 + letterw * 4; 254 pressedx = letterx1 + letterw * 4;
254 pressed2x = letterx1; 255 pressed2x = letterx1;
255 } 256 }
256 pressedy = pressed2y = row * letterh; 257 pressedy = pressed2y = row * letterh;
257 pressedw = pressed2w = letterw * 2 + 1; 258 pressedw = pressed2w = letterw * 2 + 1;
258 pressedh = pressed2h = letterh + 1; 259 pressedh = pressed2h = letterh + 1;
259 isnoncont = true; 260 isnoncont = true;
260 } 261 }
261 else 262 else
262 { 263 {
263 pressedx = letterx1 + column * letterw; 264 pressedx = letterx1 + column * letterw;
264 pressedy = row * letterh; 265 pressedy = row * letterh;
265 pressedw = letterw + 1; 266 pressedw = letterw + 1;
266 pressedh = letterh + 1; 267 pressedh = letterh + 1;
267 } 268 }
268 pressedKeyUnicode = temp.unicode(); 269 pressedKeyUnicode = temp.unicode();
269 pressedKeyQcode = slideKeyQcodeH = slideKeyQcodeV = temp.upper().unicode(); 270 pressedKeyQcode = slideKeyQcodeH = slideKeyQcodeV = temp.upper().unicode();
270 if ( temp == ' ' ) 271 if ( temp == ' ' )
271 { 272 {
272 slideKeyUnicodeH = slideKeyUnicodeV = 8; 273 slideKeyUnicodeH = slideKeyUnicodeV = 8;
273 slideKeyQcodeH = slideKeyQcodeV = Qt::Key_Backspace; 274 slideKeyQcodeH = slideKeyQcodeV = Qt::Key_Backspace;
274 } 275 }
275 else if ( temp == temp.lower() ) 276 else if ( temp == temp.lower() )
276 { 277 {
277 slideKeyUnicodeH = slideKeyUnicodeV = temp.upper().unicode(); 278 slideKeyUnicodeH = slideKeyUnicodeV = temp.upper().unicode();
278 slidePixH = slidePixV = &pressedShift; 279 slidePixH = slidePixV = &pressedShift;
279 } 280 }
280 else 281 else
281 { 282 {
282 slideKeyUnicodeH = slideKeyUnicodeV = temp.lower().unicode(); 283 slideKeyUnicodeH = slideKeyUnicodeV = temp.lower().unicode();
283 slidePixH = slidePixV = &pressedPlain; 284 slidePixH = slidePixV = &pressedPlain;
284 } 285 }
285 enableMouseTracking = true; 286 enableMouseTracking = true;
286 } 287 }
287 else if ( x >= num1x1 && x <= num1x2 ) // num1 288 else if ( x >= num1x1 && x <= num1x2 ) // num1
288 { 289 {
289 pressedx = num1x1; 290 pressedx = num1x1;
290 pressedy = row * letterh; 291 pressedy = row * letterh;
291 pressedw = num1w + 1; 292 pressedw = num1w + 1;
292 pressedh = letterh + 1; 293 pressedh = letterh + 1;
293 QChar temp = QChar( num1Map[row] ); 294 QChar temp = QChar( num1Map[row] );
294 pressedKeyUnicode = pressedKeyQcode = temp.unicode(); 295 pressedKeyUnicode = pressedKeyQcode = temp.unicode();
295 } 296 }
296 else if ( x >= specialx1 && x <= specialx2 ) // special 297 else if ( x >= specialx1 && x <= specialx2 ) // special
297 { 298 {
298 int column = (x - specialx1 - 1) / specialw; 299 int column = (x - specialx1 - 1) / specialw;
299 pressedx = specialx1 + column * specialw; 300 pressedx = specialx1 + column * specialw;
300 pressedy = row * letterh; 301 pressedy = row * letterh;
301 pressedw = specialw + 1; 302 pressedw = specialw + 1;
302 pressedh = letterh + 1; 303 pressedh = letterh + 1;
303 QChar temp; 304 QChar temp;
304 if ( shift ) 305 if ( shift )
305 temp = QChar( specialMapShift[row][column] ); 306 temp = QChar( specialMapShift[row][column] );
306 else if ( paren ) 307 else if ( paren )
307 temp = QChar( specialMapParen[row][column] ); 308 temp = QChar( specialMapParen[row][column] );
308 else 309 else
309 temp = QChar( specialMap[row][column] ); 310 temp = QChar( specialMap[row][column] );
310 pressedKeyUnicode = pressedKeyQcode = temp.unicode(); 311 pressedKeyUnicode = pressedKeyQcode = temp.unicode();
311 slideKeyUnicodeH = slideKeyQcodeH = slideKeyUnicodeV = slideKeyQcodeV = 312 slideKeyUnicodeH = slideKeyQcodeH = slideKeyUnicodeV = slideKeyQcodeV =
312 QChar('0').unicode() + ( 5 * column + row + 1 ) % 10; 313 QChar('0').unicode() + ( 5 * column + row + 1 ) % 10;
313 slidePixH = slidePixV = &pressedDigit; 314 slidePixH = slidePixV = &pressedDigit;
314 if ( shift ) 315 if ( shift )
315 { 316 {
316 slideKeyUnicodeV = slideKeyQcodeV = 317 slideKeyUnicodeV = slideKeyQcodeV =
317 QChar( specialMap[row][column] ).unicode(); 318 QChar( specialMap[row][column] ).unicode();
318 slidePixV = &pressedPlain; 319 slidePixV = &pressedPlain;
319 } 320 }
320 else if ( !(shift || paren) ) 321 else if ( !(shift || paren) )
321 { 322 {
322 slideKeyUnicodeV = slideKeyQcodeV = 323 slideKeyUnicodeV = slideKeyQcodeV =
323 QChar( specialMapShift[row][column] ).unicode(); 324 QChar( specialMapShift[row][column] ).unicode();
324 slidePixV = &pressedShift; 325 slidePixV = &pressedShift;
325 } 326 }
326 enableMouseTracking = true; 327 enableMouseTracking = true;
327 } 328 }
328 else if ( x >= num2x1 && x <= num2x2 ) // num2 329 else if ( x >= num2x1 && x <= num2x2 ) // num2
329 { 330 {
330 pressedx = num2x1; 331 pressedx = num2x1;
331 pressedy = row * letterh; 332 pressedy = row * letterh;
332 pressedw = num2w + 1; 333 pressedw = num2w + 1;
333 pressedh = letterh + 1; 334 pressedh = letterh + 1;
334 QChar temp = QChar( num2Map[row] ); 335 QChar temp = QChar( num2Map[row] );
335 pressedKeyUnicode = pressedKeyQcode = temp.unicode(); 336 pressedKeyUnicode = pressedKeyQcode = temp.unicode();
336 } 337 }
337 else if ( x >= mod2x1 && x <= mod2x2 ) // mod2 338 else if ( x >= mod2x1 && x <= mod2x2 ) // mod2
338 { 339 {
339 pressedx = mod2x1; 340 pressedx = mod2x1;
340 pressedy = row * letterh; 341 pressedy = row * letterh;
341 pressedw = mod2w + 1; 342 pressedw = mod2w + 1;
342 pressedh = letterh + 1; 343 pressedh = letterh + 1;
343 if ( row == 2 ) // return 344 if ( row == 2 ) // return
344 { 345 {
345 pressed2x = mod1x1; 346 pressed2x = mod1x1;
346 pressed2y = 2 * letterh; 347 pressed2y = 2 * letterh;
347 pressed2w = mod2w + 1; 348 pressed2w = mod2w + 1;
348 pressed2h = letterh + 1; 349 pressed2h = letterh + 1;
349 isnoncont = true; 350 isnoncont = true;
350 } 351 }
351 pressedKeyUnicode = mod2Map[row].unicode; 352 pressedKeyUnicode = mod2Map[row].unicode;
352 pressedKeyQcode = mod2Map[row].qcode; 353 pressedKeyQcode = mod2Map[row].qcode;
353 354
354 if ( row == 3 ) // shift 355 if ( row == 3 ) // shift
355 { 356 {
356 paren = 0; 357 paren = 0;
357 switch ( shift ) 358 switch ( shift )
358 { 359 {
359 case 0: 360 case 0:
360 { 361 {
361 shift = 1; 362 shift = 1;
362 releasedPix = &releasedShift; 363 releasedPix = &releasedShift;
363 pressedPix = &pressedShift; 364 pressedPix = &pressedShift;
364 bitBlt( &offscreen, 0, 0, releasedPix ); 365 bitBlt( &offscreen, 0, 0, releasedPix );
365 break; 366 break;
366 } 367 }
367 case 1: 368 case 1:
368 { 369 {
369 shift = 2; 370 shift = 2;
370 break; 371 break;
371 } 372 }
372 case 2: 373 case 2:
373 { 374 {
374 shift = 0; 375 shift = 0;
375 releasedPix = &releasedPlain; 376 releasedPix = &releasedPlain;
376 pressedPix = &pressedPlain; 377 pressedPix = &pressedPlain;
377 bitBlt( &offscreen, 0, 0, releasedPix ); 378 bitBlt( &offscreen, 0, 0, releasedPix );
378 break; 379 break;
379 } 380 }
380 } 381 }
381 } 382 }
382 else if ( row == 4 ) // parenthesis 383 else if ( row == 4 ) // parenthesis
383 { 384 {
384 shift = 0; 385 shift = 0;
385 switch ( paren ) 386 switch ( paren )
386 { 387 {
387 case 0: 388 case 0:
388 { 389 {
389 paren = 1; 390 paren = 1;
390 releasedPix = &releasedParen; 391 releasedPix = &releasedParen;
391 pressedPix = &pressedParen; 392 pressedPix = &pressedParen;
392 bitBlt( &offscreen, 0, 0, releasedPix ); 393 bitBlt( &offscreen, 0, 0, releasedPix );
393 break; 394 break;
394 } 395 }
395 case 1: 396 case 1:
396 { 397 {
397 paren = 2; 398 paren = 2;
398 break; 399 break;
399 } 400 }
400 case 2: 401 case 2:
401 { 402 {
402 paren = 0; 403 paren = 0;
403 releasedPix = &releasedPlain; 404 releasedPix = &releasedPlain;
404 pressedPix = &pressedPlain; 405 pressedPix = &pressedPlain;
405 bitBlt( &offscreen, 0, 0, releasedPix ); 406 bitBlt( &offscreen, 0, 0, releasedPix );
406 break; 407 break;
407 } 408 }
408 } 409 }
409 } 410 }
410 } 411 }
411 else if ( x >= cursorx1 ) // cursor 412 else if ( x >= cursorx1 ) // cursor
412 { 413 {
413 int column = (x - cursorx1 - 1) / cursorw; 414 int column = (x - cursorx1 - 1) / cursorw;
414 if ( row == 2 || row == 4 ) 415 if ( row == 2 || row == 4 )
415 pressedx = cursorx1 + cursorw / 2; 416 pressedx = cursorx1 + cursorw / 2;
416 else 417 else
417 pressedx = cursorx1 + column * cursorw; 418 pressedx = cursorx1 + column * cursorw;
418 pressedy = row * letterh; 419 pressedy = row * letterh;
419 pressedw = cursorw + 1; 420 pressedw = cursorw + 1;
420 pressedh = letterh + 1; 421 pressedh = letterh + 1;
421 pressedKeyQcode = cursorMap[row][column]; 422 pressedKeyQcode = cursorMap[row][column];
422 } 423 }
423 424
424 pressedMod = ( shift ? Qt::ShiftButton : 0 ) | 425 pressedMod = ( shift ? Qt::ShiftButton : 0 ) |
425 ( ctrl ? Qt::ControlButton : 0 ) | 426 ( ctrl ? Qt::ControlButton : 0 ) |
426 ( alt ? Qt::AltButton : 0 ); 427 ( alt ? Qt::AltButton : 0 );
427 428
428 lastKey = pressedKeyUnicode; 429 lastKey = pressedKeyUnicode;
429 430
430 emit key( pressedKeyUnicode, pressedKeyQcode, pressedMod, true, false ); 431 emit key( pressedKeyUnicode, pressedKeyQcode, pressedMod, true, false );
431 delayTimer->start( autorepeatDelaytime, true ); 432 delayTimer->start( autorepeatDelaytime, true );
432 433
433 if ( pressedx == -1 ) 434 if ( pressedx == -1 )
434 return; 435 return;
435 436
436 bitBlt( &offscreen, pressedx, pressedy, 437 bitBlt( &offscreen, pressedx, pressedy,
437 pressedPix, pressedx, pressedy, pressedw, pressedh ); 438 pressedPix, pressedx, pressedy, pressedw, pressedh );
438 if ( isnoncont ) 439 if ( isnoncont )
439 bitBlt( &offscreen, pressed2x, pressed2y, 440 bitBlt( &offscreen, pressed2x, pressed2y,
440 pressedPix, pressed2x, pressed2y, pressed2w, pressed2h ); 441 pressedPix, pressed2x, pressed2y, pressed2w, pressed2h );
441 442
442 repaint( false ); 443 repaint( false );
443} 444}
444 445
445void Keyboard::mouseReleaseEvent(QMouseEvent*) 446void Keyboard::mouseReleaseEvent(QMouseEvent*)
446{ 447{
447 //cout << pressedx << " " << pressedy << " " << pressedw << " " << pressedh << endl; 448 //cout << pressedx << " " << pressedy << " " << pressedw << " " << pressedh << endl;
448 449
449 delayTimer->stop(); 450 delayTimer->stop();
450 rateTimer->stop(); 451 rateTimer->stop();
451 enableMouseTracking = false; 452 enableMouseTracking = false;
452 453
453 if ( pressedx == -1 ) 454 if ( pressedx == -1 )
454 return; 455 return;
455 456
456 if ( shift == 2 && pressedKeyQcode == Qt::Key_Shift ) 457 if ( shift == 2 && pressedKeyQcode == Qt::Key_Shift )
457 return; 458 return;
458 if ( paren == 2 && pressedKeyQcode == myParenID ) 459 if ( paren == 2 && pressedKeyQcode == myParenID )
459 return; 460 return;
460 461
461 if ( shift == 1 && pressedKeyQcode != Qt::Key_Shift ) 462 if ( shift == 1 && pressedKeyQcode != Qt::Key_Shift )
462 { 463 {
463 shift = 0; 464 shift = 0;
464 releasedPix = &releasedPlain; 465 releasedPix = &releasedPlain;
465 pressedPix = &pressedPlain; 466 pressedPix = &pressedPlain;
466 bitBlt( &offscreen, 0, 0, releasedPix ); 467 bitBlt( &offscreen, 0, 0, releasedPix );
467 } 468 }
468 469
469 if ( paren == 1 && pressedKeyQcode != myParenID ) 470 if ( paren == 1 && pressedKeyQcode != myParenID )
470 { 471 {
471 paren = 0; 472 paren = 0;
472 releasedPix = &releasedPlain; 473 releasedPix = &releasedPlain;
473 pressedPix = &pressedPlain; 474 pressedPix = &pressedPlain;
474 bitBlt( &offscreen, 0, 0, releasedPix ); 475 bitBlt( &offscreen, 0, 0, releasedPix );
475 } 476 }
476 477
477 if ( alt && pressedKeyQcode != Qt::Key_Alt ) 478 if ( alt && pressedKeyQcode != Qt::Key_Alt )
478 alt = 0; 479 alt = 0;
479 if ( ctrl && pressedKeyQcode != Qt::Key_Control ) 480 if ( ctrl && pressedKeyQcode != Qt::Key_Control )
480 ctrl = 0; 481 ctrl = 0;
481 482
482 bitBlt( &offscreen, pressedx, pressedy, 483 bitBlt( &offscreen, pressedx, pressedy,
483 releasedPix, pressedx, pressedy, pressedw, pressedh ); 484 releasedPix, pressedx, pressedy, pressedw, pressedh );
484 485
485 if ( isnoncont ) 486 if ( isnoncont )
486 { 487 {
487 isnoncont = false; 488 isnoncont = false;
488 bitBlt( &offscreen, pressed2x, pressed2y, 489 bitBlt( &offscreen, pressed2x, pressed2y,
489 releasedPix, pressed2x, pressed2y, pressed2w, pressed2h ); 490 releasedPix, pressed2x, pressed2y, pressed2w, pressed2h );
490 } 491 }
491 492
492 repaint( false ); 493 repaint( false );
493} 494}
494 495
495void Keyboard::mouseMoveEvent(QMouseEvent *e) 496void Keyboard::mouseMoveEvent(QMouseEvent *e)
496{ 497{
497 if ( !enableMouseTracking ) 498 if ( !enableMouseTracking )
498 return; 499 return;
499 500
500 if ( e->x() < pressedx || e->x() >= pressedx + pressedw ) 501 if ( e->x() < pressedx || e->x() >= pressedx + pressedw )
501 { 502 {
502 pressedKeyUnicode = slideKeyUnicodeH; 503 pressedKeyUnicode = slideKeyUnicodeH;
503 pressedKeyQcode = slideKeyQcodeH; 504 pressedKeyQcode = slideKeyQcodeH;
504 slidePix = slidePixH; 505 slidePix = slidePixH;
505 } 506 }
506 else if ( e->y() < pressedy || e->y() >= pressedy + pressedh ) 507 else if ( e->y() < pressedy || e->y() >= pressedy + pressedh )
507 { 508 {
508 pressedKeyUnicode = slideKeyUnicodeV; 509 pressedKeyUnicode = slideKeyUnicodeV;
509 pressedKeyQcode = slideKeyQcodeV; 510 pressedKeyQcode = slideKeyQcodeV;
510 slidePix = slidePixV; 511 slidePix = slidePixV;
511 } 512 }
512 else 513 else
513 return; 514 return;
514 515
515 enableMouseTracking = false; 516 enableMouseTracking = false;
516 517
517 delayTimer->stop(); 518 delayTimer->stop();
518 rateTimer->stop(); 519 rateTimer->stop();
519 520
520 bitBlt( &offscreen, pressedx, pressedy, 521 bitBlt( &offscreen, pressedx, pressedy,
521 slidePix, pressedx, pressedy, pressedw, pressedh ); 522 slidePix, pressedx, pressedy, pressedw, pressedh );
522 523
523 emit key( 8, Qt::Key_Backspace, pressedMod, true, false ); 524 emit key( 8, Qt::Key_Backspace, pressedMod, true, false );
524 emit key( pressedKeyUnicode, pressedKeyQcode, pressedMod, true, false ); 525 emit key( pressedKeyUnicode, pressedKeyQcode, pressedMod, true, false );
525 delayTimer->start( autorepeatDelaytime, true ); 526 delayTimer->start( autorepeatDelaytime, true );
526 527
527 repaint( false ); 528 repaint( false );
528} 529}
529 530
530void Keyboard::delayTimerDone() 531void Keyboard::delayTimerDone()
531{ 532{
532 emit key( pressedKeyUnicode, pressedKeyQcode, pressedMod, true, true ); 533 emit key( pressedKeyUnicode, pressedKeyQcode, pressedMod, true, true );
533 rateTimer->start( 1000/autorepeatRate, false ); 534 rateTimer->start( 1000/autorepeatRate, false );
534} 535}
535 536
536void Keyboard::rateTimerDone() 537void Keyboard::rateTimerDone()
537{ 538{
538 emit key( pressedKeyUnicode, pressedKeyQcode, pressedMod, true, true ); 539 emit key( pressedKeyUnicode, pressedKeyQcode, pressedMod, true, true );
539} 540}
540 541
541QSize Keyboard::sizeHint() const 542QSize Keyboard::sizeHint() const
542{ 543{
543 return offscreen.size(); 544 return offscreen.size();
544} 545}
545 546
546void Keyboard::resetState() 547void Keyboard::resetState()
547{ 548{
548 //cout << "resetState()" << endl; 549 //cout << "resetState()" << endl;
549} 550}
550 551
551/* 552/*
552 * 553 *
553 * TODO 554 * TODO
554 * one major problem with this implementation is that you can't move the 555 * one major problem with this implementation is that you can't move the
555 * cursor after inputing korean chars, otherwise it will eat up and replace 556 * cursor after inputing korean chars, otherwise it will eat up and replace
556 * the char before the cursor you move to. fix that 557 * the char before the cursor you move to. fix that
557 * 558 *
558 * make a kor/eng swaping key 559 * make a kor/eng swaping key
559 * 560 *
560 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 561 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
561 * 562 *
562 * how korean input works 563 * how korean input works
563 * 564 *
564 * all following chars means unicode char value and are in hex 565 * all following chars means unicode char value and are in hex
565 * 566 *
566 * ÃÊÀ½ = schar (start char) 567 * ÃÊÀ½ = schar (start char)
567 * ÁßÀ½ = mchar (middle char) 568 * ÁßÀ½ = mchar (middle char)
568 * ³¡À½ = echar (end char) 569 * ³¡À½ = echar (end char)
569 * 570 *
570 * there are 19 schars. unicode position is at 1100 - 1112 571 * there are 19 schars. unicode position is at 1100 - 1112
571 * there are 21 mchars. unicode position is at 1161 - 1175 572 * there are 21 mchars. unicode position is at 1161 - 1175
572 * there are 27 echars. unicode position is at 11a8 - 11c2 573 * there are 27 echars. unicode position is at 11a8 - 11c2
573 * 574 *
574 * the map with everything combined is at ac00 - d7a3 575 * the map with everything combined is at ac00 - d7a3
575 * 576 *
576 * to find a combination of schar + mchar in the map, lookup 577 * to find a combination of schar + mchar in the map, lookup
577 * ((schar - 0x1100) * 587) + ((mchar - 0x1161) * 27) + (echar - 0x11a8) + 0xac00) 578 * ((schar - 0x1100) * 587) + ((mchar - 0x1161) * 27) + (echar - 0x11a8) + 0xac00)
578 * 579 *
579 */ 580 */
580 581
581QChar Keyboard::parseKoreanInput (ushort c) { 582QChar Keyboard::parseKoreanInput (ushort c) {
582 583
583 static ushort schar, mchar, echar; 584 static ushort schar, mchar, echar;
584 585
585 if ((lastKey < 0x1100 || 0x11c2 < lastKey) && (lastKey < 0xac00 || 0xd7a3 < lastKey) 586 if ((lastKey < 0x1100 || 0x11c2 < lastKey) && (lastKey < 0xac00 || 0xd7a3 < lastKey)
586 && !(lastKey == 0 && (shift || paren || ctrl || alt))) { 587 && !(lastKey == 0 && (shift || paren || ctrl || alt))) {
587 588
588 //printf ("reset...\n"); 589 //printf ("reset...\n");
589 schar = 0, mchar = 0, echar = 0; 590 schar = 0, mchar = 0, echar = 0;
590 } 591 }
591 592
592 //printf ("in %x %x %x %x %x\n", schar, mchar, echar, c, lastKey); 593 //printf ("in %x %x %x %x %x\n", schar, mchar, echar, c, lastKey);
593 if ( 0x1100 <= c && c <= 0x1112 ) { // schar or echar was input 594 if ( 0x1100 <= c && c <= 0x1112 ) { // schar or echar was input
594 595
595 if (schar == 0 || (schar != 0 && mchar == 0)) { 596 if (schar == 0 || (schar != 0 && mchar == 0)) {
596 schar = c; mchar = 0; echar = 0; 597 schar = c; mchar = 0; echar = 0;
597 return QChar(c); 598 return QChar(c);
598 } 599 }
599 else if (mchar != 0) { 600 else if (mchar != 0) {
600 601
601 if (echar == 0) { 602 if (echar == 0) {
602 603
603 if (!(echar = constoe(c))) { 604 if (!(echar = constoe(c))) {
604 605
605 schar = c; mchar = 0; echar = 0; 606 schar = c; mchar = 0; echar = 0;
606 return QChar(c); 607 return QChar(c);
607 } 608 }
608 609
609 } 610 }
610 else { // must figure out what the echar is 611 else { // must figure out what the echar is
611 612
612 if (echar == 0x11a8) { // ¤¡ 613 if (echar == 0x11a8) { // ¤¡
613 614
614 if (c == 0x1100) echar = 0x11a9; // ¤¡ + ¤¡ 615 if (c == 0x1100) echar = 0x11a9; // ¤¡ + ¤¡
615 else if (c == 0x1109) echar = 0x11aa; // ¤¡ + ¤µ 616 else if (c == 0x1109) echar = 0x11aa; // ¤¡ + ¤µ
616 else { 617 else {
617 schar = c; mchar = 0; echar = 0; 618 schar = c; mchar = 0; echar = 0;
618 return QChar(c); 619 return QChar(c);
619 } 620 }
620 621
621 } else if (echar == 0x11ab) { // ¤¤ 622 } else if (echar == 0x11ab) { // ¤¤
622 623
623 if (c == 0x110c) echar = 0x11ac; // ¤¤ + ¤¸ 624 if (c == 0x110c) echar = 0x11ac; // ¤¤ + ¤¸
624 else if (c == 0x1112) echar = 0x11ad; // ¤¤ + ¤¾ 625 else if (c == 0x1112) echar = 0x11ad; // ¤¤ + ¤¾
625 else { 626 else {
626 schar = c; mchar = 0; echar = 0; 627 schar = c; mchar = 0; echar = 0;
627 return QChar(c); 628 return QChar(c);
628 } 629 }
629 630
630 } else if (echar == 0x11af) { // ¤© 631 } else if (echar == 0x11af) { // ¤©
631 632
632 if (c == 0x1100) echar = 0x11b0; // ¤© + ¤¡ 633 if (c == 0x1100) echar = 0x11b0; // ¤© + ¤¡
633 else if (c == 0x1106) echar = 0x11b1; // ¤© + ¤± 634 else if (c == 0x1106) echar = 0x11b1; // ¤© + ¤±
634 else if (c == 0x1107) echar = 0x11b2; // ¤© + ¤² 635 else if (c == 0x1107) echar = 0x11b2; // ¤© + ¤²
635 else if (c == 0x1109) echar = 0x11b3; // ¤© + ¤µ 636 else if (c == 0x1109) echar = 0x11b3; // ¤© + ¤µ
636 else if (c == 0x1110) echar = 0x11b4; // ¤© + ¤¼ 637 else if (c == 0x1110) echar = 0x11b4; // ¤© + ¤¼
637 else if (c == 0x1111) echar = 0x11b5; // ¤© + ¤½ 638 else if (c == 0x1111) echar = 0x11b5; // ¤© + ¤½
638 else if (c == 0x1112) echar = 0x11b6; // ¤© + ¤¾ 639 else if (c == 0x1112) echar = 0x11b6; // ¤© + ¤¾
639 else { 640 else {
640 schar = c; mchar = 0; echar = 0; 641 schar = c; mchar = 0; echar = 0;
641 return QChar(c); 642 return QChar(c);
642 } 643 }
643 644
644 } else if (echar == 0x11b8) { // ¤² 645 } else if (echar == 0x11b8) { // ¤²
645 646
646 if (c == 0x1109) echar = 0x11b9; // ¤² + ¤µ 647 if (c == 0x1109) echar = 0x11b9; // ¤² + ¤µ
647 else { 648 else {
648 schar = c; mchar = 0; echar = 0; 649 schar = c; mchar = 0; echar = 0;
649 return QChar(c); 650 return QChar(c);
650 } 651 }
651 652
652 } else if (echar == 0x11ba) { // ¤µ 653 } else if (echar == 0x11ba) { // ¤µ
653 654
654 if (c == 0x1109) echar = 0x11bb; // ¤µ + ¤µ 655 if (c == 0x1109) echar = 0x11bb; // ¤µ + ¤µ
655 else { 656 else {
656 schar = c; mchar = 0; echar = 0; 657 schar = c; mchar = 0; echar = 0;
657 return QChar(c); 658 return QChar(c);
658 } 659 }
659 660
660 } else { // if any other char, cannot combine chars 661 } else { // if any other char, cannot combine chars
661 662
662 schar = c; mchar = 0; echar = 0; 663 schar = c; mchar = 0; echar = 0;
663 return QChar(c); 664 return QChar(c);
664 } 665 }
665 666
666 lastKey = echar; 667 lastKey = echar;
667 } 668 }
668 } 669 }
669 670
670 } 671 }
671 else if (0x1161 <= c && c <= 0x1175) { // mchar was input 672 else if (0x1161 <= c && c <= 0x1175) { // mchar was input
672 673
673 if (schar != 0 && mchar == 0) { mchar = c; } 674 if (schar != 0 && mchar == 0) { mchar = c; }
674 675
675 else if (schar != 0 && mchar != 0 && echar == 0) { 676 else if (schar != 0 && mchar != 0 && echar == 0) {
676 677
677 switch (mchar) { 678 switch (mchar) {
678 case 0x1169: 679 case 0x1169:
679 if (c == 0x1161) mchar = 0x116a; 680 if (c == 0x1161) mchar = 0x116a;
680 else if (c == 0x1162) mchar = 0x116b; 681 else if (c == 0x1162) mchar = 0x116b;
681 else if (c == 0x1175) mchar = 0x116c; 682 else if (c == 0x1175) mchar = 0x116c;
682 else { 683 else {
683 schar = 0; mchar = 0; echar = 0; 684 schar = 0; mchar = 0; echar = 0;
684 return QChar(c); 685 return QChar(c);
685 } 686 }
686 break; 687 break;
687 case 0x116e: 688 case 0x116e:
688 if (c == 0x1165) mchar = 0x116f; 689 if (c == 0x1165) mchar = 0x116f;
689 else if (c == 0x1166) mchar = 0x1170; 690 else if (c == 0x1166) mchar = 0x1170;
690 else if (c == 0x1175) mchar = 0x1171; 691 else if (c == 0x1175) mchar = 0x1171;
691 else { 692 else {
692 schar = 0; mchar = 0; echar = 0; 693 schar = 0; mchar = 0; echar = 0;
693 return QChar(c); 694 return QChar(c);
694 } 695 }
695 break; 696 break;
696 case 0x1173: 697 case 0x1173:
697 if (c == 0x1175) mchar = 0x1174; 698 if (c == 0x1175) mchar = 0x1174;
698 else { 699 else {
699 schar = 0; mchar = 0; echar = 0; 700 schar = 0; mchar = 0; echar = 0;
700 return QChar(c); 701 return QChar(c);
701 } 702 }
702 break; 703 break;
703 default: 704 default:
704 schar = 0; mchar = 0; echar = 0; 705 schar = 0; mchar = 0; echar = 0;
705 return QChar(c); 706 return QChar(c);
706 } 707 }
707 } 708 }
708 else if (schar != 0 && mchar != 0 && echar != 0) { 709 else if (schar != 0 && mchar != 0 && echar != 0) {
709 710
710 emit key( 8, Qt::Key_Backspace, 0, true, false ); 711 emit key( 8, Qt::Key_Backspace, 0, true, false );
711 712
712 ushort prev = 0; 713 ushort prev = 0;
713 switch (echar) { 714 switch (echar) {
714 /* 715 /*
715 case 0x11a9: 716 case 0x11a9:
716 prev = combineKoreanChars(schar, mchar, 0x11a8); 717 prev = combineKoreanChars(schar, mchar, 0x11a8);
717 schar = 0x1100; 718 schar = 0x1100;
718 break; 719 break;
719 */ 720 */
720 case 0x11aa: 721 case 0x11aa:
721 prev = combineKoreanChars(schar, mchar, 0x11a8); 722 prev = combineKoreanChars(schar, mchar, 0x11a8);
722 schar = 0x1109; 723 schar = 0x1109;
723 break; 724 break;
724 case 0x11ac: 725 case 0x11ac:
725 prev = combineKoreanChars(schar, mchar, 0x11ab); 726 prev = combineKoreanChars(schar, mchar, 0x11ab);
726 schar = 0x110c; 727 schar = 0x110c;
727 break; 728 break;
728 case 0x11ad: 729 case 0x11ad:
729 prev = combineKoreanChars(schar, mchar, 0x11ab); 730 prev = combineKoreanChars(schar, mchar, 0x11ab);
730 schar = 0x1112; 731 schar = 0x1112;
731 break; 732 break;
732 case 0x11b0: 733 case 0x11b0:
733 prev = combineKoreanChars(schar, mchar, 0x11af); 734 prev = combineKoreanChars(schar, mchar, 0x11af);
734 schar = 0x1100; 735 schar = 0x1100;
735 break; 736 break;
736 case 0x11b1: 737 case 0x11b1:
737 prev = combineKoreanChars(schar, mchar, 0x11af); 738 prev = combineKoreanChars(schar, mchar, 0x11af);
738 schar = 0x1106; 739 schar = 0x1106;
739 break; 740 break;
740 case 0x11b2: 741 case 0x11b2:
741 prev = combineKoreanChars(schar, mchar, 0x11af); 742 prev = combineKoreanChars(schar, mchar, 0x11af);
742 schar = 0x1107; 743 schar = 0x1107;
743 break; 744 break;
744 case 0x11b3: 745 case 0x11b3:
745 prev = combineKoreanChars(schar, mchar, 0x11af); 746 prev = combineKoreanChars(schar, mchar, 0x11af);
746 schar = 0x1109; 747 schar = 0x1109;
747 break; 748 break;
748 case 0x11b4: 749 case 0x11b4:
749 prev = combineKoreanChars(schar, mchar, 0x11af); 750 prev = combineKoreanChars(schar, mchar, 0x11af);
750 schar = 0x1110; 751 schar = 0x1110;
751 break; 752 break;
752 case 0x11b9: 753 case 0x11b9:
753 prev = combineKoreanChars(schar, mchar, 0x11b8); 754 prev = combineKoreanChars(schar, mchar, 0x11b8);
754 schar = 0x1109; 755 schar = 0x1109;
755 break; 756 break;
756 /* 757 /*
757 case 0x11bb: 758 case 0x11bb:
758 prev = combineKoreanChars(schar, mchar, 0x11ba); 759 prev = combineKoreanChars(schar, mchar, 0x11ba);
759 schar = 0x1109; 760 schar = 0x1109;
760 break; 761 break;
761 */ 762 */
762 default: 763 default:
763 764
764 if (constoe(echar)) { 765 if (constoe(echar)) {
765 766
766 prev = combineKoreanChars(schar, mchar, 0); 767 prev = combineKoreanChars(schar, mchar, 0);
767 schar = constoe(echar); 768 schar = constoe(echar);
768 } 769 }
769 break; 770 break;
770 } 771 }
771 772
772 emit key( prev, prev, 0, true, false ); 773 emit key( prev, prev, 0, true, false );
773 774
774 mchar = c; echar = 0; 775 mchar = c; echar = 0;
775 776
776 return QChar(combineKoreanChars(schar, mchar, 0)); 777 return QChar(combineKoreanChars(schar, mchar, 0));
777 778
778 } 779 }
779 else { 780 else {
780 schar = 0; mchar = 0; echar = 0; 781 schar = 0; mchar = 0; echar = 0;
781 return QChar(c); 782 return QChar(c);
782 } 783 }
783 784
784 } 785 }
785 else if (c == ' ') return QChar(c); 786 else if (c == ' ') return QChar(c);
786 787
787 788
788 // and now... finally delete previous char, and return new char 789 // and now... finally delete previous char, and return new char
789 emit key( 8, Qt::Key_Backspace, 0, true, false ); 790 emit key( 8, Qt::Key_Backspace, 0, true, false );
790 791
791 //printf ("out %x %x %x %x\n", schar, mchar, echar, c); 792 //printf ("out %x %x %x %x\n", schar, mchar, echar, c);
792 793
793 794
794 return QChar (combineKoreanChars( schar, mchar, echar)); 795 return QChar (combineKoreanChars( schar, mchar, echar));
795 796
796} 797}
797 798
798ushort Keyboard::combineKoreanChars(const ushort s, const ushort m, const ushort e) { 799ushort Keyboard::combineKoreanChars(const ushort s, const ushort m, const ushort e) {
799 800
800 return ((s - 0x1100) * 588) + ((m - 0x1161) * 28) + (e ? e - 0x11a7 : 0) + 0xac00; 801 return ((s - 0x1100) * 588) + ((m - 0x1161) * 28) + (e ? e - 0x11a7 : 0) + 0xac00;
801 802
802} 803}
803 804
804ushort Keyboard::constoe(const ushort c) { 805ushort Keyboard::constoe(const ushort c) {
805 806
806 // converts schars to echars if possible 807 // converts schars to echars if possible
807 808
808 if (0x1100 <= c && c <= 0x1112) { // schar to echar 809 if (0x1100 <= c && c <= 0x1112) { // schar to echar
809 810
810 switch (c) { 811 switch (c) {
811 case 0x1100: return 0x11a8; 812 case 0x1100: return 0x11a8;
812 case 0x1101: return 0x11a9; 813 case 0x1101: return 0x11a9;
813 case 0x1102: return 0x11ab; 814 case 0x1102: return 0x11ab;
814 case 0x1103: return 0x11ae; 815 case 0x1103: return 0x11ae;
815 case 0x1105: return 0x11af; 816 case 0x1105: return 0x11af;
816 case 0x1106: return 0x11b7; 817 case 0x1106: return 0x11b7;
817 case 0x1107: return 0x11b8; 818 case 0x1107: return 0x11b8;
818 case 0x1109: return 0x11ba; 819 case 0x1109: return 0x11ba;
819 case 0x110a: return 0x11bb; 820 case 0x110a: return 0x11bb;
820 case 0x110b: return 0x11bc; 821 case 0x110b: return 0x11bc;
821 case 0x110c: return 0x11bd; 822 case 0x110c: return 0x11bd;
822 case 0x110e: return 0x11be; 823 case 0x110e: return 0x11be;
823 case 0x110f: return 0x11bf; 824 case 0x110f: return 0x11bf;
824 case 0x1110: return 0x11c0; 825 case 0x1110: return 0x11c0;
825 case 0x1111: return 0x11c1; 826 case 0x1111: return 0x11c1;
826 case 0x1112: return 0x11c2; 827 case 0x1112: return 0x11c2;
827 default: return 0; 828 default: return 0;
828 829
829 } 830 }
830 831
831 } else { //echar to schar 832 } else { //echar to schar
832 833
833 switch (c) { 834 switch (c) {
834 case 0x11a8: return 0x1100; 835 case 0x11a8: return 0x1100;
835 case 0x11a9: return 0x1101; 836 case 0x11a9: return 0x1101;
836 case 0x11ab: return 0x1102; 837 case 0x11ab: return 0x1102;
837 case 0x11ae: return 0x1103; 838 case 0x11ae: return 0x1103;
838 case 0x11af: return 0x1105; 839 case 0x11af: return 0x1105;
839 case 0x11b7: return 0x1106; 840 case 0x11b7: return 0x1106;
840 case 0x11b8: return 0x1107; 841 case 0x11b8: return 0x1107;
841 case 0x11ba: return 0x1109; 842 case 0x11ba: return 0x1109;
842 case 0x11bb: return 0x110a; 843 case 0x11bb: return 0x110a;
843 case 0x11bc: return 0x110b; 844 case 0x11bc: return 0x110b;
844 case 0x11bd: return 0x110c; 845 case 0x11bd: return 0x110c;
845 case 0x11be: return 0x110e; 846 case 0x11be: return 0x110e;
846 case 0x11bf: return 0x110f; 847 case 0x11bf: return 0x110f;
847 case 0x11c0: return 0x1110; 848 case 0x11c0: return 0x1110;
848 case 0x11c1: return 0x1111; 849 case 0x11c1: return 0x1111;
849 case 0x11c2: return 0x1112; 850 case 0x11c2: return 0x1112;
850 default: return 0; 851 default: return 0;
851 852
852 } 853 }
853 854
854 } 855 }
855} 856}
diff --git a/inputmethods/kjumpx/keyboard.h b/inputmethods/kjumpx/keyboard.h
index 148cb72..ca83915 100644
--- a/inputmethods/kjumpx/keyboard.h
+++ b/inputmethods/kjumpx/keyboard.h
@@ -1,79 +1,84 @@
1/**************************************************************************************94x78** 1/**************************************************************************************94x78**
2** 2**
3** This file may be distributed and/or modified under the terms of the 3** This file may be distributed and/or modified under the terms of the
4** GNU General Public License version 2 as published by the Free Software 4** GNU General Public License version 2 as published by the Free Software
5** Foundation and appearing in the file LICENSE.GPL included in the 5** Foundation and appearing in the file LICENSE.GPL included in the
6** packaging of this file. 6** packaging of this file.
7** 7**
8** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 8** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
9** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 9** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
10** 10**
11*********************************************************************************************/ 11*********************************************************************************************/
12#include <qframe.h> 12#include <qframe.h>
13#include <qpixmap.h> 13#include <qpixmap.h>
14#include <qtimer.h> 14#include <qtimer.h>
15 15
16namespace KJumpX
17{
18
16class Keyboard : public QFrame 19class Keyboard : public QFrame
17{ 20{
18 Q_OBJECT 21 Q_OBJECT
19public: 22public:
20 Keyboard( QWidget* parent=0, const char* name=0, WFlags f=0 ); 23 Keyboard( QWidget* parent=0, const char* name=0, WFlags f=0 );
21 24
22 void resetState(); 25 void resetState();
23 26
24 void mousePressEvent(QMouseEvent*); 27 void mousePressEvent(QMouseEvent*);
25 void mouseReleaseEvent(QMouseEvent*); 28 void mouseReleaseEvent(QMouseEvent*);
26 void mouseMoveEvent(QMouseEvent*); 29 void mouseMoveEvent(QMouseEvent*);
27 void resizeEvent(QResizeEvent*); 30 void resizeEvent(QResizeEvent*);
28 void paintEvent(QPaintEvent* e); 31 void paintEvent(QPaintEvent* e);
29 //void timerEvent(QTimerEvent* e); 32 //void timerEvent(QTimerEvent* e);
30 33
31 QSize sizeHint() const; 34 QSize sizeHint() const;
32 35
33 QChar parseKoreanInput(ushort); 36 QChar parseKoreanInput(ushort);
34 ushort combineKoreanChars(const ushort, const ushort, const ushort); 37 ushort combineKoreanChars(const ushort, const ushort, const ushort);
35 ushort constoe(const ushort); 38 ushort constoe(const ushort);
36 39
37 40
38signals: 41signals:
39 void key( ushort unicode, ushort qcode, ushort modifiers, bool, bool ); 42 void key( ushort unicode, ushort qcode, ushort modifiers, bool, bool );
40 43
41private slots: 44private slots:
42 void delayTimerDone(); 45 void delayTimerDone();
43 void rateTimerDone(); 46 void rateTimerDone();
44 47
45private: 48private:
46 int shift; // 0, 1, 2 49 int shift; // 0, 1, 2
47 int paren; // 0, 1, 2 50 int paren; // 0, 1, 2
48 int ctrl; // 0, 1 51 int ctrl; // 0, 1
49 int alt; // 0, 1 52 int alt; // 0, 1
50 bool lang; // 0 -> english, 1 -> korean 53 bool lang; // 0 -> english, 1 -> korean
51 54
52 int lastKey; 55 int lastKey;
53 56
54 int pressedKeyUnicode, pressedKeyQcode, pressedMod; 57 int pressedKeyUnicode, pressedKeyQcode, pressedMod;
55 int pressedx, pressedy, pressedw, pressedh; 58 int pressedx, pressedy, pressedw, pressedh;
56 bool isnoncont; 59 bool isnoncont;
57 int pressed2x, pressed2y, pressed2w, pressed2h; 60 int pressed2x, pressed2y, pressed2w, pressed2h;
58 61
59 int slideKeyUnicodeH, slideKeyQcodeH, slideKeyUnicodeV, slideKeyQcodeV; 62 int slideKeyUnicodeH, slideKeyQcodeH, slideKeyUnicodeV, slideKeyQcodeV;
60 bool enableMouseTracking; 63 bool enableMouseTracking;
61 QPixmap *slidePix, *slidePixH, *slidePixV; 64 QPixmap *slidePix, *slidePixH, *slidePixV;
62 65
63 QPixmap releasedPlain; 66 QPixmap releasedPlain;
64 QPixmap releasedShift; 67 QPixmap releasedShift;
65 QPixmap releasedParen; 68 QPixmap releasedParen;
66 69
67 QPixmap pressedPlain; 70 QPixmap pressedPlain;
68 QPixmap pressedShift; 71 QPixmap pressedShift;
69 QPixmap pressedParen; 72 QPixmap pressedParen;
70 QPixmap pressedDigit; 73 QPixmap pressedDigit;
71 74
72 QPixmap offscreen; 75 QPixmap offscreen;
73 76
74 QPixmap *releasedPix; 77 QPixmap *releasedPix;
75 QPixmap *pressedPix; 78 QPixmap *pressedPix;
76 79
77 QTimer *delayTimer; 80 QTimer *delayTimer;
78 QTimer *rateTimer; 81 QTimer *rateTimer;
79}; 82};
83
84} // namespace KJumpX
diff --git a/inputmethods/kjumpx/keyboardimpl.cpp b/inputmethods/kjumpx/keyboardimpl.cpp
index 5d8e0d3..976d816 100644
--- a/inputmethods/kjumpx/keyboardimpl.cpp
+++ b/inputmethods/kjumpx/keyboardimpl.cpp
@@ -1,97 +1,97 @@
1/**************************************************************************************94x78** 1/**************************************************************************************94x78**
2** 2**
3** This file may be distributed and/or modified under the terms of the 3** This file may be distributed and/or modified under the terms of the
4** GNU General Public License version 2 as published by the Free Software 4** GNU General Public License version 2 as published by the Free Software
5** Foundation and appearing in the file LICENSE.GPL included in the 5** Foundation and appearing in the file LICENSE.GPL included in the
6** packaging of this file. 6** packaging of this file.
7** 7**
8** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 8** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
9** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 9** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
10** 10**
11*********************************************************************************************/ 11*********************************************************************************************/
12#include <qapplication.h> 12#include <qapplication.h>
13#include <qpixmap.h> 13#include <qpixmap.h>
14#include "keyboard.h" 14#include "keyboard.h"
15#include "keyboardimpl.h" 15#include "keyboardimpl.h"
16 16
17/* XPM */ 17/* XPM */
18static char * icon_xpm[] = { 18static const char * const icon_xpm[] = {
19"26 13 2 1", 19"26 13 2 1",
20 " c None", 20 " c None",
21 ".c #000000", 21 ".c #000000",
22" ... ... ... ... ... ... ", 22" ... ... ... ... ... ... ",
23". . . . . ", 23". . . . . ",
24". . ... .. . . ", 24". . ... .. . . ",
25". . .. . . ", 25". . .. . . ",
26" ...... ...... ... .... ", 26" ...... ...... ... .... ",
27". .. .. .. . ", 27". .. .. .. . ",
28". .. .. .. . ", 28". .. .. .. . ",
29". ... .. . ", 29". ... .. . ",
30" ...... .. ...... ", 30" ...... .. ...... ",
31". . .. . . ", 31". . .. . . ",
32". . ....... . . ", 32". . ....... . . ",
33". . . . . ", 33". . . . . ",
34" ... ... ... ... ... ... "}; 34" ... ... ... ... ... ... "};
35 35
36 36
37KeyboardImpl::KeyboardImpl() 37KeyboardImpl::KeyboardImpl()
38 : input(0), icn(0), ref(0) 38 : input(0), icn(0), ref(0)
39{ 39{
40} 40}
41 41
42KeyboardImpl::~KeyboardImpl() 42KeyboardImpl::~KeyboardImpl()
43{ 43{
44 delete input; 44 delete input;
45 delete icn; 45 delete icn;
46} 46}
47 47
48QWidget *KeyboardImpl::inputMethod( QWidget *parent, Qt::WFlags f ) 48QWidget *KeyboardImpl::inputMethod( QWidget *parent, Qt::WFlags f )
49{ 49{
50 if ( !input ) 50 if ( !input )
51 input = new Keyboard( parent, "Keyboard", f ); 51 input = new KJumpX::Keyboard( parent, "Keyboard", f );
52 return input; 52 return input;
53} 53}
54 54
55void KeyboardImpl::resetState() 55void KeyboardImpl::resetState()
56{ 56{
57 if ( input ) 57 if ( input )
58 input->resetState(); 58 input->resetState();
59} 59}
60 60
61QPixmap *KeyboardImpl::icon() 61QPixmap *KeyboardImpl::icon()
62{ 62{
63 if ( !icn ) 63 if ( !icn )
64 icn = new QPixmap( (const char **)icon_xpm ); 64 icn = new QPixmap( (const char **)icon_xpm );
65 return icn; 65 return icn;
66} 66}
67 67
68QString KeyboardImpl::name() 68QString KeyboardImpl::name()
69{ 69{
70 return qApp->translate( "InputMethods", "KJumpX" ); 70 return qApp->translate( "InputMethods", "KJumpX" );
71} 71}
72 72
73void KeyboardImpl::onKeyPress( QObject *receiver, const char *slot ) 73void KeyboardImpl::onKeyPress( QObject *receiver, const char *slot )
74{ 74{
75 if ( input ) 75 if ( input )
76 QObject::connect( input, SIGNAL(key(ushort,ushort,ushort,bool,bool)), receiver, slot ); 76 QObject::connect( input, SIGNAL(key(ushort,ushort,ushort,bool,bool)), receiver, slot );
77} 77}
78 78
79#ifndef QT_NO_COMPONENT 79#ifndef QT_NO_COMPONENT
80QRESULT KeyboardImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) 80QRESULT KeyboardImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface )
81{ 81{
82 *iface = 0; 82 *iface = 0;
83 if ( uuid == IID_QUnknown ) 83 if ( uuid == IID_QUnknown )
84 *iface = this; 84 *iface = this;
85 else if ( uuid == IID_InputMethod ) 85 else if ( uuid == IID_InputMethod )
86 *iface = this; 86 *iface = this;
87 87
88 if ( *iface ) 88 if ( *iface )
89 (*iface)->addRef(); 89 (*iface)->addRef();
90 return QS_OK; 90 return QS_OK;
91} 91}
92 92
93Q_EXPORT_INTERFACE() 93Q_EXPORT_INTERFACE()
94{ 94{
95 Q_CREATE_INSTANCE( KeyboardImpl ) 95 Q_CREATE_INSTANCE( KeyboardImpl )
96} 96}
97#endif 97#endif
diff --git a/inputmethods/kjumpx/keyboardimpl.h b/inputmethods/kjumpx/keyboardimpl.h
index a82ec4a..1ff1034 100644
--- a/inputmethods/kjumpx/keyboardimpl.h
+++ b/inputmethods/kjumpx/keyboardimpl.h
@@ -1,43 +1,51 @@
1/**************************************************************************************94x78** 1/**************************************************************************************94x78**
2** 2**
3** This file may be distributed and/or modified under the terms of the 3** This file may be distributed and/or modified under the terms of the
4** GNU General Public License version 2 as published by the Free Software 4** GNU General Public License version 2 as published by the Free Software
5** Foundation and appearing in the file LICENSE.GPL included in the 5** Foundation and appearing in the file LICENSE.GPL included in the
6** packaging of this file. 6** packaging of this file.
7** 7**
8** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 8** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
9** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 9** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
10** 10**
11*********************************************************************************************/ 11*********************************************************************************************/
12#ifndef KEYBOARDIMPL_H 12#ifndef KEYBOARDIMPL_H
13#define KEYBOARDIMPL_H 13#define KEYBOARDIMPL_H
14 14
15#include <qpe/inputmethodinterface.h> 15#include <qpe/inputmethodinterface.h>
16 16
17class Keyboard; 17namespace KJumpX
18{
19 class Keyboard;
20}
18class QPixmap; 21class QPixmap;
19 22
23namespace
24{
25
20class KeyboardImpl : public InputMethodInterface 26class KeyboardImpl : public InputMethodInterface
21{ 27{
22public: 28public:
23 KeyboardImpl(); 29 KeyboardImpl();
24 virtual ~KeyboardImpl(); 30 virtual ~KeyboardImpl();
25 31
26#ifndef QT_NO_COMPONENT 32#ifndef QT_NO_COMPONENT
27 QRESULT queryInterface( const QUuid&, QUnknownInterface** ); 33 QRESULT queryInterface( const QUuid&, QUnknownInterface** );
28 Q_REFCOUNT 34 Q_REFCOUNT
29#endif 35#endif
30 36
31 virtual QWidget *inputMethod( QWidget *parent, Qt::WFlags f ); 37 virtual QWidget *inputMethod( QWidget *parent, Qt::WFlags f );
32 virtual void resetState(); 38 virtual void resetState();
33 virtual QPixmap *icon(); 39 virtual QPixmap *icon();
34 virtual QString name(); 40 virtual QString name();
35 virtual void onKeyPress( QObject *receiver, const char *slot ); 41 virtual void onKeyPress( QObject *receiver, const char *slot );
36 42
37private: 43private:
38 Keyboard *input; 44 KJumpX::Keyboard *input;
39 QPixmap *icn; 45 QPixmap *icn;
40 ulong ref; 46 ulong ref;
41}; 47};
42 48
49} // anonymous namespace
50
43#endif 51#endif