¿Hay una manera más rápida de insertar texto en el cursor en AppleScript que en "pulsación de tecla"?

3

Esto es para un archivo .scpt, activado por un combo de teclado en FastScripts, titulado "Type As Single Line Plain Text."

El código AppleScript toma el texto del portapapeles, elimina todo el formato de texto enriquecido y luego elimina todos los saltos de línea y sangrías, configurando esta nueva cadena a una nueva variable, theClipboardTextWithoutAnyLineBreaksOrFormatting . Finalmente, quiero que AppleScript inserte este nuevo texto en el cursor parpadeante.

Pero, no quiero sobrescribir el portapapeles original con esta nueva cadena de texto sin formato. Simplemente quiero que la nueva cadena se escriba en el cursor parpadeante, en todo el sistema y en cualquier aplicación. keystroke logra exactamente lo que quiero. Es solo lento.

Aquí está el script completo:

set theClipboardTextWithoutAnyFormatting to (the clipboard as text)

set AppleScript's text item delimiters to {return & linefeed, return, linefeed, character id 8233, character id 8232}
set theClipboardTextWithoutAnyLineBreaksOrFormatting to text items of (theClipboardTextWithoutAnyFormatting as text)
set AppleScript's text item delimiters to {" "}

tell application "System Events" to keystroke theClipboardTextWithoutAnyLineBreaksOrFormatting

El problema con este método es que si theClipboardTextWithoutAnyLineBreaksOrFormatting contiene una cadena muy larga, por ejemplo, 2000 caracteres, tomará un tiempo para que todo el texto se escriba, ya que se realiza manualmente en tiempo real .

¿Hay una mejor manera?

    
pregunta rubik's sphere 11.02.2017 - 13:35

1 respuesta

1

Sí.//strong>

El

usuario @ jackjr300 ha ideado una solución ideal para esta pregunta aquí:

Esta solución funciona en todo el sistema y no afecta al portapapeles.

El archivo TypeCharacters Objective-C proporcionado es significativamente (es decir, exponencialmente) más rápido al escribir texto que el comando keystroke nativo de AppleScript.

    
respondido por el rubik's sphere 26.09.2017 - 13:26

Lea otras preguntas en las etiquetas