web-dev-qa-db-fra.com

Créez un raccourci clavier pour la commutation rapide de l'utilisateur dans Mac OS X

Comment créez-vous un raccourci clavier qui active la commutation rapide de l'utilisateur (c'est-à-dire la fenêtre de connexion) dans Mac OS X Snow Leopard?

J'essaie d'émuler la combinaison de clavier Start + L de Windows, ce qui me manque de mon temps à l'aide de Windows.

16
Brian Willis

Pour 10,6 Snow Leopard, on peut facilement ajouter un service à l'aide de l'automatiseur, puis affecter tout raccourci clavier à l'aide des préférences du système. Voir Menu de commutation rapide/Apple? Pour plus de détails.

7
Arjan

Si vous êtes au CLI, vous pouvez avoir l'alias suivant défini pour passer rapidement:

alias switch='/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend'
7
user31752

J'utilise mieuxtouchtool Pour beaucoup plus que cela, mais une des actions qu'il vous permet de faire est "Afficher l'écran de connexion" (qui est différente de vous déconnecter et de vous laisser à l'écran de connexion) . Je l'utilise tout le temps pour verrouiller ma machine lorsque je le laisse pendant de longues périodes ... Voici une capture d'écran:

enter image description here

4
Levi Figueira

À proprement parler, Command+Option+Q Je vous connecte (avec "es-tu sûr".

Mais je ne vois aucun moyen de déclencher un interrupteur d'utilisateur rapide via le clavier. Vous pouvez maintenant écrire un script App AppleScript que vous pourriez associer à une frappe de frappe. Par exemple, voir Ceci pour les détails de la mise en œuvre.

set thePassword to "password"
set N to name of (info for (path to me))
set AppleScript's text item delimiters to (".")
set N to first text item of N
set AppleScript's text item delimiters to ""
set N to do Shell script "/usr/bin/id -u " & N
do Shell script "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -switchToUserID " & N
tell application "System Events"
    tell process "SecurityAgent" to set value of text field 1 of group 1 of window 1 to thePassword
    click button 2 of window 1 of application process "SecurityAgent"
end tell
4
Benjamin Schollnick

Selon Király In Apple Discussions de soutien, il dit que cette combinaison fonctionne:

... Cela peut être fait avec l'automatiseur et l'étincelle:

Ouvrez l'automatiseur, sélectionnez Exécuter le script Shell et Coller dans ceci (tous sur une ligne):

/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend

Fichier -> Enregistrer sous ... -> Sélectionnez "Enregistrer sous l'application" et enregistrez l'application dans un endroit pratique. Ensuite, utilisez Spark pour attribuer un raccourci clavier pour ouvrir cette application.

J'utilise Automator et Spark pour passer à la fenêtre de connexion, puis mettre mon Mac pour dormir lorsque je appuie sur Control-F13 ...

À propos de Spark 3.0B9 logiciel :

Spark est un gestionnaire de raccourcis puissant et facile. Avec Spark Vous pouvez créer des touches de raccourci pour lancer des applications et des documents, exécutez AppleScript, commandez iTunes, etc. Vous pouvez également exporter et importer votre bibliothèque de clés à chaud ou enregistrer le format HTML Pour l'imprimer. Spark est libre, utilisez-le sans modération!

2
in a small town

Pour passer à un utilisateur spécifique, j'invoque un script que j'ai trouvé dans les commentaires d'un hint.macworld.com article . J'ai eu des problèmes avec cela, donc je l'ai modifié pour avoir si de travailler. Le mot de passe est stocké dans le porte-clés, vous n'avez donc pas à vous soucier de stocker le mot de passe de connexion à ClearText. Vous pouvez trouver le gist ici .

--This script MUST be named "Switch to User.scpt", where User is the name of the user to switch to.
--You must first make a password item (a.k.a. a key) for the other user's password using Keychain Access, and call it "", where "user" is the other user's name and with the description "User Login". The script assumes that you make this key in your login.keychain, which is the default one.
--The first time you run this script, you will be prompted to allow Keychain Scripting to access the password of the key.
--This script requires "Enable access for assistive devices" to be enabled in the Universal Access system preference pane.

set username to Word -1 of my findReplace(".scpt", "", (path to me as text))

-- Invoke Fast User Switching. The `id -ur username` part gets the uid number that corresponds to the username and substitutes it at the end of the CGSession command
do Shell script "/System/Library/CoreServices/'Menu Extras'/User.menu/Contents/Resources/CGSession -switchToUserID `id -ur " & username & "`"

-- Use universal access to enter the text and to click the button
tell application "System Events"
    repeat
        if (do Shell script "stat -f %Su /dev/console") is username then exit repeat

        -- Get the password for the username
        try
            set pswd to (do Shell script "security find-generic-password -g -s \"" & username & "\" -D \"User Login\" 2>&1 1>/dev/null | sed -e 's/password: \"//' -e 's/\"//'")
        on error
            exit repeat
        end try

        if exists window 1 of application process "SecurityAgent" then
            tell process "SecurityAgent" to set value of text field 1 of window 1 to pswd
            key code 36
            exit repeat
        else
            tell application "SecurityAgent" to quit
            do Shell script "/System/Library/CoreServices/'Menu Extras'/User.menu/Contents/Resources/CGSession -switchToUserID `id -ur " & username & "`"
        end if
    end repeat
end tell

on findReplace(findText, replaceText, sourceText)
    set ASTID to AppleScript's text item delimiters
    set AppleScript's text item delimiters to findText
    set sourceText to text items of sourceText
    set AppleScript's text item delimiters to replaceText
    set sourceText to sourceText as text
    set AppleScript's text item delimiters to ASTID
    return sourceText
end findReplace

Pour simplement appeler l'écran de connexion, j'ai un autre script. Vous pouvez trouver le gist ici

do Shell script "'/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession' -suspend"

Les deux scripts sont dans mon catalogue Quicksilver. La commutation entre les comptes d'utilisateurs est une question de quelques secondes.

1
oschrenk

Une façon légèrement différente de le faire, avec des avantages de sécurité supplémentaires (ou des ennuis en fonction de votre point de vue), est de

  1. utilisez l'économiseur d'écran pour verrouiller l'ordinateur (permettant la commutation utilisateur de l'écran de verrouillage)
  2. utilisez "HOT-Souris-Corners" pour activer l'activation rapide de verrouillage/économiseur d'écran

Pour ce faire, vous devez ajuster les paramètres suivants dans la demande de préférences système:

  • Sous Exposé & Spaces, dans le Exposé onglet, définissez l'un de vos Active Screen Corners à Start Screen Saver.
  • Sous Security dans l'onglet General, vérifiez l'option de Require password ... after sleep or screen saver begins (Vous voudrez peut-être choisir immediately de la liste déroulante).

Vous devrez faire ce dernier sur chaque compte (malheureusement, il n'y a pas de paramètre global pour cela).

Ensuite, vous pouvez déplacer votre souris dans le coin approprié de l'écran pour verrouiller l'ordinateur (en démarrant l'économiseur d'écran). Lorsque quelqu'un appuie une clé/déplace la souris, ils seront invités à se connecter et à changer d'utilisateur de là.

1
drfrogsplat
1
nik

Si le désir est de verrouiller (comme Window-L sous Windows), il y a une solution très simple. Définissez votre économiseur d'écran pour verrouiller l'écran (nécessiter une connexion) et utiliser ctrl-shift-éjection (bas à gauche de deux clés + haut la plus droite clé). Cela verrouille votre écran.

1
user51303