1 votes

AppleScript pour vérifier si la touche fn est enfoncée ?

Comment puis-je renvoyer 1 lorsque la fn est enfoncée et 0 sinon ?

J'ai trouvé cette page qui prétend avoir une solution mais qui repose sur un fichier de script shell externe. (Je préférerais avoir une solution pure AppleScript si c'est possible) que je ne peux pas télécharger car il me redirige vers des sites d'arnaques néerlandais étranges.

Le but est en fait d'avoir un moyen de vérifier les combinaisons de touches touche de fonction + fn dans ControllerMate, qui ne semble pas avoir de moyen de vérifier si fn est enfoncé ou non.

1voto

Tetsujin Points 95239

Tiré directement du post par Oscar...

propriété vers : "1.0"
maison isModifierKeyPressed("fonction") // la seule addition à son script brut

sur isModifierKeyPressed(checkKey)
    set modiferKeysDOWN to {command_down:false, option_down:false, control_down:false, shift_down:false, caps_down:false, numlock_down:false, function_down:false}

    si checkKey = "" ou checkKey = "option" ou checkKey = "alt" alors
        si (do shell script "/usr/bin/python -c 'import Cocoa; print Cocoa.NSEvent.modifierFlags() & Cocoa.NSAlternateKeyMask '") > 1 then
            set option_down of modiferKeysDOWN to true
        end if
    end if

    si checkKey = "" ou checkKey = "command" alors
        si (do shell script "/usr/bin/python -c 'import Cocoa; print Cocoa.NSEvent.modifierFlags() & Cocoa.NSCommandKeyMask '") > 1 then
            set command_down of modiferKeysDOWN to true
        end if
    end if

    si checkKey = "" ou checkKey = "shift" alors
        si (do shell script "/usr/bin/python -c 'import Cocoa; print Cocoa.NSEvent.modifierFlags() & Cocoa.NSShiftKeyMask '") > 1 then
            set shift_down of modiferKeysDOWN to true
        end if
    end if

    si checkKey = "" ou checkKey = "control" alors
        si (do shell script "/usr/bin/python -c 'import Cocoa; print Cocoa.NSEvent.modifierFlags() & Cocoa.NSControlKeyMask '") > 1 then
            set control_down of modiferKeysDOWN to true
        end if
    end if

    si checkKey = "" ou checkKey = "caps" ou checkKey = "capslock" alors
        si (do shell script "/usr/bin/python -c 'import Cocoa; print Cocoa.NSEvent.modifierFlags() & Cocoa.NSAlphaShiftKeyMask '") > 1 then
            set caps_down of modiferKeysDOWN to true
        end if
    end if

    si checkKey = "" ou checkKey = "numlock" alors
        si (do shell script "/usr/bin/python -c 'import Cocoa; print Cocoa.NSEvent.modifierFlags() & Cocoa.NSNumericPadKeyMask'") > 1 then
            set numlock_down of modiferKeysDOWN to true
        end if
    end if

    si checkKey = "" ou checkKey = "function" ou checkKey = "func" ou checkKey = "fn" alors
        si (do shell script "/usr/bin/python -c 'import Cocoa; print Cocoa.NSEvent.modifierFlags() & Cocoa.NSFunctionKeyMask'") > 1 then
            set function_down of modiferKeysDOWN to true
        end if
    end if

    retourner modiferKeysDOWN
fin isModifierKeyPressed

si Fn est enfoncée

Résultat :  
{command_down:false, option_down:false, control_down:false, shift_down:false, caps_down:false, numlock_down:false, function_down:true}

sinon

Résultat :  
{command_down:false, option_down:false, control_down:false, shift_down:false, caps_down:false, numlock_down:false, function_down:false}

0 votes

Cela ne fonctionne pas pour moi car si l'utilisateur maintient la touche F1 enfoncée par exemple, cela continue à indiquer vrai.

0 votes

Juste une mise à jour pour dire que plus bas dans le même fil de discussion il y a une version de la même routine qui n'utilise pas php. Ceci est important car macOS 12 a maintenant déprécié php.

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