Senden eines Tastendrucks an zwei Fenster (Ubuntu)

5050

Ich verwende Ubuntu Linux. Ich habe zwei offene Terminalfenster, die nebeneinander laufen. Ich freue mich darauf, die Eingabetaste einmal drücken zu können, und den Tastenanschlag an beide Fenster senden zu lassen.

(Was ich mache, ist ein Code, der mit Hilfe eines Debuggers auf zwei verschiedenen Systemen ausgeführt wird, und ich möchte nicht ständig zwischen den Fenstern hin und her wechseln müssen, wenn ich durch den Code gehe.)

Vielen Dank!

6

5 Antworten auf die Frage

3
DaveParillo

Ich sehe keine einfache Möglichkeit, dies in einem Ihrer Debugging-Fenster zu tun, aber Sie könnten ein drittes Fenster verwenden, das ein Skript ausführt, das xvkbd umgibt . Es befindet sich im Ubuntu-Repository (möglicherweise im Universum). Das Skript könnte Ihre Tastatureingaben lesen und dann zweimal xvkbd aufrufen, wobei die Tastatureingaben an beide Fenster gesendet werden. Normalerweise ein grafisches Programm mit

xvkbd -window xterm2 -text $foo 

Sendet wichtige Ereignisse an bestimmte Fenster, ruft jedoch keine Benutzeroberfläche auf. Vielleicht finden Sie auch, dass wmctrl Windows & Sachen erkennt . Ein simples Skript könnte sein:

#!/bin/bash  while [ 1 ]; do wmctrl -i -a 0x02200003 #forcibly set focus in window running script read keys xvkbd -window 0x2202ea4 -text "$keys\r" xvkbd -window 0x2200084 -text "$keys\r" done 
1 = 1 ist nicht notwendig, während [1] dasselbe tut: P John T vor 14 Jahren 0
Ich habe diesen Ansatz verwendet, um zwei Evince-Fenster zu steuern, die zwei Versionen desselben PDF-Dokuments anzeigen. Aus irgendeinem Grund verfehlte eines der Fenster etwa jeden zehnten Tastendruck. Ich konnte nicht herausfinden, warum das so war. akaihola vor 14 Jahren 0
2
akaihola

Die Terminator- Anwendung (die nicht durch eine Java-Anwendung mit demselben Namen verwechselt werden darf ) bietet genau die Funktionalität, die Sie benötigen. Sie können es aus Ubuntus Repositories mit installieren apt-get install terminator.

So funktioniert das:

  • Terminator ausführen
  • Öffnen Sie mehrere Sitzungen in Registerkarten oder Frames
  • Klicken Sie auf die Schaltfläche in der oberen linken Ecke eines Rahmens
  • Wählen Sie den Menüpunkt "Neue Gruppe ..."
  • Geben Sie einen Namen für die Gruppe ein
  • Wählen Sie in jeder Sitzung, an die Sie Tastatureingaben senden möchten, diese Gruppe aus dem Menü aus
  • Sie können die Menüelemente "Broadcast-Gruppe" und "Broadcast-Off" verwenden, um die Tastenanschläge für das Broadcasting umzuschalten.

Dafür gibt es auch Tastenkombinationen.

1
0x44

In GNOME Terminal IIRC ist das nicht möglich.

Wenn Sie Konsole ausprobieren möchten, gibt es eine Send Input to All SessionsOption in Konsole 3, die Copy Input to...in Konsole 4 angezeigt wird.

Ich habe mein Beispielskript in gnome-terminal getestet. hat gut funktioniert. DaveParillo vor 14 Jahren 1
Mit den integrierten Funktionen des GNOME Terminals meine ich. :-) 0x44 vor 14 Jahren 1
1
mirabilos

Abgesehen von clusterssh, das im Grunde darauf ausgelegt ist, jedoch seine eigenen Terminals aufzubauen, können Sie xlax verwenden, eine generische Lösung zum Verteilen / Senden von Tastatureingaben an mehrere X11-Fenster. Es ist noch nicht fertig verpackt, aber ich werde das tun, da ich im Moment "so etwas wie einen Cluster für Virt-Manager" brauchte und dies als Werkzeug meiner Wahl fand.

0
R J

Verwenden Sie den dafür vorgesehenen Keyboardcast .