[AppleScript][macOS][数位板]快捷键切换橡皮擦MN4Switch2Eraser SE

一句话介绍

自动操作+AppleScript+键盘快捷键+Wacom数位板, 实现快速切换橡皮擦操作.
注:上述过程存在变体: 脚本编辑器+Wacom: 将AppleScript文件通过脚本编辑器打包成应用,直接绑定到Wacom (优点是步骤简单切换快,缺点是会跳出全屏,而且修改脚本可能需要重新打包)

其他版本

效果图

Kapture 2024-07-25 at 11.51.27

具体步骤

设置自动操作

打开mac的“自动操作”, 图标是一个小机器人
然后跟随动图操作(最后粘贴的代码在下面, 注意代码不能直接使用)
快速

编写脚本

在创建的快速操作中编写自己的脚本,我在下面提供了一个demo,可以直接贴上去,但是要注意自己橡皮在工具栏上的编号,根据编号修改代码中的数字,注意下方的注释文字

try
	tell application "System Events"
		tell process "MarginNote 4"
			set windowList to windows
			if (count of windowList) is 0 then
				display dialog "No windows found of the MarginNote 4."
			else
				set targetWindow to item (count of windows) of windows
				try
					set buttonList to buttons of scroll area 1 of group 3 of group 3 of group 1 of group 1 of group 1 of group 1 of group 1 of targetWindow
				end try
				set countOfButtons to count of buttonList
				if countOfButtons is 0 then
					display dialog "No buttons found of the MarginNote 4."
				else
					--注意,请将下面的数字4换成你的橡皮擦的编号
					--从1开始数,数到橡皮擦
					--例如:你的工具栏里是“钢笔、钢笔、彩笔、铅笔、橡皮”,就将下方的数字4换成5
					set indexOfEraser to 4
					set buttonOfEraser to item indexOfEraser of buttonList
					if selected of buttonOfEraser then
						set buttonOfFirstPen to item 1 of buttonList
						try
							click buttonOfFirstPen
						on error
							--display dialog "切换失败,请勿频繁点击!"
						end try
					else
						try
							click buttonOfEraser
						on error
							--display dialog "切换失败,请勿频繁点击!"
						end try
					end if
				end if
			end if
		end tell
	end tell
end try

设置快捷键

脚本修改完, 保存一下快速操作(即按一下command+s),自己起个名字例如“MN4切换橡皮擦”
保存完成后打开: 系统设置-键盘-键盘快捷键-服务-通用-切换橡皮擦
勾选并设置键盘快捷键,例如我使用的是control+command+e
也可看下方动图
绑定键盘快捷键

设置数位板按键

数位板按键可以自定义,比如绑定快捷.
我们只需要给某个按键绑定上与刚才相同的快捷键即可(例如control+command+e)
以Wacom为例,我选择绑定到笔的按键上,如图
数位板

注意事项

  • 脚本通过获取软件UI信息并且触发点击事件来切换橡皮擦,所以会触发警告,根据系统提示授予权限即可.
  • 脚本默认切换橡皮和第一支笔工具(可以通过修改代码来自行定义),不能实现切回原笔刷功能,因为我不会写MN4Switch2Eraser Max使用配置文件实现了切回原笔刷功能
  • 笔刷工具栏是浮动的,所以定位会改变,位于上下左右四个方向都是不同的,甚至文档和脑图是否展开都会影响笔刷工具所在的group,所以代码可能无法生效
  • 想要使用代码一定要保证工具栏位于上方,且文档页面处于“浮动状态”
    下方是脚本可以生效的页面情况(即,不要开文档的全屏模式,让手写工具始终在屏幕上缘)
    脚本生效
4 个赞

其他

  • 为了不影响使用,代码把警告都隐藏了,如果切换失败需要自己排查
  • 我并不太会写AppleScript,昨天刚了解,边查边写的,如果有可以改进的地方可以提一下,但是我可能看不懂
  • 可以把所有可能的button位置都填上去, 我比较懒, 不想测,这样凑合用吧
  • 可以直接打包成程序直接绑定到Wacom上,不用设置自动操作和快捷键, 其实还挺简单的, 就是要提前把代码改好调试好.
  • 我不会写插件,能提供的就是这个脚本,如果你会写,那记得发我一份

太厉害了,希望官方更新这个功能吧

谢谢你, 其实正是官方没有相关功能,我才想办法解决的. 不过并不完美, 但至少能实现基础的切换功能了

好贴:+1: 希望帮到用数位板的

2 个赞