x11Event

Alles rund um die Programmierung mit Qt
Antworten
pumbah
Beiträge: 31
Registriert: 19. August 2005 21:13

x11Event

Beitrag von pumbah »

Hi @ forum,

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;
}

Folgender Code sollte den KeyPressEvent verarbeiten und den entsprechenden Keycode bzw. KeySym (Key Symbol unter x11) liefern. Das ganze sollte geschehen, bevor der Event an die Eventverarbeitung von qt weitergereicht wird. Das geschieht dann, wenn FALSE zurückgegeben wird.

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
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Re: x11Event

Beitrag von macman »

Probier's mal mit xe->type() in der switch-Anweisung.
pumbah
Beiträge: 31
Registriert: 19. August 2005 21:13

Beitrag von pumbah »

XEvent ist eine Struktur, insofern dürfte das nichts ändern. Aber versuchen werde ichs.

cu,

pumbah
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Ups, überlesen. XEvent gibt es bei mir nicht, aber beim winEventFilter ist es ähnlich. Hast Du denn inzwischen eine Lösung gefunden?
Antworten