Нещодавно я придбав зовнішню клавіатуру (не яблучну), яка використовується вдома, а також час від часу перетягується зі мною, і я помітив потребу.
Мій Mac англійською мовою, як і його фізична клавіатура. Однак моя зовнішня клавіатура є норвезькою мовою.
Мені здається, що це дуже громіздко потрібно міняти розміщення клавіатури щоразу, коли я міняю клавіатуру, що може бути досить часто. Я помітив, що розкладка клавіатури може змінюватися відповідно до використовуваної програми, але це не завжди працює.
Чи можливо змусити Mac змінити розкладку клавіатури на основі поточної клавіатури, яка використовується, або кожного разу, коли я підключаю зовнішню клавіатуру?
Щось я вже пробував
Я створив AppleScript, який вирішує це, але зіткнувся з деякими проблемами з Mojave та його безпекою, і тому цікаво, чи варто підходити до цього по-іншому. Я додаю сценарій для довідки, нам, можливо, доведеться просто змінити його, якщо немає кращого рішення.
Буду вдячний за будь-які думки.
Проблема, з якою я стикаюся, полягає в тому, що додатку заборонено надсилати натискання клавіш через системні події, навіть якщо я це дозволив у системних налаштуваннях.
--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