diff options
author | John Fultz <jfultz@wolfram.com> | 2014-09-08 14:41:31 -0500 |
---|---|---|
committer | John Fultz <jfultz@wolfram.com> | 2014-09-08 14:41:31 -0500 |
commit | f87e47c7dc374735e284e5a61d62c9adb13b0021 (patch) | |
tree | 1311ce16007bc885f5ade8cc2d88292c6e3355bd /quacker/graphicalboard.cpp | |
parent | 33fed721c3ad5aff03a4398bd33cf15bb96434d4 (diff) |
Add more international keyboard support.
Haven't seen the last of this, yet...combinining keystrokes still
don't seem to be working.
Diffstat (limited to 'quacker/graphicalboard.cpp')
-rw-r--r-- | quacker/graphicalboard.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/quacker/graphicalboard.cpp b/quacker/graphicalboard.cpp index b3af1ab..0b273f6 100644 --- a/quacker/graphicalboard.cpp +++ b/quacker/graphicalboard.cpp @@ -572,15 +572,19 @@ void GraphicalBoardFrame::keyPressEvent(QKeyEvent *event) break; case Append: - if (event->modifiers() & Qt::AltModifier && event->modifiers() & Qt::ControlModifier) + if (event->text().isEmpty() || + (event->text().at(0) >= 0xa8 && event->text().at(0) <= 0xb8) || // combining character + (event->text().at(0) >= 0x2b9 && event->text().at(0) <= 0x2ff)) // combining character + break; // let AltGr (Ctrl+Alt) and other composite keyboard events slip through + else if (event->modifiers() & Qt::AltModifier || event->modifiers() & Qt::ControlModifier) { - if (event->text().isEmpty()) - break; // let AltGr (Ctrl+Alt) events slip through - } - else if (event->modifiers() & Qt::AltModifier || event->modifiers() & Qt::ControlModifier || event->text().isEmpty()) - { - event->ignore(); - return; + if (!event->text().isEmpty() && + ((event->text().at(0) >= 'a' && event->text().at(0) <= 'z') || + (event->text().at(0) >= 'A' && event->text().at(0) <= 'Z'))) + { + event->ignore(); + return; + } } appendHandler(event->text(), event->modifiers() & Qt::ShiftModifier); |