10 votes

Attribuer une famille de polices monospécifiques au texte sélectionné à l'aide d'un raccourci clavier dans mac os x

J'écris beaucoup d'e-mails techniques et j'aime utiliser une police monospaciale pour les éléments de code. Je surligne le texte, j'appuie sur Apple-T, je choisis ma police dans la liste des favoris, puis je ferme la fenêtre des polices. Existe-t-il un moyen d'utiliser un raccourci clavier pour appliquer une police donnée au texte sélectionné ? L'idéal serait que cela s'applique à l'ensemble du système d'exploitation, mais si ce n'est pas possible, je peux l'utiliser pour une seule application (Mail.app).

0 votes

Quelle version ? -T fonctionne dans Mail 3.6.

0 votes

@trashgod Je cherche un raccourci clavier unique que je puisse utiliser pour définir la police de la sélection en cours à une police spécifiée. Il s'agit probablement d'une sorte de macro.

1 votes

Cela semble assez simple à réaliser avec AppleScript et il suffit ensuite d'attribuer une touche à ce script. Si quelqu'un ne vient pas ce soir, je préparerai quelque chose demain.

2voto

Yann Bizeul Points 174

Cela fait très longtemps que je cherche à le faire.

J'ai finalement réussi à obtenir quelque chose qui fonctionne vraiment bien pour moi, avec l'aide d'Alfred et de l'outil CLI Highlight.

Voici la partie script d'Alfred :

query="{query}"
if echo $query|grep -e "^__SHORTCUT__"
then
    echo "$query"|sed -E "s/^__SHORTCUT__//"|pbcopy
    syntax=txt
else
    osascript -e 'tell application "System Events" to keystroke "c" using {command down}'
    syntax=$query
fi

pbpaste|/usr/local/bin/highlight --syntax $syntax --font Menlo --font-size 12 --out-format=rtf|pbcopy
osascript -e 'tell application "System Events" to keystroke "v" using {command down}'

Assurez-vous que le déclencheur de raccourci ajoute __SHORTCUT__ à reconnaître et l'argument est "Sélection dans OSX" :

enter image description here

Démonstration courte https://youtu.be/y8NJT52APRQ

1voto

John Fiala Points 3050

Je ne connais pas de moyen d'accéder à l'ensemble du système pour script le panneau des polices, mais voici quelques moyens d'accéder rapidement aux polices monospaciales dans Mail.app

Méthode 1 : Planifier un message texte

Allez dans les préférences de Mail.app > Polices et couleurs et cochez la case "Utiliser une police à largeur fixe pour les messages en texte brut"

enter image description here

Désormais, lorsque vous êtes dans un message et que vous souhaitez utiliser une police monospatiale, il vous suffit de cliquer sur : Command - Shift - T et vous pouvez alterner entre la police à largeur fixe de votre choix et votre police standard (message en texte simple et texte enrichi).

L'inconvénient de cette méthode est que si le destinataire n'a pas réglé sa police sur une largeur fixe, il risque de ne pas voir le message comme prévu.

Méthode 2 : Définir la police avec Applescript

La deuxième façon de procéder consiste à créer un nouveau message en choisissant la bonne police de caractères à l'aide d'Applescript. Vous pouvez procéder comme suit :

tell application "Mail"
    set outgoingMessage to make new outgoing message
    set fontFace to "Times"
    tell outgoingMessage
        set the content to " "
        set font of content to fontFace
        set size of content to (14)
        set visible to true
    end tell
end tell

Vous devez définir le contenu avec ce script. Il semble que Mail ne vous permette pas de définir la police d'un message vide.

Méthode 3 : Utiliser TextExpander

Cette méthode coûte de l'argent, mais elle peut vous donner ce que vous recherchez. Vous pourriez mettre en place quelques TextExpander ($34.99 USD sur l'app store) des raccourcis pour les caractères à largeur fixe et les caractères normaux afin que vous puissiez passer de l'un à l'autre en tapant quelques caractères.

TextExpander

TextExpander vous permet d'insérer du texte enrichi (texte avec une police, une couleur, un style, etc.). Il vous suffit de créer un extrait de type Texte formaté, Images et de définir une police pour le texte que vous allez insérer. Vous devrez inclure au moins un espace pour que cette stratégie fonctionne.

Vous devrez inclure dans vos extraits au moins un espace pour que la police soit prise en compte.

1 votes

Samuel, je cherche un moyen de rendre le texte surligné monospaced, et non le message entier. Je suis d'accord pour utiliser un Applescript qui n'affecte que la sélection de l'application en cours. Pouvez-vous me recommander un moyen de déclencher l'Applescript avec un raccourci clavier personnalisé ?

1 votes

Sam, le problème est que Mail.app n'a pas d'objet pour le texte sélectionné. J'ai passé du temps à essayer de trouver un moyen et je peux dire qu'il n'y a pas de moyen propre d'accomplir cela.

2 votes

Avec TextExpander, vous pouvez faire en sorte qu'il insère le contenu du presse-papiers dans l'extrait formaté en monospace. Ainsi, lorsque vous mettez en surbrillance, il vous suffit de taper X puis l'abréviation de votre extrait pour le recoller en monospace. Ajoutez un espace avec un formatage normal à la fin de l'extrait et vous pouvez continuer à taper. TextExpander est par ailleurs incroyablement utile ; tous ceux qui utilisent un Mac pour faire des choses devraient de toute façon le posséder.

1voto

Sam Barnum Points 151

Ce que j'ai fini par utiliser, c'est la spécification manuelle de l'espace monospacial dans un texte, puis l'utilisation de la fonction Format -> Style de copie (Option+Cmd+C) qui copie le format mais pas le texte. Sélectionnez ensuite un autre texte brut et Format->Coller le style (Option+Cmd+V) qui attribue ce format à la sélection. Après le redémarrage, il faut recommencer, et cela ne fonctionne que pour un seul style, mais cela répond à mes besoins.

0voto

Copier un personnage avec un style spécifique :

echo "<span style=\"font:14px 'Monaco'\">&nbsp;</span>" | textutil -format html -convert rtf -stdin -stdout | pbcopy -Prefer rtf

pbcopy -Prefer rtf n'inclut pas les données en texte brut, de sorte que le collage ne fonctionnera que dans les affichages en texte enrichi.


Insérer un personnage avec un style spécifique :

try
    try
        set old to the clipboard
    end try
    set html to quoted form of "<span style=\"font:14px 'Monaco'\">&nbsp;</span>"
    do shell script "echo " & html & " | textutil -format html -convert rtf -stdin -stdout | pbcopy -Prefer rtf"
    tell application "System Events" to keystroke "v" using command down
    delay 0.03
    set the clipboard to old
end try

Style collé :

try
    try
        set old to the clipboard
    end try
    tell application "System Events" to keystroke "c" using command down
    delay 0.03
    set input to Unicode text of (the clipboard as record)
    set txt to quoted form of ("<span style=\"font:14px 'Monaco'\">" & input & "</span>")
    do shell script "echo " & txt & " | textutil -format html -convert rtf -stdin -stdout | pbcopy -Prefer rtf"
    tell application "System Events" to keystroke "v" using command down
    delay 0.03
    set the clipboard to old
end try

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