Delete Keystroke from AppleScript

0

Contesto

In Safari, c'è un campo di testo, in cui, contiene il nome di un'immagine con estensione .png , e devo rimuovere quell'estensione.

Soluzione

Scrivi uno script, in cui, simula la chiave Delete (⌫) 4 volte, se i caratteri precedenti sono .png , rimuovendo così l'estensione.

Problema

Qui dice che dovrebbe essere fatto con key code 51 ma ciò non sembra funzionare. Una ricerca su Google ha trovato altri codici chiave come 127.

Cose da risolvere la mia soluzione

Qual è il codice chiave corretto? C'è un modo per scoprirlo come Controllo accessibilità per i pulsanti, i campi ecc. Ho provato a registrare, non funziona? Apple ha un elenco ufficiale di codici chiave?

Per chi è interessato, qui sotto c'è lo script, niente di speciale:

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

1 risposta

0

Il tuo script funziona bene nella maggior parte delle app. Puoi testarlo facilmente in TextEdit per vederlo. Quando ho detto aggiungi finestre di dialogo per inviare il testo al flusso, per lo più ciò che devi testare è che "se newClipboard è uguale a" .png "viene attivato (non se il testo viene selezionato. Direi che il tuo problema è che in una casella del modulo web (che credo stavi descrivendo), javascript sta rallentando la risposta del testo inclusa la copia negli appunti. È un problema MOLTO comune quando si esegue lo scripting di una copia negli Appunti che è necessario aggiungere un ritardo dopo la copia per completare il processo prima che lo script proceda. Prova questo, che aggiunge semplicemente il ritardo:

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
    
risposta data 27.10.2015 - 02:55
fonte

Leggi altre domande sui tag