V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
oIMOo
V2EX  ›  macOS

AppleScript 如何模拟“选择文本”动作?

  •  
  •   oIMOo · 2022-11-28 22:19:20 +08:00 · 812 次点击
    这是一个创建于 733 天前的主题,其中的信息可能已经有所发展或是发生改变。

    场景

    DeepL 的划词翻译要求:

    1. 选择文本
    2. 按下快捷键

    问题

    虽然 DeepL app 本身自带 OCR 识别后进行翻译,但由于某些限制(无法消除换行,并自动整合为句子或段落),我希望使用 macOS 本身的 OCR 功能。

    通过 Shortcuts 可轻松实现选定区域的文本识别,但是将识别结果输入到 DeepL 遇到了困难。

    临时解决方案

    通过 UI Broswer 对 DeepL 的界面进行识别,再通过在 Shortcuts 中加入 AppleScript 对指定 UI 元素(需要翻译内容)进行 set variable 的操作。

    附此 Shortcut: https://www.icloud.com/shortcuts/06c482f2a7194643b9c539cd77a1100b

    由于 UI 随时可能会变,所以想基于文本最开始的场景描述的过程进行实现。

    虽然按下快捷键的操作可以实现,但是有一个问题:如何模拟选择文本的动作?

    回到这个实际用例中,我通过 OCR 识别了文本(可以在 shortcuts 中将其设定为一个值 或者 可以将其同步至剪贴板)之后,如何对此部分文本进行选择?

    换句话说,我想将目前捷径中的 AppleScript 内容改为 [模拟文本选择] - tell application "System Events" to key code {8, 8} using command down

    我不想打开一个文档,然后把剪贴板内容粘贴进去,然后在模拟光标移动到最前 - 选择内容并将光标移动到最后。

    不知道我描述清楚没有= =

    2 条回复    2022-12-12 16:22:35 +08:00
    aec4d
        1
    aec4d  
       2022-12-11 21:12:50 +08:00
    操作 deepl 选择编辑 --> 粘贴 就成

    #!/usr/bin/osascript

    on run translate
    do shell script "open -a DeepL"

    delay 0.2

    tell application "System Events" to tell process "DeepL"
    tell menu bar item "编辑" of menu bar 1
    click menu item "粘贴" of menu 1
    end tell
    end tell

    end run
    oIMOo
        2
    oIMOo  
    OP
       2022-12-12 16:22:35 +08:00
    @aec4d 感谢。
    这个和我目前的方案有一个相同的问题。
    如果鼠标点在了结果区域(或者其他非输入区域),会导致粘贴动作无效。
    所以想考虑模拟原生快捷键的效果。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1049 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 19:06 · PVG 03:06 · LAX 11:06 · JFK 14:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.