Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I want to simulate keyboard input so that I can "paste" my clipboard contents to applications that don't allow it (e.g. remote KVM). Right now, I'm trying to use xdotool and xclip:

xdotool type "$(xclip -o)"

This command works if I stay in a terminal window, and type that command myself. It types back my clipboard contents when I run the command. My goal is to bind this command to a hotkey, so that it works in any application.

Linux Sendkeys

If I use this hotkey, unexpected behavior occurs to whatever window has focus. e.g. my terminal window size shrinks (it's somewhat amusing, actually). Similar results occur if I save it as a script and call the script, or if I encapsulate the command with sh -c. How can I make practical use of the powerful xdotool type command?

share|improve this question
    
That's because the command will be run in a background terminal, you are doing nothing wrong. A terminal will "pop out" without you see it, then will execute this command, then leave. –  Evandro Silva Nov 5 '12 at 12:17
    
Did you try putting it in a script and keybinding the script ? Or did you try keybinding sh -c 'xdotool type "$(xclip -o)"' instead ? –  user55822 Nov 5 '12 at 17:11
    
Thanks for the ideas @user55822. I had the same results using a script. I saw more unexpected behavior when I used sh -c (gedit opening new tabs). Oddly, it stopped doing anything after I tried different hotkeys. –  brianbaligad Nov 5 '12 at 23:16

3 Answers 3

up vote 4 down vote accepted
+50

You have two problems with this command. The first is that you need to make sure that the meta-keys in the binding are not pressed when it tries to run the command. Second, by default xclip selects XA_Primary buffer rather than the XA_CLIPBOARD. So you should pass clipboard as the selection parameter for xclip. Change your hotkey command to the following:

sh -c 'sleep 0.5; xdotool type "$(xclip -o -selection clipboard)"'
share|improve this answer
    
This does seem to work quite reliably. –  brianbaligad Nov 17 '12 at 5:27

xdotool creates keypresses, and it won't release the Ctrl key for you... The simplest solution is to add a delay, eg sleep 0.5 to wait for half a second, and to make sure you release Ctrl fast enough.

share|improve this answer
    
Great idea. xdotool type "Hello World!" mostly works for me now. It oddly doesn't work for a few seconds after I use it, but that's not really a huge problem. The xclip output isn't working yet, but I'll try to figure out why. Thanks. –  brianbaligad Nov 13 '12 at 3:58

Actually there are two buffers accessible with Ctrl+V (the clipboard copy-paste) and Shift+Insert (the mouse mark and middle-click paste).

If you have the sessions appropriately connected to share clipboard, then one of the two should work automatically, no?

share|improve this answer
    
I need input automation because I often use remote KVM to access machines (Raritan and IPMI). Usually to install an OS or because networking is broken on the machine. –  brianbaligad Nov 16 '12 at 13:44

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.