summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Fultz <jfultz@wolfram.com>2014-09-08 14:41:31 -0500
committerJohn Fultz <jfultz@wolfram.com>2014-09-08 14:41:31 -0500
commitf87e47c7dc374735e284e5a61d62c9adb13b0021 (patch)
tree1311ce16007bc885f5ade8cc2d88292c6e3355bd
parent33fed721c3ad5aff03a4398bd33cf15bb96434d4 (diff)
Add more international keyboard support.
Haven't seen the last of this, yet...combinining keystrokes still don't seem to be working.
-rw-r--r--quacker/graphicalboard.cpp20
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);