La presentación separada respuesta, ya que es completamente distinta de la primera en que se soluciona el problema a la mano. El crédito va para @user3439894 , quien señaló que el OP y me de un link (de palanca de bloqueo de mayúsculas mediante programación) que presenta a algunos de código fuente escrito en C que se puede cambiar mediante programación/establecer el estado del bloqueo de mayúsculas. Así, el crédito va también para el autor original de ese código, para los que me ofrecen una traducción en JavaScript para la Automatización (JXA), que es el JavaScript sabor de AppleScript.
Este script cambia el estado de bloqueo de mayúsculas en cada carrera:
ObjC.import("IOKit");
ObjC.import("CoreServices");
(() => {
var ioConnect = Ref();
var state = Ref();
$.IOServiceOpen(
$.IOServiceGetMatchingService(
$.kIOMasterPortDefault,
$.IOServiceMatching(
$.kIOHIDSystemClass
)
),
$.mach_task_self_,
$.kIOHIDParamConnectType,
ioConnect
);
$.IOHIDGetModifierLockState(ioConnect, $.kIOHIDCapsLockState, state);
$.IOHIDSetModifierLockState(ioConnect, $.kIOHIDCapsLockState, !state[0]);
$.IOServiceClose(ioConnect);
})();
Este, como cualquier AppleScript, se puede ejecutar desde dentro del Editor de secuencias de Comandos (seleccione la opción de idioma en la barra de navegación en la parte superior de la ventana). Lamentablemente, Depurador de secuencias de Comandos no se adapta para JXA. Pero, en la práctica, la secuencia de comandos será más útil ejecutado por algún otro software de automatización, tales como Automator, Teclado Maestro, Alfred, etc., todo lo cual puede ejecutar JXA scripts directamente; y cualquier software que no ofrecen esta opción puede ejecutar por medio de los comandos de shell osascript
:
osascript -l JavaScript /path/to/script.jxa.applescript
Usted puede usar un .applescript
o .scpt
de la extensión de archivo para guardar la secuencia de comandos.