Éviter les demandes d'autorisations liées à l'accessibilité avec CGEvent.tapCreate

PyrohPyroh Membre
mars 2022 modifié dans API AppKit #1

Salut,

J'ai un soucis, j'utilise CGEvent.tapCreate pour espionner les drag sessions dans une app. L'intérêt est de savoir quand le drag sort de la fenêtre ou y revient et s'y adapter.
Le soucis c'est que l'utilisateur se retrouve avec ça :

C'est louable mais dans les faits je ne monitore pas les touches, juste l'emplacement de la souris. D'après la doc je n'ai besoin d'aucune autorisation pour le faire et dans les faits c'est le cas: quelque soit la réponse que je donne ça fonctionnera quand même.

Qu'est-ce que ça fait ? Me demanderez-vous, alors étonnés. Je vous répondrai simplement par une autre question : z'avez jamais vu un utilisateur ou quoi ?. Oui c'est dédaigneux. Mais on sait que ce genre de popup peut avoir un impact négatif sur certains et découler sur des reviews négatives.

Encore une question, donc, quelqu'un sait comment s'en passer quand on utilise CGEvent.tapCreate ? Ou une alternative, c'est bien aussi, la découverte.

Réponses

  • @Pyroh a dit :
    Salut,

    J'ai un soucis, j'utilise CGEvent.tapCreate pour espionner les drag sessions dans une app. L'intérêt est de savoir quand le drag sort de la fenêtre ou y revient et s'y adapter.
    Le soucis c'est que l'utilisateur se retrouve avec ça :

    C'est louable mais dans les faits je ne monitore pas les touches, juste l'emplacement de la souris. D'après la doc je n'ai besoin d'aucune autorisation pour le faire et dans les faits c'est le cas: quelque soit la réponse que je donne ça fonctionnera quand même.

    Qu'est-ce que ça fait ? Me demanderez-vous, alors étonnés. Je vous répondrai simplement par une autre question : z'avez jamais vu un utilisateur ou quoi ?. Oui c'est dédaigneux. Mais on sait que ce genre de popup peut avoir un impact négatif sur certains et découler sur des reviews négatives.

    Encore une question, donc, quelqu'un sait comment s'en passer quand on utilise CGEvent.tapCreate ? Ou une alternative, c'est bien aussi, la découverte.

    Normalement on peux pas s'en passer
    Quelques infos ici: https://docs.google.com/presentation/d/1nEaiPUduh1vjks0rDVRTcJaEULbSWWh1tVdG2HF_XSU/htmlpresent

  • PyrohPyroh Membre

    Ouais alors c'est plus compliqué que ça. Et pas forcément documenté.
    CGEvent.tapCreate va fonctionner comme le local monitor de NSEvent quelle que soit les autorisations qui lui sont données. Donc tant que l'application est active ça fonctionne.

    MAIS ! Dans mon cas, le drag&drop permettant d'activer une application en la survolant, mon application n'est plus active. Alors le tap va fonctionner comme un global monitor et là il faut que les autorisations soient données (celles liées à l'accessibilité) pour que ça puisse continuer à recevoir les events.

    Donc j'ai pas le choix.

Connectez-vous ou Inscrivez-vous pour répondre.