Vous pouvez combiner un rappel multitouch de l'espace utilisateur (par l'intermédiaire de MTRegisterContactFrameCallback
) avec un CGEventTap
pour bloquer les événements liés aux robinets. D'après l'expérimentation, le mauvais rejet de la paume semble provenir du matériel puisque si vous regardez l'identification du doigt rapportée dans le cadre multitouch, il semble penser que la paume est un pouce à plusieurs reprises. En revanche, le trackpad interne fait correctement et systématiquement la distinction entre les deux. J'ai donc simplement filtré sur la base de l'ID du doigt (je ne tape jamais avec mon pouce de toute façon) et cela fonctionne pour filtrer 95% des clics. Si vous le souhaitez, vous pouvez également jouer avec d'autres paramètres tels que la taille, l'orientation, etc. (le format de la trame de contact est bien documenté, voir par ex. https://gist.github.com/rmhsilva/61cc45587ed34707da34818a76476e11 pour un exemple de code sur la façon de l'utiliser)
Vous pourriez être plus sophistiqué et prendre en compte la position également, ce que BetterTouchTools fait, je crois, lorsque vous activez la fonction "filter tap-to-click at magic trackpad edge". Je ne sais pas trop pourquoi le développeur de BTT a dit que c'était infaisable (comme l'un des autres commentateurs l'a indiqué dans un problème github qui a été supprimé), puisque BTT a déjà une fonction pour faire cela (la fonction susmentionnée empêcher le tap-to-click au bord du trackpad). Mais cette fonctionnalité n'est pas très bien implémentée puisqu'elle semble s'appliquer à la fois aux trackpads internes et externes.
Vous pourriez également étendre ce principe au mouvement du pointeur, qui peut être bloqué de la même manière par un cgeventtap. Mais la difficulté dans ce cas peut être de corréler entre l'événement brut du trackpad et le cgevent qui suit, ce qui peut être la raison pour laquelle le BTT dev a hésité.
Au fait, vous vous êtes déjà demandé comment le BTT est capable de retourner l'orientation du trackpad magique même sur les versions 10.11 et supérieures ? Il utilise le MTDeviceSetSurfaceOrientation
appel dans le cadre privé multitouch. C'est incroyable que je n'aie trouvé aucune référence à ce sujet sur le web. Après 5 ans, on pourrait penser que quelqu'un aurait été curieux...
0 votes
Quel est le nom de ce produit, je souhaite l'acheter également.
0 votes
Voici un produit similaire : bullettrain.com/produits/express-keyboard-platform bien que je ne l'aie pas essayé.
0 votes
@Michael Prescott J'ai cherché partout ce produit spécifique, mais tout ce que j'ai trouvé jusqu'à présent, ce sont des choses comme le train à grande vitesse qui sont massivement encombrantes. J'ai fait une recherche d'image inversée mais rien n'est apparu. Pouvez-vous nous donner le nom du produit ou nous dire où vous l'avez trouvé ?
0 votes
Si vous êtes prêt à désactiver sip et à intervenir au niveau du kext, vous pouvez faire quelque chose comme github.com/cocoahuke/shrink_trackpad . Pour autant que je sache, avec le magic trackpad, le rejet de la paume se fait sur le trackpad lui-même et non sur le macbook hôte. Si vous faites un dump des frames entre multitouchdriver et hid interface vous verrez que la paume est généralement interprétée comme le pouce pour une raison ou une autre. (Attention : il est possible que le pilote multitouch fasse du traitement, mais je n'ai vu aucune preuve et la structure des trames correspond à la disposition des paquets du pilote linux mt2).
0 votes
Comme j'ai vu que la paume était généralement interprétée comme le pouce pour une raison quelconque, vous pourriez faire quelque chose de similaire à ce qui est indiqué ci-dessus, mais de manière plus sélective.
0 votes
Cela dit, si vous souhaitez uniquement empêcher le tap to click, vous pouvez probablement le faire avec un tap événementiel couplé à un rappel de cadre multitouch au niveau de l'espace utilisateur. C'est peut-être ainsi que bettertouchtool propose l'option "don't allow tap to click on right side" (ne pas autoriser le tap pour cliquer sur le côté droit). Mais il y aura toujours des mouvements de souris, et les empêcher est plus compliqué (j'imagine que c'est possible via des taps événementiels ou des apis CG, mais ce n'est pas très propre).