22 votes

Est-il possible de modifier la résolution de l'écran à l'aide d'un raccourci clavier ?

J'utilise différentes résolutions d'écran en fonction de l'activité que j'exerce au cours de la journée.
Par exemple, lorsque je code, je préfère avoir plus d'espace disponible.
Est-il possible d'associer un raccourci clavier pour modifier la résolution de l'écran ?
(voir la capture d'écran ci-jointe) enter image description here

18voto

wch1zpink Points 6067

Oui, vous pouvez tout à fait y parvenir sans utiliser d'applications supplémentaires. Sur mon système, j'ai créé deux scripts différents. Un scripts pour ajuster la résolution d'affichage à la hausse et un autre pour ajuster la résolution d'affichage à la baisse. Sur mon système, j'ai simplement activé les deux scripts en tant que commandes de dictée, mais si vous créez un nouveau service via Automator, vous pouvez assigner des raccourcis clavier à ces services

Tout d'abord, voici les deux scripts avec lesquels j'ai commencé.

Celle-ci permet d'augmenter la résolution de l'écran : si la résolution de mon écran est déjà à la position par défaut

enter image description here

tell application "System Preferences"
    reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
end tell
tell application "System Events" to tell process "System Preferences" to tell window "Built-in Retina Display"
    click radio button "Scaled" of radio group 1 of tab group 1
    click radio button 4 of radio group 1 of group 1 of tab group 1
end tell
quit application "System Preferences"

L'exécution de ce script donnera ce résultat :

enter image description here

Le script suivant sert à abaisser la résolution de l'écran : si la résolution de mon écran n'est pas réglée sur la valeur par défaut

tell application "System Preferences"
    reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
end tell
tell application "System Events" to tell process "System Preferences" to tell window "Built-in Retina Display"
    click radio button "Scaled" of radio group 1 of tab group 1
    click radio button 3 of radio group 1 of group 1 of tab group 1
end tell
quit application "System Preferences"

Après m'être assuré que les deux scripts fonctionnent correctement, j'ai ouvert Automator et créé un nouveau service pour la résolution d'affichage plus élevée et ajouté le scripts approprié, comme le montre l'image suivante. J'ai enregistré ce fichier sous le nom rez_higher.workflow.

enter image description here

À partir de là, j'ai ouvert les préférences système/clavier/raccourcis/services. J'ai localisé le nouveau service que j'ai créé et je lui ai attribué un raccourci clavier

enter image description here

Ensuite, il suffit de suivre les mêmes procédures pour créer un nouveau flux de travail et un nouveau service pour la résolution d'affichage inférieure.

10voto

Jake Hilborn Points 1086

J'ai écrit l'outil en ligne de commande gratuit afficheur pour modifier les résolutions/rotations des bureaux à un ou plusieurs moniteurs. Vous pouvez déclencher un "profil" (exemple ci-dessous) via un raccourci clavier avec Automator comme l'a expliqué wch1zpink, BetterTouchTool, etc.

displayplacer 'id:69731906 res:1440x900 scaling:on origin:(0,0) degree:0'

7voto

AKX Points 573

Correction de la réponse de wch1zpink sur MacOS 12.0.1, grâce à l'application UI Browser :

tell application "System Preferences"
    reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
end tell
tell application "System Events"
    tell application process "System Preferences"
        repeat until (exists radio button "Scaled" of radio group 1 of group 1 of window "Displays")
            delay 0.1
        end repeat
        tell window "Displays"
            set isScaled to value of radio button "Scaled" of radio group 1 of group 1
            if isScaled = 0 then
                click radio button "Scaled" of radio group 1 of group 1
                click button 1 of UI element 3 of group 1
            else
                click radio button "Default for display" of radio group 1 of group 1
            end if
        end tell
    end tell
end tell
quit application "System Preferences"

Correction de la réponse de wch1zpink sur MacOS 10.15.4 :

tell application "System Preferences"
    reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
end tell
tell application "System Events" to tell process "System Preferences" to tell window "Built-in Retina Display"
    set isScaled to value of radio button "Scaled" of tab group 1
    if isScaled = 0 then
        click radio button "Scaled" of tab group 1
        click radio button 1 of radio group 1 of group 1 of tab group 1
    else
        click radio button "Default for display" of tab group 1
    end if
end tell
quit application "System Preferences"

4voto

Ryan Points 1035

Ce qui fonctionne pour moi en 2022 sur MacOS 12.1 sur MacBook Pro

Disposer d'un raccourci clavier unique permettant de basculer entre 2 résolutions :

  1. Automator > Fichier > Nouveau > Action rapide > Choisir
  2. Recherchez "Run AppleScript" et double-cliquez sur le résultat.
  3. Remplacez le code script par défaut par ce que je fournis ci-dessous.
  4. Essayez de cliquer plusieurs fois sur le bouton Exécuter pour voir si le basculement fonctionne.
  5. Enregistrez sous "toggle_display_resolution". (Plus tard, si vous souhaitez le modifier, vous ouvrirez le fichier /Users/your_username/Library/Services/toggle_display_resolution.workflow dans Automator).
  6. Fermer l'automate.
  7. Préférences système > Clavier > Raccourcis > Services
  8. Attribuez un raccourci clavier au nouveau service que vous avez créé (qui se trouvera probablement en bas de la liste).

Par ailleurs, il se peut que vous deviez modifier votre rubrique "Sécurité et confidentialité" > Accessibilité. Voir répondre .

on run {input, parameters}

    # https://apple.stackexchange.com/a/436069/53510
    tell application "System Preferences"
        reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
    end tell
    tell application "System Events"
        tell application process "System Preferences"
            repeat until (exists radio button "Scaled" of radio group 1 of group 1 of window "Displays")
                delay 0.1
            end repeat
            tell window "Displays"
                set isScaled to value of radio button "Scaled" of radio group 1 of group 1
                if isScaled = 0 then
                    click radio button "Scaled" of radio group 1 of group 1
                    # button '5' means highest resolution (smalled font):
                    click button 5 of UI element 3 of group 1
                else
                    click radio button "Default for display" of radio group 1 of group 1
                end if
            end tell
        end tell
    end tell
    # The next line is optional and could be commented out by prepending with a hash (#).
    quit application "System Preferences"

    return input
end run

P.S. Un grand merci à wch1zpink y Zade dont les réponses ont conduit aux miennes. Ajoutez un Upvote à leurs réponses également.

P.P.S. Je suis curieux de savoir si je pourrais plus facilement action cette action / ce service rapide.

2voto

Cookiezzz Points 1

Depuis MacOS 12.2.1 et l'introduction des raccourcis, vous n'avez plus besoin d'un raccourci clavier. Quoi qu'il en soit, un grand merci à Ryan qui ont fourni la base de mon code. Le voici :

    on run {input, parameters}

        # https://apple.stackexchange.com/a/436069/53510
        tell application "System Preferences"
            activate
            reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
            delay 2 #Make longer if needed
            tell application "System Events"
                tell application process "System Preferences"
                    tell window 1
                        click button 1 #Monitor settings
                        delay 0.7 #Make longer if needed
                        select row 2 of outline 1 of scroll area 1 of sheet 1 #Row=monitor number
                        click radio button 2 of radio group 1 of sheet 1 #Select "Scaled"
                        click button 2 of UI element 6 of sheet 1 #Select resolution
                        click button 2 of sheet 1 #Done
                        click button 4 #Close System Preferences
                    end tell
                end tell
            end tell
        end tell
        return input
    end run

Des délais sont nécessaires en raison du temps d'ouverture des fenêtres, sinon l'indexation est interrompue. Si l'indexation est toujours interrompue, il suffit de prolonger les délais. Pour le numéro de ligne, si vous voulez influencer par exemple votre troisième moniteur, écrivez "ligne 3" à la place. Si vous en faites un deuxième pour augmenter votre résolution et que scaled est déjà sélectionné, vous pouvez vous débarrasser de cette ligne.

EDIT : pour MacOS 12.3, remplacer le bouton 4 par le bouton 5

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