• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Tastaturbefehl simulieren und an eine Anwendung schicken

Hallo!

Ich habe jetzt nicht gewusst ob dieser Bereich im Forum der richtige ist. Sorry wenn dem nicht so ist.
Ich wollte fragen welche Möglichkeiten Linux bietet zum einen mittels eines Programms (Java, C++) einen Tastaturbefehl (z.B. ALT+S) an eine bereits geöffnete Anwendung zu schicken. Dabei ist wichtig dass die Anwendung zwar läuft, aber wahrscheinlich eher nicht den Focus hat wenn der Tastaturbefehl kommt.
In der Windows Welt bietet die Windows API ganz gute Möglichkeiten.
Sowas muss es ja dann für Linux auch geben denk ich mal.
Wäre für jeden Tip dankbar.

Vielen Dank!

fr3sh
 
Ich geh mal davon aus, daß Du ein fortgeschrittener Anwender bist und Dir auch klar ist, daß sowas ein Sicherheitsrisiko sein kann:
Code:
/* gcc -I/usr/X11R6/include -L/usr/X11R6/lib -o send send.c -lX11 -lXtst */

#include <stdio.h> 
#include <stdlib.h> 
#include <X11/keysym.h> 
#include <X11/extensions/XTest.h> 
 
 
int main (void)
{ 
Display* disp = XOpenDisplay( NULL ); 

if( disp == NULL )
{ 
fprintf(stderr, " could not open display\n"); 
return -1; 
} 
int i;
char *a="abäöü";
int c=0;

for (i=0;i<=4;i++)
{ 
printf("%d",*a);
if (*a==-28) {c=XK_adiaeresis;}
if (*a==-10) {c=XK_odiaeresis;}
if (*a==-4) {c=XK_udiaeresis;}
XTestFakeKeyEvent( disp, XKeysymToKeycode( disp, c), True, 0); 
XTestFakeKeyEvent( disp, XKeysymToKeycode( disp, c), False, 0);
a++;
}
 
XCloseDisplay( disp ); 
return 0; 

}
Sendet nur dahin, wo Fokus ist.

Bzgl. KDE schau Dir ansonsten doch mal kdcop an.

Gruß
 
Du hast vergessen, dass ä UTF-8 ist, und somit eigentlich zwei Bytes ist, somit *a==-28/-10/-4 nicht das richtige tun werden.
 
Das kann schon sein, hat aber nichts mit dem prinzipiellen Senden von Zeichen an ein Fenster zu tun.

@fr3sh: Zu "kdcop" gibt es auch einen Konsolenbefehl "dcop". Dabei geht es um das Fernsteuern von KDE-Anwendungen.

Außerdem hatten wir das Thema schon mal:

http://www.linux-club.de/viewtopic.php?t=70047

Viele Grüße
 
Oben