joetannenbaum/php-mac-automator

使用 PHP 自动化您的 Mac

0.1.0 2023-04-24 14:37 UTC

This package is auto-updated.

Last update: 2024-08-30 01:38:02 UTC


README

这是一个围绕 JXA 脚本的简单包装器,允许您使用 PHP 控制 Mac。

👋 这是一个正在进行中的项目。 我仍在完善 API 和添加功能,一些东西可能会改变。

话虽如此,玩起来还是很有趣的。所以请尽情尝试。

安装

composer require joetannenbaum/php-mac-automator

使用

use Automator\Automator;

$automator = new Automator();

// Open Warp terminal and list the files in the current directory
$automator->open('Warp')->typeAndEnter('ls')->run();

// or
Automator::make()->open('Warp')->typeAndEnter('ls')->run();

打开应用程序

$automator->open('Warp');

输入

$automator->type('Hello World');
$automator->typeAndEnter('Hello World');

// With modifier keys (e.g. zoom in)
$automator->withCommand('+');
$automator->withShift('+');
$automator->withOption('+');
$automator->withControl('+');

// With multiple modifier keys (e.g. re-open last tab)
$automator->type('t', [Modifier::COMMAND, Modifier::SHIFT]);

// Helpers
$automator->enter();
$automator->tab();
$automator->backspace();
$automator->delete();
$automator->escape();
$automator->space();
$automator->arrowUp();
$automator->arrowDown();
$automator->arrowLeft();
$automator->arrowRight();
$automator->home();
$automator->end();
$automator->pageUp();
$automator->pageDown();

// Add modifer(s) to helper
$automator->enter(Modifier::SHIFT);
$automator->enter([Modifier::COMMAND, Modifier::SHIFT]);

// Set the typing speed
// 0.1 seconds between each character (default is 0.05)
$automator->setTypingSpeed(0.1);

实用工具

// Open an app
$automator->open('Warp');

// Pause (seconds)
$automator->pause(1);

// Repeat a block of code (e.g. zoom in five times)
$automator->repeat(
    5,
    fn (Automator $remote) => $remote->typeWithCommand('+')->pause(.05),
);

注意事项

  • 此脚本实际上正在向您的应用程序发送按键,但它在计算机速度下运行。请记住,在您的脚本中插入合理的 pause 语句,以便让计算机跟上。
  • 如果您正在运行脚本,它将一直执行,直到该进程本身被停止或脚本完成。这意味着:如果您将标签从脚本正在运行的应用程序中移开,如果脚本还有更多输入要做,它将继续输入。请记住这一点。

示例

演示 Raycast 扩展

Automator::make()
    ->typeWithCommand(' ')
    ->pause(1)
    ->type('Warp Launch')
    ->pause(.5)
    ->enter()
    ->pause(.5)
    ->type('blog-joe-codes')
    ->pause(.5)
    ->enter()
    ->run();

Code Snippet Demo

演示代码片段

Automator::make()
    ->setTypingSpeed(.1)
    ->open('Visual Studio Code')
    ->pause(1)
    ->type('n', [Modifier::SHIFT, Modifier::COMMAND]) // Open a new window
    ->pause(.5)
    ->typeWithCommand('n') // Open a new file
    ->pause(.5)
    ->type('<?php')
    ->pause(.5)
    ->repeat(2, fn (Automator $remote) => $remote->enter()->pause(.25))
    ->type('echo "Hello World!";')
    ->run();

Code Snippet Demo

路线图

目前您基本上可以用键盘做到的所有事情都可以自动化。我希望添加

  • 鼠标控制
  • 窗口控制
  • 文件系统控制
  • 浏览器控制