最近看过此主题的会员

查看: 501|回复: 5

[杂谈/讨论] 有没可能用AS配合BAB实现这种操作?

[复制链接]

8

主题

93

积分

14 小时

在线时间

无畏塑料

Rank: 2Rank: 2

优秀新人

发表于 2019-3-19 11:15:17 | 显示全部楼层 |阅读模式
本帖最后由 无限可能 于 2019-3-22 21:04 编辑

本人是applescript小白哈,大神们见笑~~~从开始用BAB到现在,一直都有个念念不忘的念头:要是有办法将桌面以及通知中心等从finder中剥离出来单独识别,使得同样的手势可以在桌面或通知中心上执行不同操作,那就牛B了~~~之前跟Alex老大提过,他说应该可以用applescript解决,让本小白去摸摸AS门道,好吧,,,然后,在百度谷歌上踉踉跄跄了好久都没能弄个所以然,门槛都还摸不到~~~然后,就没有然后了。。。
所以求助下各路AS大神,有没可能实现?
简单说,我要的效果是——
打个比方:在全局下,我将【右键←】设成呼出通知中心,然后【右键→】设成打开safari,但我想实现,当通知中心为呼出状态时,【右键→】为关闭通知中心,而不是全局下的打开safari。能做到吗?
感谢各位大神献策!!~~~

------以上为原帖内容,我再追加一个例子,可能会更复杂些:例子2——我想实现:在全局下,将【右键←】设成呼出通知中心,【右键→】设成切换到finder窗口(假如没有已打开的finder窗口,则新建一个),当通知中心为呼出状态时,【右键→】为关闭通知中心,而不是切换到finder窗口。
欢迎大家踊跃探讨,感谢!!
www.better365.club

8

主题

93

积分

14 小时

在线时间

无畏塑料

Rank: 2Rank: 2

优秀新人

 楼主| 发表于 2019-3-19 15:06:04 | 显示全部楼层
哈哈哈,前来报喜!!!最终还是Alex老大亲自出马给解决了,不敢独享,脚本如下:
tell application "System Events" to tell process "NotificationCenter"
        if window 1 exists then
                key code 113
        else
                key code 99 using {control down}
                key code 36
        end if
end tell

————
这是我在老大基础上弄的,因为我是将F15设成通知中心的快捷键,所以上面的脚本实现的效果就是:同一个手势,在通知中心打开时,执行退出通知中心,否则切换到访达窗口(如果没有已打开窗口则新建),完美执行!!!!
感谢老大!!!
www.better365.club
回复

使用道具 举报

97

主题

1041

积分

134 小时

在线时间

版主

Rank: 7Rank: 7Rank: 7Rank: 7

举世无双百里挑一攻无不克先锋旗帜优秀新人

发表于 2019-3-21 08:01:59 | 显示全部楼层
一点一点去套

[AppleScript] 纯文本查看 复制代码
tell application "System Events"
        
        --Close Notification Center
        tell process "NotificationCenter"
                if window 1 exists then
                        delay 5
                        tell application "System Events"
                                tell process "SystemUIServer"
                                        tell menu bar 1
                                                click menu bar item "通知中心"
                                        end tell
                                end tell
                        end tell
                else
                        --do what you want
                        do shell script ""
                end if
        end tell
        
        --Am I on Desktop? If not, open Finder
        try
                tell application "Finder" to ¬
                        get the index of the first Finder window
                --set countFinder to the count of Finder window
                set isDesktop to 0
        on error
                set isDesktop to 1
                tell application "Finder"
                        make new Finder window to home
                        activate
                end tell
        end try
        
        --frontApp & Desktop
        if isDesktop is 0 then
                --do what you want
                say "No"
        else
                if isDesktop is 1 then
                        --do what you want
                        say "Yes"
                end if
        end if
        --do what you want
end tell

suliveevil.github.io
www.better365.club/?fromuid=18
https://github.com/suliveevil/BetterAndBetter
回复

使用道具 举报

8

主题

93

积分

14 小时

在线时间

无畏塑料

Rank: 2Rank: 2

优秀新人

 楼主| 发表于 2019-3-22 11:18:01 | 显示全部楼层
无限可能 发表于 2019-3-21 08:01
一点一点去套

[mw_shl_code=applescript,true]tell application "System Events"

谢谢!
www.better365.club
回复

使用道具 举报

8

主题

93

积分

14 小时

在线时间

无畏塑料

Rank: 2Rank: 2

优秀新人

 楼主| 发表于 2019-3-22 12:24:36 | 显示全部楼层
顺便说下,标题写错了,应该是AS而不是AC哈,现在改不了了~~~强迫症表示有点难受
www.better365.club
回复

使用道具 举报

8

主题

93

积分

14 小时

在线时间

无畏塑料

Rank: 2Rank: 2

优秀新人

 楼主| 发表于 2019-3-28 00:13:03 | 显示全部楼层
回来分享下我最终的脚本,希望能对大家有帮助,其实脚本主要来自 @Alex 老大 和 @无限可能 大神,我只是根据自己需要稍微修改而已,再次感谢两位大牛的鼎力支持,谢谢!!

脚本一:
[AppleScript] 纯文本查看 复制代码
tell application "System Events" to tell process "NotificationCenter"
	if window 1 exists then
		key code 113
	else
		tell application "System Events" to tell process "Finder"
			if window 1 exists then
				tell application "Finder" to activate
			else
				tell application "Finder" to activate
				key code 45 using {command down}
			end if
		end tell
	end if
end tell

由于我在系统设置里将通知中心快捷键设为F15,所以以上脚本实现的效果是:当通知中心处于呼出状态时,则关闭通知中心;当通知中心处于关闭状态时,则切换到访达窗口(如果没有窗口则新建一个)。

脚本二:
[AppleScript] 纯文本查看 复制代码
tell application "System Events" to tell process "NotificationCenter"
	if window 1 exists then
		key code 113
	else
		tell application "System Events" to tell process "Finder"
			if window 1 exists then
				key code 50 using {command down}
			else
				key code 45 using {command down}
			end if
		end tell
	end if
end tell

由于我在系统设置里将通知中心快捷键设为F15,所以以上脚本实现的效果是:当通知中心处于呼出状态时,则关闭通知中心;当没有任何已打开的访达窗口时,则新建窗口;当存在已打开的访达窗口时,则在已打开的访达窗口间循环切换。

最后,到鼠标模块里,在全局下,将手势【按住四键,←】执行动作设为【F15】,将手势【按住四键,→】执行动作设为【脚本一】;在访达下,将手势【按住四键,→】设为【脚本二】。
最终,达到的效果是:任何时候,【按住四键,←】会打开通知中心,当通知中心已打开时,【按住四键,←】则关闭通知中心。而任何时候,只要通知中心为关闭状态,【按住四键,→】会切换到访达窗口(如果没有已打开的窗口则自动新建一个窗口),如果访达已经为当前应用,【按住四键,→】则循环切换已打开的的访达窗口(如果没有已打开的窗口则自动新建一个窗口)。End


分享就到这里,,,希望各位爱折腾的B友们多来交流分享,探讨更奇妙的BAB大法,谢谢!!~~~
www.better365.club
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表