Отправка ввода с клавиатуры в программу из командной строки

Как вы отправляете ввод с клавиатуры в программу?

то есть под 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