Tạo lối tắt bàn phím để chuyển đổi người dùng nhanh trong Mac OS X


16

Làm thế nào để bạn tạo một phím tắt kích hoạt chuyển đổi người dùng nhanh (tức là mở cửa sổ đăng nhập) trong Mac OS X Snow Leopard?

Tôi đang cố gắng mô phỏng tổ hợp bàn phím Windows Start + L mà tôi đã bỏ lỡ khi sử dụng Windows.


trong khi smalltown không sửa câu trả lời của anh ấy, bạn có thể muốn kiểm tra điều này: macosxhints.com/article.php?story=20050706194219822 hoặc đó: artofgeek.com/2009/09/08/iêu
cregox

Câu trả lời:



7

Nếu bạn đang ở CLI, bạn có thể đặt bí danh sau để chuyển nhanh chóng:

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

Điều này và fastscripts và automator làm cho công việc nhanh chóng cần một CLI tiện dụng.
bmike

4

Tôi sử dụng BetterTouchTool không chỉ cho việc này, nhưng, một trong những hành động mà nó cho phép bạn thực hiện là "Hiển thị màn hình đăng nhập" (khác với đăng xuất và để bạn ở màn hình đăng nhập). Tôi sử dụng nó TẤT CẢ THỜI GIAN để khóa máy của mình khi tôi để máy trong thời gian dài. Đây là ảnh chụp màn hình:

nhập mô tả hình ảnh ở đây


4

Nói đúng ra, Command+ Option+ Q sẽ đăng xuất bạn (với lời nhắc "Bạn có chắc không").

Nhưng tôi không thấy cách nào để kích hoạt chuyển đổi người dùng nhanh qua bàn phím. Bây giờ bạn có thể viết một tập lệnh AppleScript mà bạn có thể liên kết với tổ hợp phím. Ví dụ, xem điều này để biết chi tiết thực hiện.

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, Đó là Lệnh + Shift + Q
notnoop

2

Theo Király trong Thảo luận hỗ trợ của Apple, ông nói rằng sự kết hợp này hoạt động:

... Điều này có thể được thực hiện với Automator và Spark:

Mở Automator, chọn Run Shell Script và dán vào đây (tất cả trên một dòng):

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

Tệp -> Lưu dưới dạng ... -> chọn "Lưu dưới dạng ứng dụng" và lưu ứng dụng vào vị trí thuận tiện. Sau đó sử dụng Spark để gán phím tắt để mở ứng dụng đó.

Tôi sử dụng Automator và Spark để chuyển sang cửa sổ đăng nhập và sau đó đặt máy Mac của tôi vào chế độ ngủ khi tôi nhấn control-F13 ...

Giới thiệu về phần mềm Spark 3.0b9 :

Spark là một trình quản lý Phím tắt mạnh mẽ và dễ dàng. Với Spark, bạn có thể tạo Phím nóng để khởi chạy ứng dụng và tài liệu, thực thi AppleScript, ra lệnh iTunes và hơn thế nữa ... Bạn cũng có thể xuất và nhập thư viện Phím nóng hoặc lưu ở định dạng HTML để in. Spark là miễn phí, vì vậy sử dụng nó mà không cần kiểm duyệt!


PS: Bạn cũng có thể thấy những gì với các tập lệnh được đề xuất khác đã có: • AppleScript: Trình chuyển đổi tài khoản Applet macosxautomation.com/applescript/accountswitcher/index.html

Câu trả lời này quá lớn và khá khó hiểu để đọc, và bạn không thực sự cần Spark ít nhất là cho Snow Leopard. Chỉ cần tạo nó trên Automator dưới dạng Dịch vụ và thêm lối tắt vào Tùy chọn hệ thống. Tôi sẽ tự thêm một câu trả lời nếu bạn không sửa lỗi của mình, smalltown-dude. ;)
cregox


1

Một cách hơi khác để làm điều này, với các lợi ích bảo mật được thêm vào (hoặc phiền toái tùy thuộc vào quan điểm của bạn), là

  1. sử dụng trình bảo vệ màn hình để khóa máy tính (cho phép người dùng chuyển từ màn hình khóa)
  2. sử dụng "góc chuột nóng" để kích hoạt khóa nhanh / kích hoạt trình bảo vệ màn hình

Để thực hiện việc này, bạn cần điều chỉnh các cài đặt sau trong ứng dụng Tùy chọn hệ thống:

  • Trong Exposé & Spaces, trong Exposétab, đặt một trong số của bạn Active Screen CornersthànhStart Screen Saver .
  • Theo Securitytrong Generaltab, đánh dấu vào tùy chọn Require password ... after sleep or screen saver begins(bạn có thể muốn chọn immediatelytừ trình đơn thả xuống).

Bạn sẽ phải thực hiện sau trên mỗi tài khoản (tiếc là không có cài đặt toàn cầu cho việc này).

Sau đó, bạn có thể di chuyển chuột đến góc thích hợp của màn hình để khóa máy tính (bằng cách khởi động trình bảo vệ màn hình). Khi ai đó nhấn phím / di chuyển chuột, họ sẽ được nhắc đăng nhập và có thể chuyển người dùng từ đó.


1

Nếu mong muốn là khóa (như Window-L trong Windows), thì có một giải pháp rất đơn giản .. đặt trình bảo vệ màn hình của bạn để khóa màn hình (yêu cầu đăng nhập) và sử dụng ctrl-shift-eject (dưới cùng bên trái hai phím + trên cùng bên phải Chìa khóa). Điều này khóa màn hình của bạn.


1

Để chuyển sang một người dùng cụ thể, tôi gọi một tập lệnh mà tôi đã tìm thấy trong các bình luận của một bài viết hint.macworld.com . Tôi có vấn đề với nó vì vậy tôi đã điều chỉnh nó để có được nếu làm việc. Mật khẩu được lưu trữ trong móc khóa, vì vậy bạn không phải lo lắng về việc lưu trữ mật khẩu đăng nhập trong Cleartext. Bạn có thể tìm thấy ý chính ở đây .

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

Để gọi màn hình đăng nhập, tôi có một đoạn script khác. Bạn có thể tìm thấy ý chính ở đây

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

Cả hai kịch bản đều có trong danh mục quicksilver của tôi. Chuyển đổi giữa các tài khoản người dùng là một vài giây.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.