summaryrefslogtreecommitdiff
authorsandman <sandman>2002-06-01 21:35:54 (UTC)
committer sandman <sandman>2002-06-01 21:35:54 (UTC)
commit4f5fdda25657f079b5937cbd4b588466c2298304 (patch) (side-by-side diff)
tree43bb05ba0f831306b43c853aa76ced81f591effe
parent508c023b2be72f82da5c2d41bc077238a279a206 (diff)
downloadopie-4f5fdda25657f079b5937cbd4b588466c2298304.zip
opie-4f5fdda25657f079b5937cbd4b588466c2298304.tar.gz
opie-4f5fdda25657f079b5937cbd4b588466c2298304.tar.bz2
Patch to src/kernel/qkeyboard_qws.cpp to:
a) support *all* PC/AT type scan codes (so micro keyboard should be fully functional b) Fix the sticky action key bug. (this is a problem with the action key scan code (0x60) and the key release flag (0x80). 0x60|0x80 = 0xe0 and this is the extended mode 1 modifier and not "release action key". Simple workaround: remember if action key is depressed.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--qt/qte232-for-qpe150-keyboard.patch154
1 files changed, 154 insertions, 0 deletions
diff --git a/qt/qte232-for-qpe150-keyboard.patch b/qt/qte232-for-qpe150-keyboard.patch
new file mode 100644
index 0000000..5e212e9
--- a/dev/null
+++ b/qt/qte232-for-qpe150-keyboard.patch
@@ -0,0 +1,154 @@
+--- src/kernel/qkeyboard_qws.cpp.orig Thu May 23 16:17:43 2002
++++ src/kernel/qkeyboard_qws.cpp Sat Jun 1 23:22:48 2002
+@@ -266,7 +266,7 @@
+ { Qt::Key_O, 'o' , 'O' , 'O'-64 },
+ { Qt::Key_P, 'p' , 'P' , 'P'-64 },
+ { Qt::Key_BraceLeft, '[' , '{' , 0xffff },
+- { Qt::Key_Escape, ']' , '}' , 0xffff },
++ { Qt::Key_BraceRight, ']' , '}' , 0xffff },
+ { Qt::Key_Return, 13 , 13 , 0xffff },
+ { Qt::Key_Control, 0xffff , 0xffff , 0xffff },
+ { Qt::Key_A, 'a' , 'A' , 'A'-64 }, // 30
+@@ -391,7 +391,7 @@
+ bool numLock;
+ #endif
+ bool caps;
+- bool extended;
++ int extended;
+ int modifiers;
+ int prevuni;
+ int prevkey;
+@@ -521,7 +521,7 @@
+ shift = false;
+ alt = false;
+ ctrl = false;
+- extended = false;
++ extended = 0;
+ prevuni = 0;
+ prevkey = 0;
+ caps = FALSE;
+@@ -558,10 +558,24 @@
+ int keyCode = Qt::Key_unknown;
+ bool release = false;
+ int keypad = 0;
++#if defined(QT_QWS_IPAQ)
++ static int ipaq_return_pressed = false; // iPAQ Action Key has ScanCode 0x60: 0x60|0x80 = 0xe0 == extended mode 1 !
++#endif
++
+ #if !defined(QT_QWS_CUSTOM)
+- if (code == 224) {
++ if ((code == 224)
++#if defined(QT_QWS_IPAQ)
++ && !ipaq_return_pressed
++#endif
++ )
++ {
+ // extended
+- extended = true;
++ extended = 1;
++ return;
++ }
++ else if (code == 225) {
++ // extended 2
++ extended = 2;
+ return;
+ }
+ #endif
+@@ -571,7 +585,7 @@
+ code &= 0x7f;
+ }
+
+- if (extended) {
++ if (extended == 1) {
+ switch (code) {
+ case 72:
+ keyCode = Qt::Key_Up;
+@@ -609,6 +623,32 @@
+ case 53:
+ keyCode = Qt::Key_Slash;
+ break;
++ case 0x1d:
++ keyCode = Qt::Key_Control;
++ break;
++ case 0x2a:
++ keyCode = Qt::Key_SysReq;
++ break;
++ case 0x38:
++ keyCode = Qt::Key_Alt;
++ break;
++ case 0x5b:
++ keyCode = Qt::Key_Super_L;
++ break;
++ case 0x5c:
++ keyCode = Qt::Key_Super_R;
++ break;
++ case 0x5d:
++ keyCode = Qt::Key_Menu;
++ break;
++ }
++ } else if (extended == 2) {
++ switch (code) {
++ case 0x1d:
++ return;
++ case 0x45:
++ keyCode = Qt::Key_Pause;
++ break;
+ }
+ } else {
+ #if defined(QT_QWS_CUSTOM)
+@@ -647,6 +687,7 @@
+ repeatable = FALSE;
+ break;
+ case 0x60:
++ ipaq_return_pressed = !release;
+ keyCode = Key_Return;
+ break;
+ case 0x67:
+@@ -684,13 +725,19 @@
+ else
+ repeater->stop();
+ #endif
++
++ /*
++ Translate shift+Key_Tab to Key_Backtab
++ */
++ if (( keyCode == Key_Tab ) && shift )
++ keyCode = Key_Backtab;
+ }
+
+ /*
+ Keypad consists of extended keys 53 and 28,
+ and non-extended keys 55 and 71 through 83.
+ */
+- if ( extended ? (code == 53 || code == 28) :
++ if ((extended == 1) ? (code == 53 || code == 28) :
+ (code == 55 || ( code >= 71 && code <= 83 )) )
+ keypad = Qt::Keypad;
+
+@@ -751,7 +798,7 @@
+ bool bShift = shift;
+ int unicode = 0;
+ if (code < keyMSize) {
+- if (!extended) {
++ if (extended == 0) {
+ bool bCaps = caps ^ shift;
+ #if defined(QT_QWS_CUSTOM)
+ if (fn) {
+@@ -790,7 +837,7 @@
+ unicode = QWSServer::keyMap()[code].shift_unicode ? QWSServer::keyMap()[code].shift_unicode : 0xffff;
+ else
+ unicode = QWSServer::keyMap()[code].unicode ? QWSServer::keyMap()[code].unicode : 0xffff;
+- } else {
++ } else if (extended == 1) {
+ if ( code == 53 )
+ unicode = '/';
+ }
+@@ -816,7 +863,7 @@
+ prevkey = prevuni = 0;
+ }
+ }
+- extended = false;
++ extended = 0;
+ }
+
+