sieht irgendjemand einen offensichtlichen Fehler in folgendem Codestück?
Code: Alles auswählen
void myWidget::keyPressEvent ( QKeyEvent * e ) {
cout << e->text() << endl;
}
bool myWidget::x11Event ( XEvent * xe) {
// QWidget::x11Event( XEvent * )
char buffer[20];
int bufsize = 20;
XComposeStatus compose;
KeySym keysym;
int charcount;
switch(xe->type) {
case KeyPress:
charcount = XLookupString((XKeyEvent*) xe, buffer, bufsize, &keysym, &compose);
cout << "keysym: " << keysym << endl;
cout << "buffer: " << buffer << endl;
break;
case MappingNotify:
//XRefreshKeyboardMappint(xe); // Keyboard was remapped!
break;
}
//return FALSE;
}
Leider führt es dazu, dass offenbar die switch-Anweisung gar nicht durchlaufen wird und der Event nur von qt verabeitet wird ( s.o. keyPressEvent ).
Wird 'FALSE' nicht zurückgegeben, dann wird kein Event mehr von QT verarbeitet. Das zeigt sich z.B. darin, dass ein Klick auf das x in der Fensterleiste nichts bewirkt. Allerdings wird dann die switch-Anweisung durchlaufen und die untere Funktion verabreitet den Event.
Leuchtet mir auf Anhieb nicht ein!?
xlib-docu gibt es hier: http://tronche.com/gui/x/xlib/introduction
cu,
pumbah