最稳妥方案是windows用pyautogui.press('space')每55–59秒发空格,linux用xdotool key space,macos需提前授权辅助功能;三者均需避开bios/mdm/远程桌面等硬限制。

Windows 下用 pyautogui 发送空格键最稳妥
公司电脑锁屏往往由「无键盘/鼠标输入」触发,发空格比移动鼠标更可靠——它不干扰当前焦点,也不触发窗口切换或光标漂移。很多脚本用 pyautogui.moveRel(1, 0) 微移鼠标,但某些策略(比如屏幕保护器设为“仅检测鼠标移动”)会忽略这种微小位移,而空格是明确的输入事件。
- 安装只需
pip install pyautogui,无需管理员权限 - 必须在脚本开头加
pyautogui.FAILSAFE = False,否则鼠标移到左上角会强制中断(挂机时你没法伸手去碰) - 推荐间隔 55–59 秒触发一次,避开系统休眠阈值(常见为 60 秒),避免刚发完就锁屏
- 空格键比
Ctrl或Shift更安全:后者可能意外激活快捷键(比如Ctrl+Shift+Esc弹任务管理器)
Linux 上用 xdotool 模拟按键更轻量
Python 脚本在 Linux 桌面环境(GNOME/KDE)里调 pyautogui 常失败——它依赖 X11 截图能力,而多数公司电脑默认禁用屏幕捕获(尤其启用了 Wayland 的新系统)。直接调命令行工具反而稳定。
- 先装
xdotool:sudo apt install xdotool(Debian/Ubuntu)或sudo yum install xdotool(RHEL/CentOS) - Python 中用
subprocess.run(['xdotool', 'key', 'space'])触发,不用 import 大型库 - 注意:脚本需运行在有 GUI 会话的用户下,不能丢进
systemd --user服务里直接跑(缺少$DISPLAY环境变量) - 如果公司用 KDE 并启用了「专注模式」,空格可能被拦截,可换
key XF86PowerOff(无效键,只触发输入计时器)
macOS 上绕过「阻止辅助设备」弹窗的关键步骤
macOS Catalina 及之后版本,默认阻止未授权 Python 进程模拟输入,首次运行会弹窗卡住,挂机脚本根本等不到你点「好」。
- 必须提前手动授权:系统设置 → 隐私与安全性 → 辅助功能 → 点「+」添加
/usr/bin/python3或你的虚拟环境里的python路径 - 用
pyautogui.press('space'),别用typewrite()——后者带延时,容易被系统判定为「人工慢速输入」而忽略计时重置 - 若公司 MDM(如 Jamf)锁死了辅助功能开关,这条路走不通,得换方案:改系统空闲时间(需
sudo权限,通常被禁) - 测试是否生效:运行后看菜单栏右上角「输入法图标」是否闪一下,闪了说明按键已发出
防锁屏不是万能的——三个容易被忽略的硬限制
再稳的按键模拟,也跨不过系统策略、硬件固件和公司管控这三道坎。
立即学习“Python免费学习笔记(深入)”;
- 某些 Dell/Lenovo 商用机 BIOS 里开了「USB 自动挂起」,USB 键盘/鼠标端口会在空闲 30 秒后断电,此时任何软件发键都无效;需进 BIOS 关掉
USB Selective Suspend - 公司用 Microsoft Intune 或 Endpoint Manager 配置了「强制锁屏策略」,它不看输入,到点就锁——脚本再勤快也没用
- 远程桌面(RDP/TeamViewer)连接时,本地挂机脚本发的键只作用于本地会话,对远端桌面无效;得把脚本部署到远端机器上运行
真正起效的前提,是你的电脑休眠逻辑确实基于「用户输入超时」,而不是策略强制或硬件级休眠。先确认这点,再动手写代码。










