Buat pintasan keyboard untuk beralih pengguna dengan cepat di Mac OS X

16

Bagaimana Anda membuat pintasan keyboard yang mengaktifkan pergantian pengguna yang cepat (yaitu membuka jendela masuk) di Mac OS X Snow Leopard?

Saya mencoba untuk meniru kombinasi keyboard Start Windows + L, yang saya lewatkan dari waktu saya menggunakan Windows.

Brian Willis
sumber
sementara smalltown tidak memperbaiki jawabannya, Anda mungkin ingin memeriksa ini: macosxhints.com/article.php?story=20050706194219822 atau itu: artofgeek.com/2009/09/08/…
cregox

Jawaban:

7

Untuk Snow Leopard 10.6, seseorang dapat dengan mudah menambahkan Layanan menggunakan Automator, dan kemudian menetapkan pintasan keyboard apa pun menggunakan System Preferences. Lihat Fast User Switching / Apple Menu? untuk detail.

Arjan
sumber
7

Jika Anda berada di CLI, Anda dapat mengatur alias berikut untuk beralih dengan cepat:

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

sumber
Ini dan skrip cepat dan automator membuat pekerjaan cepat membutuhkan CLI berguna.
bmike
4

Saya menggunakan BetterTouchTool untuk lebih dari sekedar ini tetapi, salah satu tindakan yang memungkinkan Anda lakukan adalah "Tampilkan Layar Masuk" (yang berbeda dengan keluar dan meninggalkan Anda di layar masuk). Saya menggunakannya SELAMA WAKTU untuk mengunci mesin saya ketika saya meninggalkannya untuk jangka waktu yang lama ... Ini adalah tangkapan layar:

masukkan deskripsi gambar di sini

Levi Figueira
sumber
4

Sebenarnya, Command+ Option+ Q akan mengeluarkan Anda (dengan prompt "Apakah Anda yakin").

Tapi saya tidak melihat cara untuk memicu pengguna beralih dengan cepat melalui keyboard. Sekarang Anda dapat menulis skrip AppleScript, yang dapat Anda kaitkan dengan penekanan tombol. Misalnya, lihat ini untuk detail implementasi.

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
Benjamin Schollnick
sumber
@ Benjamin, Ini Command + Shift + Q
notnoop
2

Menurut Király dalam Diskusi Dukungan Apple, ia mengatakan kombinasi ini berfungsi:

... Ini dapat dilakukan dengan Automator dan Spark:

Buka Automator, pilih Run Shell Script, dan rekatkan ini (semuanya dalam satu baris):

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

File -> Save As ... -> pilih "Save as application" dan simpan aplikasi di tempat yang nyaman. Kemudian gunakan Spark untuk menetapkan pintasan keyboard untuk membuka aplikasi itu.

Saya menggunakan Automator dan Spark untuk beralih ke jendela masuk dan kemudian membuat Mac saya tidur ketika saya menekan control-F13 ...

Tentang perangkat lunak Spark 3.0b9 :

Spark adalah manajer Shortcuts yang kuat dan mudah. Dengan Spark Anda dapat membuat Hot Keys untuk meluncurkan aplikasi dan dokumen, menjalankan AppleScript, perintah iTunes, dan banyak lagi ... Anda juga dapat mengekspor dan mengimpor pustaka Hot Keys Anda, atau menyimpannya dalam format HTML untuk mencetaknya. Spark gratis, jadi gunakan tanpa moderasi!

Josh Lee
sumber
PS: Anda juga bisa melihat ada apa dengan skrip yang disarankan lainnya di luar sana: • AppleScript: Account Switcher Applet macosxautomation.com/applescript/accountswitcher/index.html
Jawaban ini terlalu besar dan cukup membingungkan untuk dibaca, dan Anda tidak benar-benar membutuhkan Spark setidaknya untuk Snow Leopard. Cukup buat itu di Automator sebagai Layanan dan tambahkan pintasan untuk itu di System Preferences. Saya akan menambahkan sendiri jawaban jika Anda tidak memperbaiki jawaban Anda, kawan kecil. ;)
cregox
1

Cara yang sedikit berbeda dalam melakukan ini, dengan manfaat keamanan tambahan (atau gangguan tergantung pada sudut pandang Anda), adalah untuk

  1. gunakan screen saver untuk mengunci komputer (memungkinkan pengguna beralih dari layar kunci)
  2. gunakan "hot-mouse-corner" untuk mengaktifkan penguncian / penghemat layar yang cepat

Untuk melakukan ini, Anda perlu menyesuaikan pengaturan berikut dalam aplikasi System Preferences Anda:

  • Di bawah Exposé & Spaces, di Exposétab, atur salah satu dari Anda Active Screen Cornerske Start Screen Saver.
  • Di bawah Securitydi Generaltab, periksa pilihan Require password ... after sleep or screen saver begins(Anda mungkin ingin memilih immediatelydari drop-down).

Anda harus melakukan yang terakhir pada setiap akun (sayangnya tidak ada pengaturan global untuk ini).

Kemudian Anda dapat memindahkan mouse ke sudut layar yang sesuai untuk mengunci komputer (dengan memulai screen saver). Ketika seseorang menekan tombol / menggerakkan mouse, mereka akan diminta untuk masuk dan dapat mengalihkan pengguna dari sana.

drfrogsplat
sumber
1

Jika keinginannya adalah mengunci (seperti Window-L di Windows), maka ada solusi yang sangat sederhana .. atur screensaver Anda untuk mengunci layar (perlu masuk) dan gunakan ctrl-shift-eject (kiri bawah dua tombol + paling kanan atas kunci). Ini mengunci layar Anda.

pengguna51303
sumber
1

Untuk beralih ke pengguna tertentu, saya mengaktifkan skrip yang saya temukan di komentar di artikel hints.macworld.com . Saya punya masalah dengan itu jadi saya men-tweak untuk mendapatkan jika untuk bekerja. Kata sandi disimpan dalam gantungan kunci, sehingga Anda tidak perlu khawatir tentang menyimpan kata sandi masuk dalam teks-jelas. Anda dapat menemukan intinya di sini .

--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

Untuk hanya memohon Layar Masuk saya memiliki skrip lain. Anda dapat menemukan intinya di sini

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

Kedua skrip ada di katalog quicksilver saya. Beralih di antara akun pengguna adalah masalah beberapa detik.

oschrenk
sumber