It "types" the contents of the clipboard.
Why can't you just paste the contents you ask? Sometimes pasting just doesn't work.
- One example is in system password fields on OSX.
- Sometimes you're working in a VM and the clipboard isn't shared.
- Other times you're working via Remote Desktop and again, the clipboard doesn't work in password boxes such as the system login prompts.
- Connected via RDP and clipboard sharing is disabled and so is mounting of local drives. If the system doesn't have internet access there's no easy way to get things like payloads or Powershell scripts onto it... until now.
The Windows version is written in AutoHotKey and easily compiles to an executable. It's a single line script that maps Ctrl-Shift-V to type the clipboard.
^+v::Send {Raw}%Clipboard%
The following should work on Linux, provided you have xdotool
and xclip
installed. This version lets you select the window you want to send the keystrokes to.
xclip -selection clipboard -out | tr \\n \\r | xdotool selectwindow windowfocus type --clearmodifiers --delay 25 --window %@ --file -
Explanation of the flags used:
xclip -selection clipboard
gets the contents of the clipboard.-out
writes the text to stdout.tr \\n \\r
replaces newlines with carriage returns to ensure they don't get missed in some applications.selectwindow
allows you to pick a window to send text to. This means you don't have to have the window active when you run the command.windowfocus
focuses the selected window. Most apps I tried would ignore keystroke events if they weren't in focus.--clearmodifiers
makes sure that no modifier keys are pressed before typing.--delay 25
was the best balance between speed and not missing keystrokes in the applications I was using. This shouldn't be noticable for short text, but makes a difference with longer text.--window $@
means that keystrokes will only be sent to that window. If you focus a different window the typed keystrokes won't suddenly be sent to your new window.--file -
reads from stdin.
The following is a version that just "pastes" immediately to the active window.
xclip -selection clipboard -out | tr \\n \\r | xdotool type --clearmodifiers --delay 25 --file -
I saved this to a script and then mapped the script to a hotkey using Gnome's custom keyboard shortcuts.
The Mac version is writtern in AppleScript.
tell application "System Events" to keystroke the clipboard as text
The equivalent one-liner from the command line would be:
osascript -e 'tell application "System Events" to keystroke the clipboard as text'
To bind this to a keyboard shortcut you have several options. Sticking with builtin OSX utilities you can follow this guide.
Otherwise, you can use a third party program that lets you set custom hotkeys such as: BetterTouchTool, Keyboard Maestro, or Hammerspoon
- @Indigo744 for the suggestion to use
{Raw}
in the Windows version - @L3vi47h4N for the Linux version
- @brabster for the
--clearmodifiers
suggestion in the Linux version - @ethack for creating the original gist file.