使用 AppleScript 在 macOS Sierra 中启用 VoiceOver 不起作用

Posted

技术标签:

【中文标题】使用 AppleScript 在 macOS Sierra 中启用 VoiceOver 不起作用【英文标题】:Enabling VoiceOver in macOS Sierra using AppleScript is not working 【发布时间】:2022-01-06 05:48:40 【问题描述】:

我正在尝试使用 AppleScript 在 macOS Sierra 中启用 VoiceOver。我没有看到任何错误,只是没有打开。

这是我正在使用的脚本,它在我尝试过的所有其他版本的 macOS 上运行良好。

tell application id "com.apple.systemevents" to key code 96 using command down

【问题讨论】:

macOS Sierra 中通过手动按 ⌘F5 进行测试确实有效,并调出初始 VoiceOver 对话框框,但是,您问题中的 AppleScript codemacOS Sierra 中不起作用,而在例如macOS High SierramacOS Catalina。我不知道为什么它在 macOS Sierra 中不起作用,并且出于两个原因发表评论。 1. 确认它在 macOS Sierra 中无法以编程方式运行,但手动运行。 2. 另一种选择是尝试使用 UI 脚本 并通过 System Preferences 脚本启用它。 @user3439894 所以只能使用 UI 脚本? 【参考方案1】:

以下示例 AppleScript 代码 假设 VoiceOver 从未开启,而不想看到显示第一次打开 VoiceOver 或之后再次打开的标准对话框

请注意,这使用了另一个答案中提供的单行 code,我不认为这是一个完整的答案,但是,如果没有它,另一个选项是 UI Scripting。

示例 AppleScript 代码

try
    set doNotShowSplashScreen to (do shell script "defaults read com.apple.VoiceOverTraining doNotShowSplashScreen") as integer as boolean
on error
    set doNotShowSplashScreen to false
end try
if doNotShowSplashScreen then
    do shell script "/System/Library/CoreServices/VoiceOver.app/Contents/MacOS/VoiceOverStarter"
else
    do shell script "defaults write com.apple.VoiceOverTraining doNotShowSplashScreen -bool true && /System/Library/CoreServices/VoiceOver.app/Contents/MacOS/VoiceOverStarter"
end if

注意事项:

ma​​cOS Sierra 下测试和工作。

【讨论】:

非常感谢。它奏效了。【参考方案2】:

我不确定以下是否适用于 macOS Sierra。自己试试:

do shell script "/System/Library/CoreServices/VoiceOver.app/Contents/MacOS/VoiceOverStarter"

【讨论】:

所以,现在很清楚了。所以我的想法也适用于 Mac OS Sierra(并且不像你说的那样可能是一个可行的解决方案)。首次启动时关闭 VoiceOver 快速入门指南 对话框就足够了。虽然,OP 本可以自己说出我的解决方案,并且当他们从 @user3439894 以外的其他用户那里获得帮助时,他们不会像鱼一样保持沉默。当然,感谢您的测试,点赞。 打开 VoiceOver 快速入门指南的屏幕大小不正确,好像 了解更多 按钮推,所以我启动了另一次出现的 macOS Sierra 并且这确实正常打开,好像 ⌘F5 尚未被推送或 VoiceOver 启用通过系统偏好设置。由于我已删除之前出现的 macOS Sierra*,因此我无法调查为什么会得到原始结果。 所以这与附加代码一起检查不再显示此消息 复选框,如果需要,然后单击使用 ViceOver 按钮 与按下 ⌘F5 或通过 System Preferences启用 VoiceOver 相同> 第一次。如果 不再显示此消息 复选框 已经被选中一次,那么这将照常工作。很抱歉有任何混淆。

以上是关于使用 AppleScript 在 macOS Sierra 中启用 VoiceOver 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在沙盒 macOS 应用程序中为 ImageEvent 类运行 AppleScript?

Applescript - 在 MacOS Monterey 上设置系统偏好设置底座大小滑块的值

OS X (macOS) 和低级 C(Objective-C 替代方案)中的 Applescript

AppleScript 快速入门

测试开发-怎么能忘记打卡呢-神器AppleScript

text [Formatier Kontakte]Fügt+ 49 vor jede Telefonnummer #macos #applescript