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 automate keyboard input so that I can "paste" my clipboard contents to a remote KVM such as IPMI, or Raritan. To accomplish this, I installed xdotool and xclip. I then wrote a simple command that types the clipboard contents:

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 works in any window that has focus.

However, if I create a custom shortcut using Keyboard settings, it doesn't work. If I assign a hotkey Alt+K to the shortcut, nothing happens when I press it.

Linux Sendkeys

If I use Ctrl+K, 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?

My steps to test this hotkey are as follows:

  1. Copy the text Hello World!
  2. Click on gedit
  3. Press the hotkey
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. –  briankb Nov 5 '12 at 23:16
add comment

3 Answers 3

up vote 3 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. –  briankb Nov 17 '12 at 5:27
add comment

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. –  briankb Nov 13 '12 at 3:58
add comment

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. –  briankb Nov 16 '12 at 13:44
add comment

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.