如何在macOS Sierra上的Notification Center中切换Today和Notifications选项卡?


1

我希望能够使用键盘快捷键在Notification Center中的选项卡(今天和通知选项卡)之间切换。有什么办法在macOS Sierra上做吗?

我知道在优胜美地有可能,但我从未有过优胜美地,所以我无法验证。

编辑:我希望能够运行苹果脚本,而不是使用键盘快捷键。使用苹果脚本,然后我可以将它放在第三方程序中以获得我的结果。

此外,下面的代码部分工作。首先,是否可以在开头放置一个if / else,所以它的工作原理如下:

如果Notification Center已经打开,那么转到下一个(可以在Today和Notification按钮之间切换)但是如果它没有打开则打开它并切换按钮。


我不确定是什么让你认为Yosemite上有一个键盘快捷键,但这个问题另有说明。我认为从来没有一个。
tubedogg 2016年

Answers:


1

我做了一个小的谷歌搜索,除了打开通知中心,以及它最后的任何视图,无法找到原生键盘快捷方式,这必须是系统首选项>键盘>快捷方式>任务控制>显示通知中的用户设置中央。这当然只是打开通知中心到它最后的任何视图。

但是,如果您转到系统偏好设置>键盘>快捷方式,则会出现“全键盘访问:在窗口和对话框中,按Tab键将键盘焦点移动到:”和两个单选按钮,“仅限文本框和列表”(默认设置)和“所有控制”。如果选择“所有控件”,则可以使用例如选项卡,输入,箭头键来导航通知中心。我现在无法测试,为什么我说“ ......可以使用...... ”。

这使得AppleScript的解决方法可用于第三方应用程序,该应用程序可以使用分配键盘快捷键的脚本或可以分配键盘快捷键的Automator服务。

下面的AppleScript 代码切换通知中心中两个按钮的状态。

try
    tell application "System Events"
        tell process "SystemUIServer"
            click menu bar item "Notification Center" of menu bar 1
        end tell
        tell application "System Events"
            tell process "Notification Center"
                if value of radio button "Today" of radio group 1 of window "NotificationTableWindow" is equal to 1 then
                    click radio button "Notifications" of radio group 1 of window "NotificationTableWindow"
                else
                    click radio button "Today" of radio group 1 of window "NotificationTableWindow"
                end if
            end tell
        end tell
    end tell
end try

如果需要,您还可以修改代码以仅对给定按钮起作用。应该很明显如何修改它,但可以随意询问您是否需要其他帮助。


好吧,我已经玩了一下它实际上工作了。部分。它仅在通知中心关闭时有效。此外,无法启用请勿打扰否则它将崩溃并给出以下错误:系统事件出错:无法获取进程“SystemUIServer”的菜单栏1的菜单栏项“通知中心”
user3735534

1
@ user3735534,您可以将上面的示例代码包装在一个try语句中,这样就不会抛出严重错误。我已经给出了答案。
user3439894 2016年

0

在macOS High Sierra中,“通知中心”窗口可访问性名称已更改为“通知中心”。

以下AppleScript应允许在macOS High Sierra(10.13),Sierra(10.12)以及可能的早期版本中的两个选项卡(今天和通知)之间切换。

on osVersion()
    set _major to system attribute "sys1" -- 10
    set _minor to system attribute "sys2" -- 13 for High Sierra
    return (_major as string) & "." & (_minor as string)
end osVersion

on toggleNotificationCenter()
    tell application "System Events"
        tell process "SystemUIServer"
            click menu bar item "Notification Center" of menu bar 1
        end tell
    end tell
end toggleNotificationCenter

on toggleCenterButton()
    set notificationWindowName to "Notification Center" -- High Sierra
    considering numeric strings
        if osVersion() < "10.13" then
            set notificationWindowName to "NotificationTableWindow"
        end if
    end considering

    tell application "System Events"
        tell process "Notification Center"
            if value of radio button "Today" of radio group 1 of window notificationWindowName is equal to 1 then
                click radio button "Notifications" of radio group 1 of window notificationWindowName
            else
                click radio button "Today" of radio group 1 of window notificationWindowName
            end if
        end tell
    end tell
end toggleCenterButton


try
    toggleNotificationCenter()
    toggleCenterButton()
on error
    toggleNotificationCenter()
    toggleCenterButton()
end try
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.