pulp
23-08-2003, 00:51
hi,
ich versuche mit XSendEvent und mit XTestFakeKeyEvent
einen tastendruck an ein anderes fenster zu schicken. das program kann man compileren, allerdings kommt kein event an ....
ich habe es mit xmms, xev und einem editor getestet es passiert einfach nix !
ich will wenn es geht: "wine xyz.exe" ansprechen also so mit pipe geht nicht.
da hab ich den code her: http://member.nifty.ne.jp/tsato/xvkbd/events.html
wäre schön wenn das sich mal jemand anschaut
gruss und danke pulp
#include <stdio.h>
#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>
#include <X11/Xatom.h>
#include <X11/keysym.h>
#include <unistd.h>
#include <X11/extensions/XTest.h>
int main()
{
Window win;
Window windest;
Display *disp;
int ret;
XKeyEvent event;
disp = XOpenDisplay(NULL);
XGetInputFocus(disp,&win,&ret); //fuer event.root;
event.display = disp;
event.root =win ;
event.subwindow = None;
event.time = CurrentTime;
event.x = 1;
event.y = 1;
event.x_root = 1;
event.y_root = 1;
event.same_screen = True;
event.type = KeyPress;
event.keycode = 44; //müsste "j" sein (um mit xmms zu testen, dann müsste "Jump to file aufgehen"
usleep(1000000*10); // 10 sec warten um ein anderes fenster anzuclicken
// das fenster holen was gerade den focus hat
XGetInputFocus(disp,&windest,&ret);
event.window = windest;
// erster versuch...
XSendEvent(event.display, event.window, True,KeyPressMask, (XEvent *) &event);
// zweiter versuch...
XTestFakeKeyEvent(disp, 44, True, 0);
return 1;
Makefile:
all: Xlib_Beginner.o link
Xlib_Beginner.o: Xlib_Beginner.c
gcc -c Xlib_Beginner.c -I/usr/X11R6/include
link: Xlib_Beginner.o
gcc Xlib_Beginner.o -L/usr/X11R6/lib -lX11 -lXtst -ldl -o Xlib_Beginner
clean:
rm Xlib_Beginner.o Xlib_Beginner
ich versuche mit XSendEvent und mit XTestFakeKeyEvent
einen tastendruck an ein anderes fenster zu schicken. das program kann man compileren, allerdings kommt kein event an ....
ich habe es mit xmms, xev und einem editor getestet es passiert einfach nix !
ich will wenn es geht: "wine xyz.exe" ansprechen also so mit pipe geht nicht.
da hab ich den code her: http://member.nifty.ne.jp/tsato/xvkbd/events.html
wäre schön wenn das sich mal jemand anschaut
gruss und danke pulp
#include <stdio.h>
#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>
#include <X11/Xatom.h>
#include <X11/keysym.h>
#include <unistd.h>
#include <X11/extensions/XTest.h>
int main()
{
Window win;
Window windest;
Display *disp;
int ret;
XKeyEvent event;
disp = XOpenDisplay(NULL);
XGetInputFocus(disp,&win,&ret); //fuer event.root;
event.display = disp;
event.root =win ;
event.subwindow = None;
event.time = CurrentTime;
event.x = 1;
event.y = 1;
event.x_root = 1;
event.y_root = 1;
event.same_screen = True;
event.type = KeyPress;
event.keycode = 44; //müsste "j" sein (um mit xmms zu testen, dann müsste "Jump to file aufgehen"
usleep(1000000*10); // 10 sec warten um ein anderes fenster anzuclicken
// das fenster holen was gerade den focus hat
XGetInputFocus(disp,&windest,&ret);
event.window = windest;
// erster versuch...
XSendEvent(event.display, event.window, True,KeyPressMask, (XEvent *) &event);
// zweiter versuch...
XTestFakeKeyEvent(disp, 44, True, 0);
return 1;
Makefile:
all: Xlib_Beginner.o link
Xlib_Beginner.o: Xlib_Beginner.c
gcc -c Xlib_Beginner.c -I/usr/X11R6/include
link: Xlib_Beginner.o
gcc Xlib_Beginner.o -L/usr/X11R6/lib -lX11 -lXtst -ldl -o Xlib_Beginner
clean:
rm Xlib_Beginner.o Xlib_Beginner