0 votos

Eliminar la pulsación de teclas de AppleScript

Contexto

En Safari, hay un campo de texto, en el cual, contiene el nombre de una imagen con extensión .png y tengo que quitar esa extensión.

Solución

Escribe un script, en el que, simula Delete() 4 veces, si los caracteres precedentes son .png , eliminando así la prórroga.

Problema

Aquí dice que debe hacerse con key code 51 pero parece que no funciona. En una búsqueda en Google aparecieron otros códigos clave como el 127.

Cosas para arreglar mi solución

¿Cuál es el código clave correcto? ¿Hay alguna forma de averiguarlo por sí mismo como Inspector de accesibilidad para botones, campos, etc. He intentado grabar, pero no funciona. ¿Tiene Apple una lista oficial de códigos de teclas?

Para los interesados, a continuación está el script, nada del otro mundo:

# Checks and remove .png if exists

tell application "System Events"
    set oldClipboard to the clipboard

    repeat 4 times
        key code 123 using {shift down}  # Left Arrow key. Selects last 4 chars
    end repeat
    keystroke "c" using {command down}

    set newClipboard to the clipboard as text
    if newClipboard is equal to ".png" then
        #keystroke (ASCII character 127) # Other "code", doesn't work
        key code 51
        delay 0.1
    end if

    key code 124                         # Right Arrow key, works
    set the clipboard to oldClipboard
end tell

0voto

Johnsyweb Puntos 45395

Tu script funciona bien en la mayoría de las aplicaciones. Puedes probarlo fácilmente en TextEdit para comprobarlo. Cuando dije añadir en los cuadros de diálogo para el texto del flujo, sobre todo lo que usted necesita para probar es que el "si newClipboard es igual a ".png" se está disparando (no si el texto se está seleccionando. Supongo que tu problema es que en un cuadro de formulario web (que creo que estabas describiendo), javascript está ralentizando la respuesta del texto incluyendo la copia al portapapeles. Es un problema MUY común cuando se hacen scripts copiando al portapapeles que se necesita añadir un retraso después de copiar para que el proceso se complete antes de que el script proceda. Pruebe esto, que simplemente añade el retraso:

tell application "Safari" to activate
delay 1
tell application "System Events"
    set oldClipboard to the clipboard
    repeat 4 times
        key code 123 using {shift down} # Left Arrow key. Selects last 4 chars
    end repeat
    delay .5
    keystroke "c" using {command down}
    delay 2
    set newClipboard to the clipboard as text
    -- display dialog newClipboard
    if newClipboard is equal to ".png" then
        #keystroke # WORKS!!!!!!!!
        key code 51
        delay 0.1
    end if

    key code 124 # Right Arrow key, works
    set the clipboard to oldClipboard
end tell

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X