summaryrefslogtreecommitdiff
authorhash <hash>2002-08-22 05:50:34 (UTC)
committer hash <hash>2002-08-22 05:50:34 (UTC)
commit4c02921ddab3dd8b48d7d54a0c09e8f4ca71efb3 (patch) (side-by-side diff)
treeaeada387b0a02e5cbdb409309a47a36649938b95
parentea0d66f137984689c4d4ef6da7dd4b7323760e8c (diff)
downloadopie-4c02921ddab3dd8b48d7d54a0c09e8f4ca71efb3.zip
opie-4c02921ddab3dd8b48d7d54a0c09e8f4ca71efb3.tar.gz
opie-4c02921ddab3dd8b48d7d54a0c09e8f4ca71efb3.tar.bz2
added meta key support for maps like german and jumpx
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--inputmethods/multikey/keyboard.cpp98
-rw-r--r--inputmethods/multikey/keyboard.h3
2 files changed, 93 insertions, 8 deletions
diff --git a/inputmethods/multikey/keyboard.cpp b/inputmethods/multikey/keyboard.cpp
index 7098a6b..74c99c7 100644
--- a/inputmethods/multikey/keyboard.cpp
+++ b/inputmethods/multikey/keyboard.cpp
@@ -43,4 +43,4 @@
Keyboard::Keyboard(QWidget* parent, const char* _name, WFlags f) :
- QFrame(parent, _name, f), shift(0), lock(0), ctrl(0),
- alt(0), useLargeKeys(TRUE), usePicks(0), useRepeat(0), pressedKeyRow(-1), pressedKeyCol(-1),
+ QFrame(parent, _name, f), shift(0), lock(0), ctrl(0), alt(0), meta(0),
+ useLargeKeys(TRUE), usePicks(0), useRepeat(0), pressedKeyRow(-1), pressedKeyCol(-1),
unicode(-1), qkeycode(0), modifiers(0), schar(0), mchar(0), echar(0),
@@ -184,6 +184,13 @@ void Keyboard::drawKeyboard(QPainter &p, int row, int col)
p.setPen(textcolor);
- if (!pix)
+ if (!pix) {
+ if (shift || lock)
+ c = keys->shift(c);
+ if (meta) {
+
+ c = keys->meta(c);
+ }
p.drawText(x, y,
- defaultKeyWidth * keyWidth, keyHeight,
- AlignCenter, ((shift || lock) && keys->shift(c)) ? (QChar)keys->shift(c) : (QChar)c);
+ defaultKeyWidth * keyWidth + 3, keyHeight,
+ AlignCenter, (QChar)c);
+ }
else
@@ -227,6 +234,10 @@ void Keyboard::drawKeyboard(QPainter &p, int row, int col)
if (!pix) {
- p.setPen(textcolor);
+ if ((shift || lock) && keys->shift(c))
+ c = keys->shift(c);
+ else if (meta && keys->meta(c))
+ c = keys->meta(c);
+
p.drawText(x, y,
- keyWidthPix, keyHeight,
- AlignCenter, ((shift || lock) && keys->shift(c)) ? (QChar)keys->shift(c) : (QChar)c);
+ defaultKeyWidth * keyWidth + 3, keyHeight,
+ AlignCenter, (QChar)c);
}
@@ -346,2 +357,7 @@ void Keyboard::mousePressEvent(QMouseEvent *e)
}
+ if (meta) {
+
+ *meta = 0;
+ meta = 0;
+ }
@@ -362,3 +378,37 @@ void Keyboard::mousePressEvent(QMouseEvent *e)
}
+ if (meta) {
+
+ *meta = 0;
+ meta = 0;
+ }
+
+ } else if (qkeycode == Qt::Key_Meta) {
+ need_repaint = TRUE;
+
+ if (meta) {
+ *meta = 0;
+ meta = 0;
+
+ } else {
+
+ meta = keys->pressedPtr(row, col);
+ need_repaint = TRUE;
+ *meta = !keys->pressed(row, col);
+ }
+
+ if (shift) {
+
+ *shift = 0;
+ shift = 0;
+
+ }
+ if (lock) {
+
+ *lock = 0;
+ lock = 0;
+
+ }
+ // dont need to emit this key... acts same as alt
+ qkeycode = 0;
}
@@ -370,2 +420,5 @@ void Keyboard::mousePressEvent(QMouseEvent *e)
}
+ if (meta && keys->meta(unicode)) {
+ unicode = keys->meta(unicode);
+ }
}
@@ -449,2 +502,7 @@ void Keyboard::mouseReleaseEvent(QMouseEvent*)
+ } else if (meta && unicode != 0) {
+
+ *meta = 0;
+ meta = 0;
+ repaint(FALSE);
}
@@ -1048,2 +1106,15 @@ void Keys::setKeysFromFile(const char * filename) {
+ // meta key map
+ else if (buf.contains(QRegExp("^\\s*m\\s+[0-9a-fx]+\\s+[0-9a-fx]+\\s*$", FALSE, FALSE))) {
+
+ QTextStream tmp (buf, IO_ReadOnly);
+ ushort lower, shift;
+ QChar m;
+ tmp >> m >> lower >> shift;
+
+ metaMap.insert(lower, shift);
+
+ buf = t.readLine();
+ }
+
// other variables like lang & title
@@ -1171,2 +1242,13 @@ ushort Keys::shift(const ushort uni) {
+ushort Keys::meta(const ushort uni) {
+
+ if (metaMap[uni]) {
+
+ return metaMap[uni];
+ }
+ else
+ return 0;
+
+}
+
bool *Keys::pressedPtr(const int row, const int col) {
diff --git a/inputmethods/multikey/keyboard.h b/inputmethods/multikey/keyboard.h
index dc50e55..b692975 100644
--- a/inputmethods/multikey/keyboard.h
+++ b/inputmethods/multikey/keyboard.h
@@ -64,2 +64,3 @@ public:
ushort shift(const ushort);
+ ushort meta(const ushort);
QPixmap *pix(const int row, const int col);
@@ -87,2 +88,3 @@ private:
QMap<ushort,ushort> shiftMap;
+ QMap<ushort,ushort> metaMap;
@@ -129,2 +131,3 @@ private:
bool *alt;
+ bool *meta;
uint useLargeKeys:1;