Коли клавіші MouseKeys увімкнено, як натиснути або перемістити мишу за допомогою AppleScript?


6

Ця посада Пропонується команда tell application “System Events” to key code 37 в AppleScript слід перемістити вказівник миші на один піксель вниз і вліво, якщо виконується, коли MouseKeys включені. У OS X 10.7.2, однак, він має ефект генерації нижнього регістру l, а не переміщення миші взагалі.

Так само я сподівався tell application “System Events” to key code 34 using control down посилав би контрольний клік на поточну точку курсору миші, але це не є ефектом.

Хто-небудь знає спосіб, який працює в Lion на середині 2011 MacBook Air, щоб створити клацання або натиснути кнопку керування на поточному місці за допомогою AppleScript? Це нормально, якщо він покладається на MouseKeys та / або сценарії UI.

Я б віддав перевагу, якщо б це не передбачало встановлення скомпільованих утиліт командного рядка, але якщо такі утиліти існують і сумісні з Lion, це набагато краще, ніж нічого.


повідомити додаток "Системні події" ключовому коду 88 повідомити додаток "Системні події" ключовому коду 87 Не працює, коли в Filemaker Pro на полі. Я повинен мати можливість генерувати клік на поточному полі / виділеному полі.

Відповіді:


8

Існує тонн утиліти командного рядка, щоб зробити це ... і я вважаю, що цей маршрут ваш найкращий вибір ... Одна користь? є те, що ці рішення слід працювати, незалежно від того, увімкнено чи не "клавіші миші"? Один з моїх особливі фави є клік

Cliclick ”- це скорочення від" Command-Line Interface Click ". & gt; Це крихітна оболонка / термінал, що емулює клацання миші або серію клацань миші (у тому числі подвійних клацань і клавіш керування) на довільних координатах екрана.

Таким чином, це інструмент для автоматизації / сценаріїв речей, які не можна іншим сценарієм (наприклад, за допомогою AppleScript). За винятком графічного інтерфейсу, він не вимагає активації "Доступ для допоміжних пристроїв" у Системних настройках.

Використання:

$ cliclick c m

"контролюватиме" поточне місце розташування миші, але ви також можете вказати координати, клацнути, двічі клацнути і т.д. Вона також може повернути координати миші -q аргумент, і повернути мишу до початкового розташування (при заданні координат) за допомогою -r аргумент.

У вашому випадку .. Я думаю, ви б просто ...

do shell script "cliclick c m"

всередині вашого AppleScript / Workflow / будь-якого ...

Є ВЕЛИКИЙ пост на цю тему на сайті MacWorld ( Підказки для Mac OS X ) - що я почерпнув лоти хорошої інформації з, протягом багатьох років. Якщо ви не дбаєте про мою відповідь, ви це зробите безумовно знайти рішення, яке вам подобається, там ... є хакі, щоб змусити кожного посміхнутися - від уродженого Automator = до сварливої ​​C твердої.

Оновити:

Там здається це деякі способи - "зробити це" в AppleScript .. але всі вони, здається, вимагають знання де ваша миша ... що я припускаю, що ви цього не зробите. Отже, в незручно грати для деяких реп ... Я написав це ..

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)'
"

Що, чорт візьми, це?

  1. Заклики AppleScript 'робити скрипт оболонки'.
  2. Потім викликає Python - з аргументом командного рядка ( -c ) = це було втік і ухилився = співпрацювати з A / S.
  3. Пітон потім "імпортує" CoreGraphics / Quartz і т.д.
  4. І визначає деякі методи Cocoa-API / PyObjC для "роботи з" мишею.
  5. Python "з'ясовує", де знаходиться миша.
  6. І кліки! (вниз, потім вгору)
  7. Як бонус, він повертає координати миші, 'якщо ви були зацікавлені_.

Працює на 100% і навіть не так повільно. Сподіваюся, вам сподобається!

Редагувати:

Ось один лайнер BASH для пуристів / ненависників 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


Python! Wow, я не подумав про що. Я прагну спробувати це. Якщо я s / Left / Right / g, чи буде це правою кнопкою миші?
Daniel

Так, потрібно просто помінятися left с right у TWO kCGEvents. Ви також можете перемістити його з чимось схожим def mousemove(posx,posy): mouseEvent(kCGEventMouseMoved, posx,posy);
alex gray

Це найкраще витрачання 100 реп, я коли-небудь робив. Чудова, чудова відповідь. +125 (10 для голосування, 15 для акцепту і 100 для голови).
Daniel

@alexgray Я зробив деякі форматування / whitespacing виправлення для цього посту, в основному для розумного. Наскільки мені відомо, він все ще є синтаксично правильним для python. Якщо це не так, будь ласка, відхиліться на редагувати сторінку історії .
Jason Salaz

@ Джейсон Салаз Ви, напевно, маєте рацію .. Причина була така божевільна, що до "перекладу, що на Applescript ... я перевірив його як BASH один лайнер .. Я буду редагувати посаду, щоб також показати, що реалізація для людей, які віддають перевагу сценарію за допомогою традиційних інструментів UNIX проти AppleScript.
alex gray

0

Ось сценарій, який я використовую для створення клацань миші

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

Для пояснення я знайшов, що мені довелося створити невеликий рух миші (88), перш ніж клацання миші (87) буде працювати послідовно. Це залежить від MouseKeys.


Яку клавіатуру ви підключили до своєї машини? Яка версія ОС? Це не працює для мене на MacBook Air під керуванням Lion.
Daniel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.