1 votes

Comment automatiser le contrôle vocal pour manipuler le texte actuellement sélectionné?

Parce que j'ai une utilisation limitée de mes mains, j'utilise le Contrôle vocal pour dicter la plupart de mon texte. (Je l'utilise pour lire cette question.) Le Contrôle vocal offre la possibilité d'ajouter des commandes personnalisées, y compris celles qui exécuteront un flux de travaux Automator. Automator, à son tour, peut exécuter du JavaScript ou de l'AppleScript arbitraire. (Je préfère JavaScript). Ce que je veux faire, c'est créer un script qui prend le texte actuellement sélectionné dans l'application active, le manipule, puis remplace le texte sélectionné sur place. Par exemple, imaginez créer une commande "hyphénater ceci" qui convertit du texte sélectionné comme ceci-"Mac Voice Control scripting"-et le change en ceci-"Mac-Voice-Control-scripting". Écrire le JavaScript ou l'AppleScript pour transformer la chaîne est la partie facile. Le problème est de savoir comment obtenir le texte actuellement sélectionné pour l'application en cours, quel qu'elle soit.

Dans Automator, vous pouvez créer un flux de travail "Action rapide" qui est censé transmettre le texte actuellement sélectionné et vous permettre de le remplacer. En pratique, cependant, sous Big Sur (au moins), je n'ai pas pu obtenir ce flux de travail pour recevoir du texte de n'importe quelle application. Étant donné une fonction run() standard, le tableau input était toujours de longueur 0.

Comment créer un flux de travail qui peut être exécuté par une commande personnalisée dans le Contrôle vocal qui reçoit, traite et remplace le texte actuellement sélectionné dans l'application en cours?

1voto

wch1zpink Points 6067

Désolé, je n'ai aucune connaissance en JavaScript mais j'ai quelque peu une solution pour vous en n'utilisant que AppleScript sans avoir besoin d'Automator.

Ce code AppleScript suivant prendra le texte sélectionné dans n'importe quelle application, remplacera les espaces par des tirets puis remplacera votre texte sélectionné original par le nouveau texte avec des tirets.

-- Copie le texte sélectionné dans le presse-papiers
tell application "System Events" to keystroke "c" using {command down}
delay 0.1

-- Utilise le texte du presse-papiers et remplace les espaces par des tirets
set hyphenatedText to hyphenateText(the clipboard, " ", "-")
delay 0.1

-- Insère le nouveau texte avec des tirets remplaçant le texte sélectionné original
tell application "System Events" to keystroke hyphenatedText

(* 
someText est le texte sélectionné contenant les caractères à remplacer
replaceTheseListItems sont les caractères d'origine du texte que vous souhaitez remplacer
replacementListItems sont les caractères de texte de remplacement
*)
on hyphenateText(someText, replaceTheseListItems, replacementListItems)
    set originalText to someText
    set les éléments de texte d'AppleScript à remplacement de liste d'AppleScript à remplacer
    set tempText to les éléments de texte de originalText
    set les éléments de texte d'AppleScript à remplacement de liste d'AppleScript à remplacement
    set cleanedText to tempText as text
end hyphenateText

Enregistrez le code AppleScript en tant que fichier .scpt (Hyphenate Selected Text.scpt). Ensuite, ouvrez Finder et sélectionnez votre nouveau fichier de script. Une fois le fichier sélectionné, et avec la commande vocale activée, dites simplement la commande "Rendre cela énonçable". Lorsque la nouvelle boîte de dialogue de commande de dictée s'ouvre, attribuez-lui une nouvelle commande vocale.

entrez la description de l'image ici

À des fins de démonstration, j'ai ajouté ce fichier de script au menu du script et l'ai exécuté à partir de là

entrez la description de l'image ici

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X