Отправка ввода с клавиатуры в программу из командной строки
Как вы отправляете ввод с клавиатуры в программу?
то есть под Linux GUI есть хороший ручной (программируемый) способ или инструмент, моделирования ввода с клавиатуры в запущенной программе на Linux, чтобы я мог отправить из командной строки, например, "Control-T" в процесс Firefox и " echo "привет" n " к процессу Gnome-Terminal, фактически не фокусируясь на каждом из эти процессы и ввод непосредственно?
4 ответов
xdotool
имеет способ отправки нажатий клавиш, если они ограничены сфокусированным окном:
WID=`xdotool search "Mozilla Firefox" | head -1`
xdotool windowactivate $WID
xdotool key ctrl+l
Я построил Рубин DSL вокруг xdotool
для упрощения фокусировки окон и моделирования ввода с клавиатуры. Вот пример, риффинг по вашему первоначальному запросу:
Mani.new(window_manager: :xmonad) do
window :hello, launch: 'urxvt' do
run 'echo "hello\n"'
end
window :firefox, launch: 'firefox', delay: 1.5 do
type '{{ctrl+t}}'
end
end
Я нашел эти две программы xmacro и xremote вы можете взглянуть, но, похоже, они не очень хорошо документированы.
Я также нашел эту утилиту xvkbd
в ответ на этот вопрос так Q & A под названием:отправка кода ключа в Xorg + wine с помощью скрипта bash.
Это старая тема, но все еще можно искать это, кто-то упомянул здесь Решение, где окно должно быть активировано при использовании xdotool. Однако вы можете указать окно и даже использовать xdotool, чтобы найти его. Вот пример, который я пытался выполнить, измените его по мере необходимости.
xdotool key --window $(xdotool search --name "Spotify (Premium |Free )?- Linux Preview" | head -n1) ctrl+KP_Down