Привет программерам. Помогите пожалуйста начинающему. Вот код ========================================= //функция получения активного окна Window get_active_window (Display *disp) { Atom type; int format; unsigned long nitems; unsigned long bytes_after; unsigned char *data; int result; Window win=None; gint err; Atom net_active_window;
type = None;
net_active_window= XInternAtom(disp, "_NET_ACTIVE_WINDOW", False);
gdk_error_trap_push(); result = XGetWindowProperty (disp, DefaultRootWindow(disp), net_active_window, 0, 0x7fffffff, False,XA_WINDOW, &type, &format, &nitems, &bytes_after, &data);
err=gdk_error_trap_pop();
if (err!=0 || result != Success) { printf("err!=0 || result != Success\n"); return None; }
if (type != XA_WINDOW) { printf("type != XA_WINDOW\n"); XFree (data); return None; } if (data) { printf("data\n"); win= *((Window *) data); XFree (data); }
return win; } // функция посылки кода нажатой клавиши активному окну
int send_key_to_win (Window wind, KeyCode keycode, int keycode_modifiers) { int err = 0; XKeyEvent kevent;
if (!wind) { printf("Not window\n"); return -1; }
kevent.display = gdk_x11_get_default_xdisplay(); kevent.window = wind; kevent.root = gdk_x11_get_default_root_xwindow(); kevent.subwindow = None; kevent.time = CurrentTime; kevent.x = 1; kevent.y = 1; kevent.x_root = 1; kevent.y_root = 1; kevent.same_screen = TRUE; kevent.type = KeyPress; kevent.keycode = keycode; kevent.state = keycode_modifiers;
err=XSendEvent(gdk_x11_get_default_xdisplay()/*GDK_DISPLAY ()*/,wind, TRUE, KeyPressMask, (XEvent *)&kevent);
XSync(gdk_x11_get_default_xdisplay(), True);
return err; }
=========================================== так вот проблема в том что код посылается только окнам програм от любых менеджеров окон кроме KDE. Например: хочу послать некоторый текст текстовому редактору и с помошью етих функций мне получается вставить текст ис своей програмы в такие редакторы как gedit, emacs и openoffice writer и др. А вот в такие редакторы как kedit и koffice вставить не получается. Подскажите плиз как ето решить.