Wacom折腾

116 阅读2分钟

想通过Wacom数位板上笔的按键调用snipaste软件截图,但快捷键是F1,Wacom驱动调用F1寄了,虽然可以改截图快捷键,但还是想折腾一下,纯属娱乐。

解决方案1

Wacom驱动调用其他键位没有问题,因此考虑用Karabiner-Elements将其他键位映射为F1。

失败:会影响日常使用,并且经过检查Karabiner-Eventviewer发现Wacom的驱动没有发送任何输入信号,原因可能是驱动根据软件设置直接发送指令,因此无法映射。

解决方案2

发现Wacom驱动不止可以调用键盘,也可以打开/运行本地程序。于是我打算用Python调用键盘,然后用Wacom调用Python程序。最终选择使用PyUserInput库模拟键盘输入。

失败:写好代码,发现该库根本没写对Mac的Function键的调用。

解决方案3

补全PyUserInput库对F1键的调用。首先搜到Mac键盘的key codes,然后大致看了下PyUserInput的文件结构和代码逻辑,把F1的key codes写进去。至此Python程序成功模拟输入F1键。

失败:Wacom打开.py文件时是以文本形式打开的,尝试用bash脚本运行Python程序,.sh文件同样被以文本形式打开。

解决方案4

将C++代码编译为二进制可执行文件来调用bash命令,

失败:Mac禁止应用程序在终端中读取硬盘中的内容,因此Wacom无法调用编译出的程序。

解决方案5:

将C++编译出的文件伪装成app让Wacom调用。将需要用到的文件打包成Bundle,设置plist文件,调整目录结构。用Wacom调用app成功。

最终实现流程是:Wacom驱动\rightarrow伪装app\rightarrowC++编译出来的可执行文件\rightarrowbash脚本\rightarrowPython模拟按键。