--- src.orig/kernel/qkeyboard_qws.cpp Mon Mar 18 02:11:25 2002 +++ src/kernel/qkeyboard_qws.cpp Fri Aug 30 04:28:39 2002 @@ -269,7 +269,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 @@ -394,7 +394,7 @@ bool numLock; #endif bool caps; - bool extended; + int extended; int modifiers; int prevuni; int prevkey; @@ -524,7 +524,7 @@ shift = false; alt = false; ctrl = false; - extended = false; + extended = 0; prevuni = 0; prevkey = 0; caps = FALSE; @@ -561,10 +561,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 @@ -574,7 +588,7 @@ code &= 0x7f; } - if (extended) { + if (extended == 1) { switch (code) { case 72: keyCode = Qt::Key_Up; @@ -612,6 +626,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) @@ -650,6 +690,7 @@ repeatable = FALSE; break; case 0x60: + ipaq_return_pressed = !release; keyCode = Key_Return; break; case 0x67: @@ -687,13 +728,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; @@ -803,7 +850,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 = '/'; } @@ -829,7 +876,7 @@ prevkey = prevuni = 0; } } - extended = false; + extended = 0; }