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
|
|
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
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:
| #!/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
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).
| 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
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: | xdotool: error while loading shared libraries: libxdo.so.1: cannot open shared object file: No such file or directory
|
|
Thorsten_Reinbold
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
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. 😉
|