Eliminar pulsación de tecla de AppleScript

0

Contexto

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

Solución

Escriba una secuencia de comandos, en la que simule la tecla Eliminar (⌫) 4 veces, si los caracteres anteriores son .png , eliminando así la extensión.

Problema

Aquí dice que debería hacerse con key code 51 pero eso no parece funcionar. Una búsqueda en Google produjo otros códigos clave como 127.

Cosas para arreglar mi solución

¿Cuál es el código clave correcto? ¿Hay alguna forma de averiguarlo usted mismo como Accessibility Inspector para los botones, campos, etc. Intenté grabar, no funciona? ¿Apple tiene una lista oficial de códigos clave?

Para los interesados, a continuación se muestra el script, nada especial:

# 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
    
pregunta user14492 26.10.2015 - 16:43

1 respuesta

0

Su script funciona bien en la mayoría de las aplicaciones. Puede probarlo fácilmente en TextEdit para ver eso. Cuando dije agregar cuadros de diálogo para enviar mensajes de texto al flujo, la mayoría de lo que necesita probar es que "si newClipboard es igual a" .png "se está activando (no si se selecciona el texto. Supongo que su problema es que en un cuadro de formulario web (que creo que estaba describiendo), JavaScript está ralentizando la respuesta del texto, incluida la copia al portapapeles. Es un problema MUY común al copiar scripts en el portapapeles que necesita agregar un retraso después de copiar para que el proceso se complete antes de que el script continúe. Intenta esto, que simplemente agrega 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
    
respondido por el jweaks 27.10.2015 - 02:55

Lea otras preguntas en las etiquetas