-rw-r--r-- | inputmethods/multikey/keyboard.cpp | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/inputmethods/multikey/keyboard.cpp b/inputmethods/multikey/keyboard.cpp index d5a7afd..7098a6b 100644 --- a/inputmethods/multikey/keyboard.cpp +++ b/inputmethods/multikey/keyboard.cpp @@ -297,24 +297,42 @@ void Keyboard::mousePressEvent(QMouseEvent *e) connect(configdlg, SIGNAL(reloadKeyboard()), this, SLOT(reloadKeyboard())); 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); + + if (ctrl) { + + *ctrl = 0; + ctrl = 0; + + } else { + + 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); + + if (alt) { + *alt = 0; + alt = 0; + + } else { + + 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; } |