author | hash <hash> | 2002-08-21 17:54:33 (UTC) |
---|---|---|
committer | hash <hash> | 2002-08-21 17:54:33 (UTC) |
commit | 0a61be3b42b4b152468a5ef2def4a18baeda9b4f (patch) (side-by-side diff) | |
tree | aa82e34a4d4984ae334ffbd31582ac60a655e499 | |
parent | 24ca0a148bdb23f5c890661dc2edac7ba6120c67 (diff) | |
download | opie-0a61be3b42b4b152468a5ef2def4a18baeda9b4f.zip opie-0a61be3b42b4b152468a5ef2def4a18baeda9b4f.tar.gz opie-0a61be3b42b4b152468a5ef2def4a18baeda9b4f.tar.bz2 |
ctrl and alt keys should work now
-rw-r--r-- | inputmethods/multikey/configdlg.cpp | 1 | ||||
-rw-r--r-- | inputmethods/multikey/keyboard.cpp | 8 |
2 files changed, 8 insertions, 1 deletions
diff --git a/inputmethods/multikey/configdlg.cpp b/inputmethods/multikey/configdlg.cpp index 89b713e..a9137b9 100644 --- a/inputmethods/multikey/configdlg.cpp +++ b/inputmethods/multikey/configdlg.cpp @@ -1,68 +1,69 @@ /* * TODO * make a font selection thing (size too) * make a cursor thing + * add meta key support for german, etc * * * */ #include <iostream.h> #include <qpe/qpeapplication.h> #include <qpe/config.h> #include <qwidget.h> #include <qdialog.h> #include <qtabwidget.h> #include <qvbox.h> #include <qgrid.h> #include <qgroupbox.h> #include <qlabel.h> #include <qcheckbox.h> #include <qsizepolicy.h> #include <qpushbutton.h> #include <qlistbox.h> #include <qstringlist.h> #include <opie/ofiledialog.h> #include <opie/colordialog.h> #include <qdir.h> #include <qfileinfo.h> #include "configdlg.h" #include "keyboard.h" // ConfigDlg::ConfigDlg() {{{1 ConfigDlg::ConfigDlg () : QTabWidget () { setCaption( tr("Multikey Configuration") ); Config config ("multikey"); config.setGroup("keymaps"); QString current_map = config.readEntry("current", 0); /* * 'general config' tab */ QVBox *gen_box = new QVBox (this); gen_box->setMargin(3); addTab(gen_box, tr("General Settings")); QGroupBox *map_group = new QGroupBox (2, Qt::Vertical, tr("Keymap File"), gen_box); keymaps = new QListBox (map_group); keymaps->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); QString cur(tr("Current Language")); keymaps->insertItem(cur); keymaps->setSelected(0, true); QDir map_dir(QPEApplication::qpeDir() + "/share/multikey", "*.keymap"); default_maps = map_dir.entryList(); // so i can access it in other places for (uint i = 0; i <map_dir.count(); i++) { keymaps->insertItem(map_dir.absPath() + "/" + map_dir[i]); if (map_dir.absPath() + "/" + map_dir[i] == current_map) { keymaps->setSelected(i + 1, true); } diff --git a/inputmethods/multikey/keyboard.cpp b/inputmethods/multikey/keyboard.cpp index 7334c1c..949164a 100644 --- a/inputmethods/multikey/keyboard.cpp +++ b/inputmethods/multikey/keyboard.cpp @@ -297,129 +297,135 @@ void Keyboard::mousePressEvent(QMouseEvent *e) configdlg->showMaximized(); configdlg->show(); configdlg->raise(); } } else if (qkeycode == Qt::Key_Control) { ctrl = keys->pressedPtr(row, col); need_repaint = TRUE; *ctrl = !keys->pressed(row, col); } else if (qkeycode == Qt::Key_Alt) { alt = keys->pressedPtr(row, col); need_repaint = TRUE; *alt = !keys->pressed(row, col); } else if (qkeycode == Qt::Key_Shift) { need_repaint = TRUE; if (shift) { *shift = 0; shift = 0; } else { shift = keys->pressedPtr(row, col); *shift = 1; if (lock) { *lock = 0; lock = 0; } } } else if (qkeycode == Qt::Key_CapsLock) { need_repaint = TRUE; if (lock) { *lock = 0; lock = 0; } else { lock = keys->pressedPtr(row, col);; *lock = 1; if (shift) { *shift = 0; shift = 0; } } } } else { // normal char if ((shift || lock) && keys->shift(unicode)) { unicode = keys->shift(unicode); } } // korean parsing if (keys->lang == "ko") { unicode = parseKoreanInput(unicode); } modifiers = (ctrl ? Qt::ControlButton : 0) | (alt ? Qt::AltButton : 0); - emit key(unicode, qkeycode, modifiers, true, false); + if ('A' <= unicode && unicode <= 'z' && modifiers) { + + qkeycode = QChar(unicode).upper(); + unicode = qkeycode - '@'; + } + + QWSServer::sendKeyEvent(unicode, qkeycode, modifiers, true, false); // pickboard stuff if (usePicks) { KeyboardConfig *dc = picks->dc; if (dc) { if (qkeycode == Qt::Key_Backspace) { dc->input.remove(dc->input.last()); // remove last input dc->decBackspaces(); } else if ( qkeycode == Qt::Key_Return || QChar(unicode).isPunct() || QChar(unicode).isSpace() || unicode == 0) { dc->input.clear(); dc->resetBackspaces(); } else { dc->add(QString(QChar(unicode))); dc->incBackspaces(); } } picks->repaint(); } // painting pressed = TRUE; pressedKeyRow = row; pressedKeyCol = col; if (need_repaint) repaint(FALSE); else { // just paint the one key pressed QPainter p(this); drawKeyboard(p, row, col); } if (useRepeat) repeatTimer->start( 800 ); //pressTid = startTimer(80); } /* Keyboard::mouseReleaseEvent {{{1 */ void Keyboard::mouseReleaseEvent(QMouseEvent*) { pressed = FALSE; //if ( pressTid == 0 ) #if defined(Q_WS_QWS) || defined(_WS_QWS_) if ( unicode != -1 ) { emit key( unicode, qkeycode, modifiers, false, false ); repeatTimer->stop(); } #endif if (shift && unicode != 0) { *shift = 0; // unpress shift key shift = 0; // reset the shift pointer repaint(FALSE); } else |