ubuntuusers.de

Tasten-Simulation

Status: Ungelöst | Ubuntu-Version: Ubuntu 9.10 (Karmic Koala)
Antworten |

Del_Pierro

Anmeldungsdatum:
28. Oktober 2008

Beiträge: 106

Hallo.

Ich hätte mal eine Frage: Ist es möglich, den Druck einer (oder mehrerer) Tasten zu simulieren, also dass der Computer das Signal bekommt, dass z.B. die Tasten "SHIFT" + "A" gedrückt wurden, ohne dass man sie reel an der Tastatur drückt? Und könnte man so etwas dann auch noch einspeichern, also dass man eine bestimmte Abfolge an Tasten-Simulationen vorprogrammiert?

Freue mich auf eure Antworten!

Grüße

DollaS

Anmeldungsdatum:
28. April 2009

Beiträge: 201

So was in der Art nennt sich Macro!

Del_Pierro

(Themenstarter)

Anmeldungsdatum:
28. Oktober 2008

Beiträge: 106

DollaS schrieb:

So was in der Art nennt sich Macro!

In wiefern "so was in der Art"? Und wo kann ich es finden? Danke

Del_Pierro

(Themenstarter)

Anmeldungsdatum:
28. Oktober 2008

Beiträge: 106

okay, habe es jetzt gefunden ("xmacro").

Aber wie in alles in der Welt bediene ich es. Dokumentationen scheint es ja keine ausführlichen darüber zu geben bis auf das Wenige bei Sourceforge: http://xmacro.sourceforge.net/

Wäre sehr dankbar wenn mir das jemand erklären könnte, am besten mit Beispiel!

Vielen Dank!

DollaS

Anmeldungsdatum:
28. April 2009

Beiträge: 201

http://forum.ubuntuusers.de/topic/gibt-es-einen-macro-recorder-unter-gnome/#post-2162462

Vielleicht hilft dir das ja weiter! Da wurden ein ähnliches Problem behandelt!

Del_Pierro

(Themenstarter)

Anmeldungsdatum:
28. Oktober 2008

Beiträge: 106

DollaS schrieb:

http://forum.ubuntuusers.de/topic/gibt-es-einen-macro-recorder-unter-gnome/#post-2162462

Vielleicht hilft dir das ja weiter! Da wurden ein ähnliches Problem behandelt!

