Last active
April 5, 2025 15:58
-
-
Save sscotth/310db98e7c4ec74e21819806dc527e97 to your computer and use it in GitHub Desktop.
Paste as keystrokes (macOS)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Why? | |
# To paste text into windows that normally don't allow it or have access to the clipboard. | |
# Examples: Virtual machines that do not yet have tools installed, websites that hijack paste | |
# | |
# Extended vs Simple? | |
# * Includes an initial delay to allow you to change active windows | |
# * Adds small delay between keypresses for slower responding windows like SSH sessions | |
# * Better handling of numbers | |
# * VMWare bug fix | |
# | |
# Setup | |
# Apple Shortcuts app | |
# | |
# MAKE SURE YOUR CAPSLOCK IS OFF | |
on run | |
tell application "System Events" | |
delay 2 # DELAY BEFORE BEGINNING KEYPRESSES IN SECONDS | |
repeat with char in (the clipboard) | |
set cID to id of char | |
if ((cID ≥ 48) and (cID ≤ 57)) then | |
# Converts numbers to ANSI_# characters rather than ANSI_Keypad# characters | |
# https://apple.stackexchange.com/a/227940 | |
key code {item (cID - 47) of {29, 18, 19, 20, 21, 23, 22, 26, 28, 25}} | |
else if (cID = 46) then | |
# Fix VMware Fusion period bug | |
# https://apple.stackexchange.com/a/331574 | |
key code 47 | |
else | |
keystroke char | |
end if | |
delay 0.5 # DELAY BETWEEEN EACH KEYPRESS IN SECONDS | |
end repeat | |
end tell | |
end run | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on run | |
tell application "System Events" | |
keystroke (the clipboard) | |
end tell | |
end run |
Hello! Is it possible to paste UTF8?
Thanks @sscotth for creating this script and others for making it more user-friendly !
I try to make it work with UTF8
on run
set clipboardContent to (the clipboard as Unicode text)
tell application "System Events"
delay 2 -- DELAY BEFORE BEGINNING KEYPRESSES IN SECONDS
repeat with char in clipboardContent
try
keystroke char
on error
-- Ignore symbol if it's not accessible direct and log it
log "Can't recognise symbol: " & (char as Unicode text)
end try
delay 0.1 -- DELAY BETWEEN EACH KEYPRESS IN SECONDS
end repeat
end tell
end run
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@PeetMcK @markmcjr
I think think this way of embedding into MacOS menu has more merit than via "Quick Action" method. In the latter case you have to give any app that initiates the Quick Action permissions to control the computer, which is inconvenient and security threat. In the way mentioned by PeetKcK you only have to perform one time a few actions for only one Apple Supplied MacOS App.
Thanks @sscotth for creating this script and others for making it more user-friendly !