Supprimer la frappe à partir d'AppleScript

Le context

Dans Safari, il y a un champ de text dans lequel contient le nom d'une image avec l'extension .png et je dois supprimer cette extension.

Solution

Ecrivez un script dans lequel simuler la touche Supprimer (⌫) 4 fois, si les caractères précédents sont .png , supprimant ainsi l'extension.

Problème

Ici, il est dit que cela devrait être fait avec le key code 51 mais cela ne semble pas fonctionner. Une search Google est venu avec d'autres codes keys tels que 127.

Choses à corriger ma solution

Quel est le code key correct? Y a-t-il un moyen de le find soi-même comme Accessibilité Inspecteur pour les buttons, les champs, etc. J'ai essayé d'save, ne fonctionne pas? Est-ce que Apple a une list officielle de Key Codes?

Pour ceux qui sont intéressés, ci-dessous est le script, rien de fantaisie:

 # 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 

Votre script fonctionne correctement dans la plupart des applications. Peut facilement le tester dans TextEdit pour voir cela. Quand j'ai dit append dans les boîtes de dialog pour texturer le stream, surtout ce que vous devez tester est que "if newClipboard est égal à" .png "se triggers (pas si le text est sélectionné). que dans une boîte de formulaire web (que je pense que vous décriviez), javascript ralentit la réponse du text, y compris la copy dans le presse-papier.C'est un problème très commun lors de la copy de script dans le presse-papiers que vous devez append un timeout après la copy pour que le process se termine avant que le script ne soit exécuté Essayez ceci, qui ajoute simplement le timeout:

 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