Mac OS X Snow Leopardでユーザーの簡易切り替えをアクティブにする(つまり、ログインウィンドウを表示する)キーボードショートカットを作成するにはどうすればよいですか?
WindowsのStart + Lキーボードの組み合わせをエミュレートしようとしています。
10.6 Snow Leopardの場合、Automatorを使用してサービスを簡単に追加し、システム環境設定を使用してキーボードショートカットを割り当てることができます。詳細は Fast User Switching/Apple Menu? を参照してください。
CLIを使用している場合は、次のエイリアスを設定してすばやく切り替えることができます。
alias switch='/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend'
私はこれ以外にも BetterTouchTool を使用していますが、実行できるアクションの1つは「ログイン画面を表示する」です(これは、ログアウトしてログイン画面に移動するのとは異なります)。 。私はそれをずっと使用して、マシンを長時間離れたときに自分のマシンをロックします…これがスクリーンショットです。
厳密に言えば、 Command+Option+Q ログアウトします(「Are you sure」プロンプトが表示されます)。
しかし、キーボードを使用してユーザーの簡易切り替えをトリガーする方法はありません。これで、キーストロークに関連付けることができるAppleScriptスクリプトを記述できます。たとえば、実装の詳細については this を参照してください。
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
Appleサポートディスカッション)のキラリーによると、彼はこの組み合わせが機能すると言います:
...これはAutomatorとSparkで実行できます。
Automatorを開き、[Run Shell Script]を選択して、これを貼り付けます(すべて1行で)。
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
ファイル->名前を付けて保存...->「アプリケーションとして保存」を選択し、便利な場所にアプリを保存します。次に、Sparkを使用して、そのアプリを開くためのキーボードショートカットを割り当てます。
AutomatorとSparkを使用してログインウィンドウに切り替え、control-F13を押すとMacをスリープ状態にします...
Sparkは強力で簡単なショートカットマネージャーです。 Sparkを使用すると、アプリケーションやドキュメントの起動、AppleScriptの実行、iTunesのコマンドなどのホットキーを作成できます...ホットキーライブラリをエクスポートしてインポートするか、HTML形式で保存することもできます印刷するにはSparkは無料なので、節度なしで使用してください!
特定のユーザーに切り替えるには、hints.macworld.comのコメントにあるスクリプト article を呼び出します。私はそれに問題があったので、うまくいくかどうかを確認するために微調整しました。パスワードはキーチェーンに保存されるため、ログインパスワードをクリアテキストで保存することを心配する必要はありません。 Gist here を見つけることができます。
--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
ログイン画面を呼び出すだけの場合は、別のスクリプトがあります。あなたは要点を見つけることができます ここ
do Shell script "'/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession' -suspend"
どちらのスクリプトも私のクイックシルバーカタログにあります。ユーザーアカウントの切り替えは数秒で完了します。
これを行うには少し異なる方法があり、セキュリティ上の利点(または見方によっては煩わしい)が追加されます。
これを行うには、システム環境設定アプリケーションで次の設定を調整する必要があります。
Exposé & Spaces
の[Exposé
]タブで、Active Screen Corners
の1つをStart Screen Saver
に設定します。Security
タブのGeneral
の下で、Require password ... after sleep or screen saver begins
のオプションをチェックします(ドロップダウンからimmediately
を選択することもできます)。後者は各アカウントで行う必要があります(残念ながら、このためのグローバル設定はありません)。
次に、マウスを画面の適切な隅に移動して、コンピュータをロックします(スクリーンセーバーを起動することにより)。誰かがキーを押すかマウスを動かすと、ログインを求められ、そこからユーザーを切り替えることができます。
バトラーを使用した高速ユーザー切り替え および バトラー を確認します。
ロックしたい場合(WindowsのWindow-Lなど)、非常にシンプルな解決策があります。スクリーンセーバーを設定して画面をロックし(ログオンが必要)、ctrl-shift-eject(左下の2つのキー+右上)を使用します。キー)。これにより画面がロックされます。