Elimina la sequenza di tasti da AppleScript


0

Contesto

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

Soluzione

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

Problema

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

Cose per risolvere la mia soluzione

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

Per chi è interessato, di seguito è la sceneggiatura, 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

1
Qual è l'immagine più grande che stai cercando di ottenere? Potrebbe esserci un modo più sicuro per raggiungerlo che simulare i tasti.
Ilari Scheinin,

1
... seguendo queste linee: set x to "something.dmg"<newline>if x ends with ".dmg" then set x to characters 1 thru -5 of x as string
Ilari Scheinin,

Molto meno di un problema XY fatto così @IlariScheinin;)
Tetsujin,

codice chiave 51 FUNZIONA come cancellazione indietro. L'ho appena provato in TextEdit. Quale app e contesto hai davanti quando questo tuo codice è in esecuzione? Provare con un segnale acustico o una finestra di dialogo prima del codice chiave 51 per assicurarsi che il problema non riguardi la logica del codice.
jweaks,

@jweaks Aggiunte ulteriori informazioni. So che lo script funziona bene perché vedo che il testo viene selezionato, ma non lo elimina mai.
user14492,

Risposte:


0

Lo script funziona bene nella maggior parte delle app. Puoi facilmente testarlo in TextEdit per vederlo. Quando ho detto di aggiungere nelle finestre di dialogo per mandare un sms al flusso, principalmente quello che devi testare è che viene attivato il "se newClipboard è uguale a" .png "(non se il testo viene selezionato. Immagino che il tuo problema sia che in una casella del modulo Web (che penso tu stia descrivendo), javascript sta rallentando la risposta del testo inclusa la copia negli appunti. È un problema MOLTO comune quando si esegue lo scripting copiando negli appunti che è necessario aggiungere un ritardo dopo aver copiato per 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

Grazie per aver sottolineato il ritardo in JS. Non riuscivo ancora a farlo key code 51funzionare. Tengo solo il testo selezionato, se è uguale e inizio a digitare, quindi sostituisce semplicemente il testo.
user14492
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.