Отправка ввода с клавиатуры на программу из командной строки - PullRequest
13 голосов
/ 25 сентября 2010

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

То есть под Linux GUI есть хороший ручной (программируемый) способ или инструмент, имитации ввода с клавиатуры на работающей программе в Linux, чтобы я мог отправить из командной строки, например, «Control-T» в процесс Firefox и «echo» 'привет' \ n "процессу Gnome-Terminal, не сосредотачиваясь на каждом из эти процессы и печатать напрямую?

Ответы [ 4 ]

16 голосов
/ 27 сентября 2010

xdotool имеет способ отправки нажатий клавиш, если он ограничен сфокусированным окном:

WID=`xdotool search "Mozilla Firefox" | head -1`
xdotool windowactivate $WID
xdotool key ctrl+l
2 голосов
/ 27 сентября 2015

Это старая тема, но ее все еще можно искать, кто-то упомянул здесь решение, где окно должно быть активировано при использовании xdotool. Однако вы можете указать окно и даже использовать xdotool, чтобы найти его. Вот пример, который я пытался выполнить, измените его, как вам нужно.

xdotool key --window $(xdotool search --name "Spotify (Premium |Free )?- Linux Preview" | head -n1) ctrl+KP_Down
2 голосов
/ 10 ноября 2014

Я построил Ruby 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
1 голос
/ 26 сентября 2010

Я нашел эти две программы xmacro и xremote Вы можете взглянуть, но, похоже, они недостаточно хорошо документированы.

Я также нашел эту утилиту xvkbd в ответе на этот вопрос. SO Q & A под названием: Отправка кода ключа в Xorg + wine с помощью скрипта bash .

...