Thread Gnome Tastatureingaben simulieren? (1 answers)
Opened by deko at 2010-06-09 20:28

topeg
 2010-06-10 00:17
#138168 #138168
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
es gibt eine Reihe von Programmen, mit denen man Tastatur/Maus/Window-Manager Events an ein Fenster senden kann. Das was du wohl am ehesten suchst ist wohl: xdotool

Hier ein Beispiel wie man es verwenden kann:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/perl
use strict;
use warnings;

# Programm das gestartet werden soll:
my $app='/usr/bin/leafpad';
# "leafpad" ist ein kleiner schnell gestarteter Texteditor

# suche nach dem Fenser über die Processid
my $search_cmd='/usr/bin/xdotool search --onlyvisible --pid %u';

# Tastatur Kommando senden
my $kbd_send_cmd=q(/usr/bin/xdotool type --window %u '%s');

# Kindprozess erzeugen
# dabei sich die ProzessID merken
# man kann sich auch zu laufenden Prozessen die ID Holen
# Doch so ist es für ein Beispiel einfacher.
$SIG{CHLD}='IGNORE';
my $pid=fork;
exec($app) or die "ERROR runn $app\n" if(defined($pid) && ! $pid);
die("ERROR FORK\n") unless($pid);

# warten bis das Fenster erzeugt wurde
sleep(2);

# nachschauen ob der prozess noch läuft
die("ERROR $app (PID: $pid) Exit\n") if(kill(0,$pid)!=1);

# Das Fenster suchen
# es kann sein, dass ein Programm mehrer Fenster öffnen
# Das müsste eventuell abgefangen werden.
# Man bekommt eine/mehrere FensterIDs zurück
my $cmd=sprintf($search_cmd,$pid);
my $winid=qx($cmd);
chomp($winid);

# habe wir ein Fenster?
if($winid)
{
  # Testausgabe
  print "FOUND WINID:$winid for $app (PID: $pid)\n";

  # Text an das Fenser absenden
  $cmd=sprintf($kbd_send_cmd,$winid,"HALLO WELT");
  system($cmd);
}
else
{ die("ERROR get WinID for $app (PID: $pid)\n"); }


Wenn du mehr über die Hintergründe wissen willst, kann ich dir ein Beispiel posten, das nur Perl und die X11lib nutzt. Das ist aber für Anfänger nichts. :-)

View full thread Gnome Tastatureingaben simulieren?