pyautogui热键Windows正常运行Mac失效及窗口焦点切换问题咨询
解决方案
核心思路
macOS下需要先通过系统原生能力将焦点切换到目标浏览器,等待焦点切换完成后再触发热键,这里推荐直接调用AppleScript实现,无需额外安装第三方依赖。
具体实现步骤
- 首先在代码头部引入需要的模块:
subprocess、time - 在macOS逻辑分支中,先调用AppleScript激活目标浏览器,添加0.2~0.5秒的延迟保证焦点切换完成,再执行热键触发操作
修改后的代码示例
import subprocess import time import pyautogui # 此处补充你原有代码里的platform、foo变量定义逻辑 def hotkey() -> None: """function to open the corresponding phraseexpress form (with a hotkey)""" if foo == "Note 2": if platform == "darwin": print("Test before hotkey") # 切换焦点到目标浏览器,以下为Chrome示例,可根据实际使用的浏览器修改应用名 subprocess.run( ["osascript", "-e", 'tell application "Google Chrome" to activate'], capture_output=True ) # 等待焦点切换完成,可根据设备性能调整延迟时长 time.sleep(0.3) pyautogui.hotkey('ctrl', 'shift', '2') if platform == "win32": pyautogui.hotkey('ctrl', 'shift', '2') print("You opened PhraseExpress for note 2")
额外注意事项
- 权限配置:需要在「系统设置→隐私与安全性→自动化」中,给终端开启控制浏览器、PhraseExpress的权限
- 热键冲突排查:如果修改后仍无响应,可以先检查系统「快捷键设置」中是否有其他功能占用了
ctrl+shift+2的组合键 - 浏览器名称适配:如果使用的是Edge、Firefox等其他浏览器,只需要把AppleScript里的应用名称改成对应名称即可,比如
Microsoft Edge、Firefox
内容的提问来源于stack exchange,提问作者AppCreator
相关产品推荐
相关产品推荐

