Hace poco compré un teclado externo (no Apple) que se usa en casa y también se arrastra conmigo de vez en cuando, y he notado una necesidad.
Mi Mac está en inglés, al igual que su teclado físico. Sin embargo, mi teclado externo está en noruego.
Me resulta bastante engorroso tener que cambiar la distribución del teclado cada vez que cambio de teclado, que puede ser bastante a menudo. Me he dado cuenta de que la distribución del teclado puede cambiar en función de la aplicación que se esté utilizando, pero esto no siempre funciona.
¿Es posible hacer que el Mac cambie la distribución del teclado en función del teclado que se esté utilizando o cada vez que conecte o desconecte el teclado externo?
Algo que ya he probado
He creado un AppleScript que más o menos resuelve esto, pero se encontró con algunos problemas con Mojave y su seguridad, y por lo tanto se pregunta si debo abordar esto de manera diferente. Voy a adjuntar el script para referencia, que podría tener que acaba de alterar si no hay una solución mejor..
Agradecería cualquier opinión al respecto.
El problema que me encuentro es que la aplicación no puede enviar pulsaciones de teclas a través de eventos del sistema, a pesar de que lo he permitido en Preferencias del Sistema.
--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