PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Xlib: KeyEvents in Window übertragen



Bigdaddy
07-07-2004, 12:37
mahlzeit,

um mit meiner Tastatur Keycode in einen Editor zu übertragen, habe ich nun folgendes gemacht:

dpy = XOpenDisplay(NULL); // um Displayvariable zu initialisieren
XSelectInput(dpy, win, KeyPressMask) // KeyEvents für's fokussierte Fenster

so und dann verließen sie ihn etwas.

auf diesen link bin ich gestoßen:
http://www.eggdrop.ch/texts/xlib/

da steht dann z.b. das:

case KeyPress:
if (event.xkey.keycode == XKeysymToKeycode(dpy, Taste))
{
/* die Taste wurde gedrückt */
}
break;

wenn ich das so ungefähr nur ohne switch-case bei mir anwende, meckert der compiler von qt rum.
"request for member 'xkey' in 'this->QWidget::event', which is of non-aggregate type '{unknown type}'"

da hänge ich gerade fest. habe dann auch versucht mit printf() was auszugeben aber nix macht er.
hat jemand nen tipp wie ich weiter vorgehen kann. ich kann doch gar nicht mehr so weit entfernt sein von meinem ziel.

mfg bastian

Bigdaddy
07-07-2004, 13:31
ich habe gerade festgestellt, dass ich irgendwie den zeiger des fokussierten programms nicht richtig implementiere.

ich habe jetzt zu stehen:

dpy=XOpenDisplay(NULL);
XTestFakeKeyEvent(dpy, XKeysymToKeycode(dpy, XK_A), True, 0);

aber weil der zeiger dpy ja null ist und nicht den wert des fokussierten windows hat, macht er nix.

mit welcher funktion kann ich das aktuelle fokussierte fenster bestimmen.
mit XGetFocusInput() geht es irgendwie auch nicht.
ich gebe ja mit dieser funktion nur ein index (int) zurück brauche aber für den richtigen wert ne variable vom typ display. gibt es irgendeine funktion mit dem ich den index-wert in ein displaywert umwandeln kann?


besten dank!

bastian

Bigdaddy
07-07-2004, 14:40
es hat geklappt:

fehlte nur noch das flushen des speichers:

dpy=XOpenDisplay(NULL);
GetInputFocus(dpy, &current_focused_window, &revert_to);
XTestFakeKeyEvent(dpy, XKeysymToKeycode(dpy, XK_A), True, 0);
XFlush(dpy);