Viel mehr, als dass es eben auch noch Xnee gibt, kann ich aus der Diskussion momentan nicht herauslesen. Und Xnee ist mir auch ein Rätsel, d.h. selbst mit Dokumentation (http://itupw056.itu.chalmers.se/xnee/doc/xnee.html) verstehe ich höchstens Bahnhof. Bin in dem Fall wohl schwer von Begriff...

Wäre froh wenn mir jemand helfen könnte!

Thorsten_Reinbold Team-Icon

Anmeldungsdatum:
10. Juli 2006

Beiträge: 4784

Schau doch mal hier rein! Hat mir perfekt geholfen.

Del_Pierro

(Themenstarter)

Anmeldungsdatum:
28. Oktober 2008

Beiträge: 106

Thorsten Reinbold schrieb:

Schau doch mal hier rein! Hat mir perfekt geholfen.

Das ist DER Hinweis, den ich gebraucht habe, vielen Dank!

Für alle nochmal kurz als Beispiel: Wenn wir z.B. immer wieder hintereinander die Taste "x" drücken lassen wollen, dann könnte das z.B. so aussehen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/bash
xdotool windowactivate windowid

while true
	do
	xdotool keydown "x"
	xdotool keyup "x"
	sleep 2
done

exit 0

Das windowid in Zeile 2 muss durch die ID des gewünschten Fensters ersetzt werden, abzufragen mittels des Programms xwininfo.

Ich habe in Zeile 7 noch eine Verzögerung eingebaut, die kann man aber auch weglassen, je nach Bedarf. In meinem Fall würde die gewünschte Taste jetzt alle 2 Sekunden gedrückt (sleep 2 für das 2-sekündige Warten). Das ganze muss in einer .sh-Datei gespeichert werden und dann ausführbar gemacht werden (chmod +x)

Mir persönlich bleibt nur noch eine Frage offen. In der Dokumentation von xdotool (http://www.semicomplete.com/projects/xdotool/xdotool) werden zwar einige Optionen beschrieben, entweder übersehe ich sie jedoch, oder ich habe sie noch nicht gefunden: ich suche noch eine Option, wie ich diese Aktion in einem nicht-fokusierten Fenster ausführen lassen kann, dass ich also nebenher in einem anderen Fenster arbeite. Dies wollte zwar auch der Autor des oben (im Zitat) verlinkten Beitrags bezwecken, er hat es offensichtlich auch geschafft, allerdings verstehe ich seine Lösung nicht ganz, bzw das einfache einfügen von --window windowid (wobei windowid wieder ersetzt wird) hat bei mir keinen Erfolg. Wäre toll wenn mir da noch jemand helfen könnte!

Grüße

Thorsten_Reinbold Team-Icon

Anmeldungsdatum:
10. Juli 2006

Beiträge: 4784

Ja, das hier:

winid=$(xdotool search "pSX v1.13" | head -n1)

ist die dafür entscheidende Zeile. Die Suche nach dem richtigem Fenster übernimmt xdotool selbst. Ich habe in meinem Beispiel nach dem Fenster mit dem Titel "pSX v1.13" suchen lassen. Mit dem head Argument gehen sämtliche Befehl an dieses Fenster, ob es fokussiert ist oder nicht. Es kann auch auf einem komplett anderem Desktop liegen.

Wichtig ist, daß du nicht xdotools aus den Quellen nimmst (damit gings nicht) sondern dir die aktuellste Version selbst kompilierst, die du z.B. hier bekommst.

Achja: und du musst dann natürlich auch

	xdotool keydown --window "$winid" "x"
	xdotool keyup --window "$winid" "x"

setzen, damit die winid für die Befehle übernommen wird.

Del_Pierro

(Themenstarter)

Anmeldungsdatum:
28. Oktober 2008

Beiträge: 106

hört sich alles sehr logisch und vernünftig an, würde ich auch sofort so ausprobieren / umsetzen, wenn es da nicht noch folgende 2 Probleme gäbe:

1. ich habe es mal wieder nicht geschafft, die aktuelle Version zu kompilieren. Davon habe ich sowas von gar keine Ahnung, was ich machen muss, und auch der Wiki-Eintrag bei Ubuntuusers Programme kompilieren hat mir nicht weiter geholfen.

2. Was mache ich, wenn das Fenster, das ich ansprechen will, keinen Titel hat? Habe mir schon gedacht, den Befehl set_window mit der Option --name neuername aus der Dokumentation zu verwenden, aber mein Terminal gibt nur einen Fehler zurück (dass es den Befehl nicht gibt).

1
2
Unknown command: set_window
Run 'xdotool help' if you want a command list

Wer kann mir hier helfen? Oder kann ich statt xdotools selbst suchen zu lassen doch wieder die WindowID verwenden? Wäre für mich momentan wahrscheinlich einfacher...

Hoffe ihr könnt mir nochmal weiterhelfen... Danke!

Thorsten_Reinbold Team-Icon

Anmeldungsdatum:
10. Juli 2006

Beiträge: 4784

Du brauchst nur die Pakete "build-essential" und "libxtst-dev" installieren (die Abhängigkeiten werden selbst aufgelöst). Anschließend noch ein:

make

und

sudo make install

im Verzeichnis des entpackten Quellcodes per Terminal. Einfacher gehts kaum. 😉

Edit: Vorher natürlich die alte Version entfernen. Auf welches Programm möchtest du xdotool denn ansetzen?

Del_Pierro

(Themenstarter)

Anmeldungsdatum:
28. Oktober 2008

Beiträge: 106

Thorsten Reinbold schrieb:

Du brauchst nur die Pakete "build-essential" und "libxtst-dev" installieren (die Abhängigkeiten werden selbst aufgelöst). Anschließend noch ein:

make

und

sudo make install

im Verzeichnis des entpackten Quellcodes per Terminal. Einfacher gehts kaum. 😉

Super, danke für die Hilfe, habe es (natürlich) geschafft.

Jetzt ist für mich nur noch die Frage offen, wie ich das mit dem hintergrund löse. Wie gebe ich das an, dass ich ihn auf eine bestimmte WindowID ansetze, aber trotzdem das von dir genannte "head"-Argument einsetzen kann?

Auf welches Programm möchtest du xdotool denn ansetzen?

Verschiedenes, einerseits einfach Interesse, andererseits gibt es ab und zu Programme, wo man gerne so eine Dauerschleifen-Eingabe haben möchte und konkret danach gesucht habe ich, weil sich bei mir ab und zu via dem Messenger ein leeres Fehlermeldungs-Fenster öffnet, und das (wenn es denn passiert) in solchen Mengen, dass man keine Lust hat, 2000 mal per Hand auf "Abbruch" zu drücken. 😉

Edit: verdammt, hat wohl doch irgendetwas nicht geklappt. Meldet jetzt dauernd folgendes:

1
xdotool: error while loading shared libraries: libxdo.so.1: cannot open shared object file: No such file or directory

Thorsten_Reinbold Team-Icon

Anmeldungsdatum:
10. Juli 2006

Beiträge: 4784

Versuchs mal hiermit. Keine Garantie oder Gewähr. 😉

xdotool_20100318-1-1_i386.deb (31.7 KiB)
Download xdotool_20100318-1-1_i386.deb

Del_Pierro

(Themenstarter)

Anmeldungsdatum:
28. Oktober 2008

Beiträge: 106

Thorsten Reinbold schrieb:

Versuchs mal hiermit. Keine Garantie oder Gewähr. 😉

Immer noch der selbe Fehler... ☹ Könntest du mir vielleicht trotzdem schon mal sagen, wie ich dieses "head"-Argument mit einer WindowID verknüpfen kann? Vielleicht funktioniert es ja doch in der Paketquellen-Version

Thorsten_Reinbold Team-Icon

Anmeldungsdatum:
10. Juli 2006

Beiträge: 4784

Mit der Version aus den Quellen funktioniert es definitiv nicht. Ich vermute daß die Version einige Funktionen der neueren Version von der Homepage nicht unterstützt.

Erstmal muß das Programm an sich vernünftig laufen. Die libxdo.so.1 muß unter /usr/lib vorhanden sein. Entferne bitte per Synaptic das installierte Paket und schau dann nach, ob da evtl. aus deinen vorherigen Versuchen noch "Reste" herumliegen.

Das kannst du recht gut prüfen, indem du in das .deb-Paket schaust (rechtsklick>mit Archivmanager öffnen). Hier sind unter "data" sämtliche Dateien drin, inkl. des Ortes an den sie installiert werden. Einfach prüfen, ob nach dem deinstallieren noch irgendwelche der Dateien auf deinem System vorhanden sind und ggf. entfernen.

Danach versuch bitte nochmal das Ganze aus dem Quelltext zu kompilieren und schreibe hier noch die Meldungen, die beim kompilieren ausgegeben werden.

Ich bin eigentlich auch eine ziemliche Niete wenns ums kompilieren geht, aber bei xdotool ist das recht simpel.

Nach dem kompilieren sollten (u.a.) die Dateien libxdo.so und libxdo.so.1 (Symlink) unter /usr/lib/ liegen.

Schau ggf. auch nochmal auf die oben genannte Hompage, da stehen auch noch ein paar Tips zum kompilieren und zur Anwendung. Auch die Man-Page ist recht hilfreich, wenn man die Funktionen zum bestimmen des richtigen Fensters herausfinden möchte.

Nicht aufgeben, das klappt schon noch. 😉

Antworten |