7 votes

Lorsque les MouseKeys sont activées, comment cliquer ou déplacer la souris à l'aide d'AppleScript ?

Ce poste suggère que le commandement tell application “System Events” to key code 37 dans AppleScript devrait déplacer le pointeur de la souris d'un pixel vers le bas et vers la gauche si elle est exécutée lorsque les MouseKeys sont activées. Sous OS X 10.7.2, cependant, il a pour effet de générer une lettre minuscule l et ne pas bouger la souris du tout.

De même, j'avais espéré tell application “System Events” to key code 34 using control down enverrait un clic de contrôle au point actuel du curseur de la souris, mais cela ne semble pas être le cas.

Quelqu'un connaît-il une méthode qui fonctionne dans Lion sur un Macbook Air de mi-2011 pour générer un clic ou un contrôle-clic ? à l'emplacement actuel de la souris en utilisant AppleScript ? Il n'y a pas de problème s'il s'agit de MouseKeys et/ou de scripts d'interface utilisateur.

Je préférerais que cela n'implique pas l'installation d'utilitaires de ligne de commande compilés, mais si de tels utilitaires existent et sont compatibles avec Lion, c'est bien mieux que rien.

10voto

alex gray Points 895

Il y a tonnes d'utilitaires en ligne de commande pour le faire... et je pense que c'est la meilleure solution... L'un des avantages ? c'est que ces solutions devrait fonctionnent, que les "touches de la souris" soient activées ou non, n'est-ce pas ? L'un de mes coups de cœur est cliquer

Cliclick" est l'abréviation de "Command-Line Interface Click". > Il s'agit d'une petite application shell / Terminal qui émule les clics ou séries de clics de souris (y compris les double-clics et les control-clics) à des coordonnées arbitraires de l'écran.

Il s'agit donc d'un outil permettant d'automatiser ou d'écrire des scripts qui ne peuvent pas être écrits autrement (par exemple, à l'aide d'AppleScript). À l'exception des scripts d'interface graphique, il n'est pas nécessaire d'activer l'option "Accès pour les appareils d'assistance" dans les préférences du système.

Utilisation :

$ cliclick c m

contrôlera le clic à l'endroit où se trouve la souris, mais vous pouvez également spécifier les coordonnées, faire un shift-click, un double-click, etc. Il peut également renvoyer les coordonnées de la souris à l'aide d'une fonction -q et ramène la souris à son emplacement d'origine (si des coordonnées sont spécifiées) avec l'argument -r argument.

Dans votre cas... Je suppose que vous auriez juste...

do shell script "cliclick c m"

depuis votre AppleScript / Workflow / ou autre...

Il y a un Excellent article sur ce sujet sur le site de MacWorld ( née Mac OS X Conseils ) - que j'ai glanés lots de bonnes informations au fil des ans. Si ma réponse ne vous intéresse pas, vous pourrez sûrement trouvez une solution qui vous plaise... il y a des astuces qui font sourire tout le monde - du fanatique d'Automator = à l'irréductible grincheux de C.

Mise à jour :

Il y a semblent Il semble qu'il y ait des moyens de "faire ça" en AppleScript mais ils semblent tous nécessiter la connaissance de la langue où se trouve votre souris ... ce qui, je suppose, n'est pas le cas. Alors, dans une tentative embarrassante d'obtenir une certaine notoriété... j'ai écrit ceci...

do shell script "python -c 'import sys, time; from Quartz.CoreGraphics import *;

def mouseEvent(type, posx, posy):
  theEvent = CGEventCreateMouseEvent(None, type, (posx,posy), kCGMouseButtonLeft);
  CGEventPost(kCGHIDEventTap, theEvent);

def mouseclickdn(posx,posy):
  mouseEvent(kCGEventLeftMouseDown, posx,posy);

def mouseclickup(posx,posy):
  mouseEvent(kCGEventLeftMouseUp, posx,posy);
  ourEvent = CGEventCreate(None);
  currentpos = CGEventGetLocation(ourEvent);
  print currentpos[0];
  print currentpos[1];
  mouseclickdn(currentpos.x, currentpos.y);
  mouseclickup(currentpos.x, currentpos.y)'
"

Qu'est-ce que c'est ?

  1. AppleScript appelle 'do shell script'.
  2. qui appelle ensuite Python - avec un argument de ligne de commande ( -c ) = qui a été s'est échappé et a été cajolé \= coopérer avec A/S.
  3. Python "importe" ensuite CoreGraphics/Quartz, etc.
  4. Et définit quelques méthodes Cocoa-API/PyObjC pour "gérer" la souris.
  5. Python "comprend" où se trouve la souris.
  6. Et des clics ! (vers le bas, puis vers le haut)
  7. En prime, il renvoie les coordonnées de la souris, "si cela vous intéresse".

Fonctionne à 100% et n'est même pas si lent. J'espère que vous l'apprécierez !

Editer :

Voici le one-liner de BASH, pour les puristes et les détracteurs de l'A/S.

echo -e "import sys, time; from Quartz.CoreGraphics import *\ndef mouseEvent(type, posx, posy): theEvent = CGEventCreateMouseEvent(None, type, (posx,posy), kCGMouseButtonLeft); CGEventPost(kCGHIDEventTap, theEvent);\ndef mouseclickdn(posx,posy): mouseEvent(kCGEventLeftMouseDown, posx,posy);\ndef mouseclickup(posx,posy): mouseEvent(kCGEventLeftMouseUp, posx,posy);\nourEvent = CGEventCreate(None); currentpos = CGEventGetLocation(ourEvent); print currentpos[0]; print currentpos[1]; mouseclickdn(currentpos.x, currentpos.y);\nmouseclickup(currentpos.x, currentpos.y);" | python

0voto

GWLlosa Points 10701

Voici le script que j'utilise pour générer des clics de souris

tell application "System Events" to key code 88
tell application "System Events" to key code 87

En guise d'explication, j'ai constaté que je devais créer un petit mouvement de souris (88) avant que le clic de souris (87) ne fonctionne de manière cohérente. Cela repose sur MouseKeys.

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