6 votes

Basculer le verrouillage des majuscules de manière programmable en utilisant AppleScript

Je cherche à basculer le verrouillage des majuscules de manière programmée en utilisant AppleScript. Voici quelque chose que j'ai essayé pour le faire fonctionner. Il semble fonctionner pour toutes les autres touches sauf le verrouillage des majuscules.

tell application "System Events"
    key code 57
end tell

57 est le code de touche pour le verrouillage des majuscules

5voto

OnePablo Points 1

Soumission d'une réponse distincte, car elle est entièrement différente de ma première en ce sens qu'elle résout le problème en cours. Crédit va à @user3439894 qui a dirigé l'OP et moi vers un lien (Activer le verrouillage des majuscules de manière programmatique) qui présente un code source écrit en C pouvant activer/désactiver de manière programmatique l'état des majuscules. Ainsi, crédit également à l'auteur original de ce code, pour lequel j'offre une traduction en JavaScript pour l'automatisation (JXA), qui est la variante JavaScript d'AppleScript.

Ce script inverse l'état du verrouillage des majuscules à chaque exécution :

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);
})();

Celui-ci, comme tout AppleScript, peut être exécuté depuis Éditeur de scripts (choisissez l'option de langue dans la barre de navigation en haut de la fenêtre). Malheureusement, Script Debugger ne prend pas en charge le JXA. Mais, en pratique, le script sera le plus utilement exécuté par le biais d'un autre logiciel d'automatisation, tel que Automator, Keyboard Maestro, Alfred, etc., tous pouvant exécuter des scripts JXA directement ; et tout logiciel ne proposant pas cette option peut l'exécuter par le biais de la commande shell osascript :

osascript -l JavaScript /chemin/vers/le/script.jxa.applescript

Vous pouvez utiliser une extension de fichier .applescript ou .scpt pour enregistrer le script.

1voto

OnePablo Points 1

Bien que ce ne soit pas exactement la même chose, une action similaire pourrait être de simuler le maintien enfoncé de la touche Maj. Vous pouvez commander à System Events de maintenir la touche shift enfoncée jusqu'à ce que vous lui commandiez de la réinitialiser :

dire à l'application "System Events" d'appuyer sur shift

Pour réinitialiser :

dire à l'application "System Events" de relâcher shift

Cela présente des différences évidentes par rapport à l'activation du verrouillage des majuscules, qui valent la peine d'être mentionnées en note de bas de page.

AVERTISSEMENT : Il peut être amusant puis rapidement ennuyant d'exécuter la première commande et de perdre la capacité, par exemple, d'entrer un chiffre (ce qui ne peut être fait que si la touche shift est relâchée). L'action de la touche shift affectera les clics de souris, les raccourcis, etc. Pour illustrer, si vous exécutez habituellement un script en appuyant sur R, cela ne sera pas possible tant que la touche shift est active, car le système enregistrera R (heureusement, un +click sur les éléments de menu semble effectuer la même action qu'un simple clic).

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X