32

Is there a command that exists that can simulate keypresses? I want to pipe some data to it to make it type into a GUI program for me.

2 Answers 2

53

Yes, it is xdotool.

To simulate a key press, use:

xdotool key <key>

For example, to simulate pressing F2:

xdotool key F2

To simulate pressing crtl + c:

xdotool key ctrl+c

To simulate pressing ctrl + c and then a Backspace:

xdotool key ctrl+c BackSpace

Check man xdotool to get more idea.

You might need to install the xdotool package first to use xdotool command.

6
  • Sweet! I'm assuming people use this for remote connections? Commented Mar 4, 2016 at 21:10
  • @SpecialBomb Depends..i use it sometimes to simulate a key inside a script..
    – heemayl
    Commented Mar 4, 2016 at 21:13
  • Well, thanks! I'm going to use it specifically to make my own remote connection thing. Commented Mar 4, 2016 at 21:15
  • 1
    I used it so that my computer wouldn't sleep while I was watching movies.
    – Liam
    Commented Mar 5, 2016 at 0:11
  • 1
    What :key syntax is it to enter UP arrow key? Found it here as xdotool key Up askubuntu.com/q/382005/22308
    – Nam G VU
    Commented Dec 25, 2019 at 9:11
2

Use expect (man expect)

#!/usr/bin/expect
#set timeout 10
set clientName [lindex $argv 0];
set hostName [lindex $argv 1];
set passWord [lindex $argv 2];

spawn ssh "$hostName";
expect "Password:";
send "$passWord\r";
expect "$hostName";

send "cd /apps/bin\r";
expect " bin]";
1
  • 7
    expect won't work with GUI programs. Commented Mar 22, 2016 at 16:19

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .