El cambio de distribución del teclado mediante CapsLock es una función añadida a macOS 10.12 en 2016. No parece estar muy bien documentada por Apple, lo que no debería sorprender a nadie que lleve mucho tiempo utilizando sus productos. No he conseguido encontrar ninguna documentación "a nivel de desarrollador" de esta función en absoluto.
Así que, básicamente, para responder a tu pregunta: Para cambiar de un idioma/disposición a otro usando CapsLock debes crear una disposición de teclado personalizada que combine ambas disposiciones. Creo que Ukelele sería la forma más fácil de lograr esto.
Sin embargo, tenga en cuenta que esta es una solución que se acerca a duplicar la función original, aunque hay algunas discrepancias menores que, para mí personalmente, son preferibles a la forma en que la función original fue diseñada para trabajar, aunque sus preferencias y prioridades pueden, obviamente, variar. Mientras que su solución usando Karabiner emula más de cerca la característica original que hace mi opción algo redundante y potencialmente inferior. Pero tiene algunas ventajas en mi opinión, así que he decidido publicarla.
En cualquier caso, para utilizar mi solución, debe crear una única distribución de teclado personalizada basada en el teclado estadounidense que también tenga la distribución apropiada del idioma extranjero/sistema de escritura programada directamente en las combinaciones de modificadores basadas en CapsLock (capas de teclado o niveles de mayúsculas, como Caps+Shift, Caps+Option y etc.). Mac OSX trata esencialmente a CapsLock como una tecla modificadora normal, pero de bloqueo, sin ninguna limitación. Por lo tanto, con Ukelele puede crear un diseño que soporte múltiples scripts y utilizar CapsLock para cambiar entre ellos.
Las combinaciones de modificadores basadas en el latín pueden crearse automáticamente en su mayor parte (si no en su totalidad) de varias maneras (la más fácil es duplicar el teclado estadounidense que se utiliza, o crear una disposición que refleje la disposición activa en ese momento).
Para las capas secundarias de scriptpuedes abrir un teclado de ese idioma que desees emular (o aproximar) y arrastrar las asignaciones de teclas de ese teclado al tuyo (con la combinación de modificadores adecuada basada en CapsLock activada).
No creo que se pueda evitar un poco de trabajo manual, pero se puede lograr el objetivo de forma nativa de esta manera. Hay algunas ventajas y desventajas potenciales de esta opción dependiendo de tus preferencias. Por ejemplo, la bandera no cambiará de EE.UU. a otra bandera, lo que puede ser visto como una desventaja, aunque eso es irrelevante para mí personalmente. Sin embargo, usted tendrá el LED de CapsLock como un indicador que es visible en el propio teclado que puede ser visto como una ventaja. Esto también evita tener que cambiar la distribución del teclado, lo que a veces es necesario cuando se cambia de aplicación o de documento, así como el ligero retraso que conlleva, lo que es especialmente valioso para mí, ya que me vuelve loco cuando la distribución del teclado es potencialmente diferente en cada aplicación.
Dado que ya tiene una solución que funciona, esto probablemente no será de especial utilidad, sin embargo, tal vez otro usuario pueda encontrar esta solución útil o informativa.