Sto cercando di utilizzare C e Xlib per inviare un evento di pressione di un tasto falso alla finestra con messa a fuoco, ecco il mio codice:invio falso evento keypress a una finestra usando Xlib
#include <X11/Xlib.h>
#include <X11/keysymdef.h>
#define XK_A 0x041
int main()
{
Display *display = XOpenDisplay(NULL);
//find out window with current focus:
Window winfocus;
int revert;
XGetInputFocus(display, &winfocus, &revert);
//send key event to taht window
KeySym sym;
sym=XStringToKeysym("a");
//event definition
XKeyEvent event;
event.type=KeyPress;
event.keycode=XK_A;
event.display=display;
event.root=winfocus;
XSendEvent(display,winfocus,True,KeyPressMask,(XEvent *)&event);
return 0;
}
Sto cercando di mantenere il codice più semplice possibile, voglio inviare la lettera a alla finestra attiva penso che sto facendo qualcosa di sbagliato se
grazie
ho provato il seguente codice:
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xresource.h>
#include <X11/Intrinsic.h>
#include <X11/extensions/XTest.h>
#include <unistd.h>
int main()
{
Display *dis;
dis = XOpenDisplay(NULL);
KeyCode modcode = 0; //init value
modcode = XKeysymToKeycode(dis, XK_B);
XTestFakeKeyEvent(dis, modcode, True, 0);
XFlush(dis);
sleep(1);
XTestFakeKeyEvent(dis, modcode, False, 0);
XFlush(dis);
modcode = XKeysymToKeycode(dis, XK_A);
XTestFakeKeyEvent(dis, modcode, True, 0);
XFlush(dis);
return 0;
}
che preme ripetutamente il tasto a, io sono in grado di rilasciare tale pulsante, se io non utilizzare la funzione di sonno, io sono in grado di digitare la lettera in una volta e poi rilasciare il tasto premuto