Gần đây tôi đã mua một bàn phím ngoài (không phải táo) được sử dụng ở nhà và thỉnh thoảng cũng kéo theo tôi và tôi đã nhận thấy một nhu cầu.
Mac của tôi bằng tiếng Anh, cũng như bàn phím vật lý của nó. Tuy nhiên, bàn phím ngoài của tôi là tiếng Na Uy.
Tôi thấy nó khá cồng kềnh khi phải hoán đổi bố cục bàn phím mỗi lần tôi trao đổi bàn phím, điều này có thể khá thường xuyên. Tôi nhận thấy rằng bố cục bàn phím có thể thay đổi theo ứng dụng đang được sử dụng, nhưng điều này không phải lúc nào cũng hoạt động.
Có thể làm cho Mac thay đổi bố cục bàn phím dựa trên bàn phím hiện tại đang được sử dụng hoặc mỗi lần tôi cắm vào rút phích cắm bàn phím ngoài không?
Một cái gì đó tôi đã thử
Tôi đã tạo ra một AppleScript để giải quyết vấn đề này, nhưng gặp phải một số vấn đề với Mojave và bảo mật của nó, và do đó tự hỏi liệu tôi có nên tiếp cận điều này khác đi không. Tôi sẽ đính kèm tập lệnh để tham khảo, chúng tôi có thể phải thay đổi tập lệnh nếu không có giải pháp tốt hơn ..
Sẽ đánh giá cao bất kỳ suy nghĩ nào cả.
Vấn đề tôi gặp phải là ứng dụng không được phép gửi tổ hợp phím thông qua các sự kiện hệ thống, mặc dù tôi đã cho phép nó trong Tùy chọn hệ thống.
--Checks connected usb devices for description, performs keypresses if condition is met
set devicePresent to false
set changeLayout to false
delay 2 --delay may not be needed. To make sure that usb device is registred before script is triggered
set currentLayout to do shell script "defaults read ~/Library/Preferences/com.apple.HIToolbox.plist AppleSelectedInputSources | egrep -w 'KeyboardLayout Name' | cut -d '=' -f2;exit "
set USB to paragraphs of (do shell script "system_profiler SPUSBDataType -detailLevel basic")
repeat with i from 1 to (count of USB)
if item i of USB contains "Product ID: 0x0059" then set devicePresent to true
end repeat
if (devicePresent) then
if currentLayout contains "ABC" then set changeLayout to true --changes layout to norwegian
end if
if (not devicePresent) then
if currentLayout contains "Norwegian" then set changeLayout to true --changes layout to english
end if
if (changeLayout) then tell application "System Events"
key code 49 using control down
set newLayout to do shell script "defaults read ~/Library/Preferences/com.apple.HIToolbox.plist AppleSelectedInputSources | egrep -w 'KeyboardLayout Name' | cut -d '=' -f2;exit "
display notification ("Changed layout from " & currentLayout & " to " & newLayout) with title "New Layout" sound name "Sound Name"
end tell