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

2022-11-28 22:19:20 +08:00
 oIMOo

场景

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

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

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

719 次点击
所在节点    macOS
2 条回复
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
2022-12-12 16:22:35 +08:00
@aec4d 感谢。
这个和我目前的方案有一个相同的问题。
如果鼠标点在了结果区域(或者其他非输入区域),会导致粘贴动作无效。
所以想考虑模拟原生快捷键的效果。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/898640

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX