9 votos

Cambio automático de la distribución del teclado al conectar un teclado externo

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

0voto

bgp2000 Puntos 146

Existe una utilidad para realizar el cambio automático, pero aparentemente necesita algo de trabajo para ciertos vendedores de teclados: https://superuser.com/a/1150616 . Enlace directo: https://github.com/ohueter/autokbisw

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X