Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于鼠标划词在sandbox的实现讨论 #789

Closed
5 tasks done
tangxiangpi opened this issue Jan 14, 2025 · 2 comments
Closed
5 tasks done

关于鼠标划词在sandbox的实现讨论 #789

tangxiangpi opened this issue Jan 14, 2025 · 2 comments
Labels
enhancement New feature or request

Comments

@tangxiangpi
Copy link

请先确认以下事项

  • 已仔细阅读了 README
  • issues 页面搜索过(包括已关闭的 issue),未发现类似功能建议
  • Easydict 已升级到 最新版本
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

功能描述

希望鼠标划词功能可以在sandbox环境也可以正常使用

使用场景

app如果能够上架到app store可以触及更多用户,我也在本地做了一些尝试,发现鼠标划词的三种方式依赖的辅助功能和自动化(AppleScript)在sandbox环境中都无法正常使用,api都调用了,但是都无法获取选中的词,下面是一些相关的资料:

Accessibility API (至少目前的方式)无法使用:
https://forums.developer.apple.com/forums/thread/749494
https://forums.developer.apple.com/forums/thread/756130

Applescript 无法使用:
https://forums.developer.apple.com/forums/thread/744537

但是应用商店中的Bob,有道翻译都可以实现鼠标划词,而且我发现他们仅仅使用了辅助功能权限,没有使用自动化权限,说明使用辅助功能api还是可以实现该功能的,是否也可以说明sandbox并不是无法使用所有的Accessibility API ,还是有其他实现的方式?想在此一起讨论下。

实现方案(可选)

No response

是否愿意提交 PR 实现该功能

  • 我愿意提交 PR 实现该功能
@tangxiangpi tangxiangpi added the enhancement New feature or request label Jan 14, 2025
Copy link

Hello tangxiangpi, Thank you for your first issue contribution 🎉

@tisfeng
Copy link
Owner

tisfeng commented Jan 19, 2025

不,Bob 支持的只是快捷键划词,这个和鼠标划词功能不一样,它相对比较简单,不需要考虑很多复杂的场景。

如果你看过 Bob 的最初代码实现,就会知道它的划词功能仅仅是模拟快捷键 Cmd+C,这是最简单的代码实现,同时也是兼容性最强的一种实现方式。

但这种取词方式局限性太大,例如它的性能太差,空复制取词会导致系统提示音,会导致左上角菜单栏闪烁, Cmd+C 会占用系统剪贴板(这可能影响系统复制粘贴)等等问题。

如果希望实现一种较好的取词方式,就不能考虑沙盒,因为这是苹果的刻意限制,为了安全将应用隔离开,不让它们进行交互。

但取词功能本来就是跨应用的,它需要能够获取所有应用的当前选中文本,这个功能本身就是和沙盒设计冲突的。

简单总结,想要获得完美的取词效果,就不能依赖沙盒,只能采用 Accessibility 或 AppleScript 等通用辅助 API。

@tisfeng tisfeng closed this as completed Jan 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants