- if ((key > WXK_ESCAPE) &&
- (key != WXK_DELETE) && (key < 255) &&
- !evt.ControlDown() && !evt.AltDown()) {
-
- m_swx->DoAddChar(key);
- }
- else {
- evt.Skip();
+ switch (key) {
+ // Special handling for charcters that must be typed with AltGr down on
+ // foreign keyboards. (Comes to us as Ctrl+Alt, and so would get
+ // filtered out by the default case below.)
+ //
+ // There should be a better way to do this...
+ //
+ case '\\':
+ case '|':
+ case '@':
+ case '#':
+ case '¬':
+ case '[':
+ case ']':
+ case '{':
+ case '}':
+ case '?':
+ m_swx->DoAddChar(key);
+ break;
+
+ default:
+ if ((key > WXK_ESCAPE) && (key != WXK_DELETE) && (key < 255) &&
+ !evt.ControlDown() && !evt.AltDown()) {
+
+ m_swx->DoAddChar(key);
+ }
+ else {
+ evt.Skip();
+ }