отправка одного нажатия клавиши в два окна (Ubuntu)
4816
Я использую Ubuntu Linux. У меня есть два открытых окна терминала, работающих рядом. Я надеюсь, что смогу нажать один раз клавишу ввода и отправить этот ход клавиш в оба окна.
(То, что я делаю, это пошагово просматривая код в двух разных системах с помощью отладчика, и мне не нужно постоянно переключаться между окнами, пока я выполняю код.)
Я не вижу простого способа сделать это, находясь в одном из ваших окон отладки, но вы могли бы использовать третье окно, в котором запущен скрипт, обернутый вокруг xvkbd . Это в хранилище Ubuntu (может быть во вселенной). Сценарий может прочитать ваш ввод с клавиатуры, а затем дважды вызвать xvkbd, посылая нажатия клавиш в оба окна. Обычно графическая программа, использующая
xvkbd -window xterm2 -text $foo
отправляет ключевые события в определенные окна, но не вызывает пользовательский интерфейс. Вы также можете обнаружить, что wmctrl помогает идентифицировать окна и прочее. Упрощенный сценарий может быть:
#!/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 необязательно, в то время как [1] делает то же самое: P
John T 14 лет назад
0
Я использовал этот подход для управления двумя окнами Evince, отображающими две версии одного и того же документа PDF. По какой-то причине одно из окон пропускалось при каждом десятом нажатии клавиши. Я не мог понять, почему это было.
akaihola 14 лет назад
0
2
akaihola
Приложение Terminator (не путать с Java-приложением с тем же именем) обеспечивает именно ту функциональность, которая вам нужна. Вы можете установить его из репозиториев Ubuntu с помощью apt-get install terminator.
Вот как это работает:
запустить Терминатор
открыть несколько сессий во вкладках или фреймах
нажмите кнопку в левом верхнем углу рамки
выберите пункт меню «Новая группа ...»
введите имя для группы
в каждой сессии, в которую вы хотите отправить нажатия клавиш, выберите эту группу из меню
Вы можете использовать пункты меню «Broadcast group» и «Broadcast off», чтобы переключать нажатия клавиш.
Для этого есть также сочетания клавиш.
1
0x44
Вы не сможете сделать это в терминале GNOME, IIRC.
Если вы хотите попробовать Konsole, Send Input to All Sessionsв Konsole 3 есть опция, которая становится Copy Input to...в Konsole 4.
Я протестировал пример скрипта в gnome-терминале. работал нормально
DaveParillo 14 лет назад
1
Я имею в виду встроенные функции терминала GNOME. :-)
0x44 14 лет назад
1
1
mirabilos
Помимо clusterssh, который в основном предназначен для этого, но настаивает на создании собственных терминалов, вы можете использовать xlax, который является универсальным решением для распределения / отправки нажатий клавиш на несколько окон X11. Он еще не упакован, но я сделаю это, так как мне сейчас нужно было «что-то вроде clusterssh, просто для virt-manager», и я нашел, что это мой инструмент выбора.