为什么需要屏幕长亮
显示器屏幕长亮,意味着要防止屏幕保护程序自动启动,防止OS桌面自动锁定甚至进入待机状态。如果为了节能的目的,或者为了预防电脑无人照看时的信息泄露风险,自动锁屏待机无可厚非。但是很多时候也会带来麻烦,有无数可以脑洞的场景:
- 写着文档时去倒了杯茶,你不想回来时被迫输入长长的密码解锁
- 当前电脑上建了个服务器,你不想正要访问时机器却已经睡眠/待机
- 在办公室假装看文档,实际打盹,你不想被黑屏出卖
- 玩守望先锋中途安排尿点,你不想被踢出游戏
- ...
有人会问,自己把屏保和节能选项禁掉不就可以了吗?请注意不是所有的人都愿意为了一个临时的屏幕长亮需求而去频繁修改设置。另外对于工作电脑,IT部门很可能设置了普通员工无法更改的锁屏安全策略。
方案选择
通常最简单的做法是不定期地隔几分钟晃一下鼠标,现在就把这个动作自动化。
实现成本最低的办法是自己写个程序甚至是脚本,定时调用Win32 API的mouse_event()
函数,让鼠标产生一个位移,再立刻回到原来的坐标。这样能应付大多数场景,但也有例外。在很多游戏、虚拟机(像VmPlayer)、Flash应用的界面上它可能会不起作用。所以如果想普适所有应用和操作系统的话,自然而然会想到用外设来模拟鼠标。本文介绍的是用一款廉价小巧的Arduino开发板ATtiny85进行简单编程来自动化鼠标抖动。
准备开发板与开发环境
这块开发板最大的特点就是它的USB功能。类似于Arduino Leonardo,这块芯片原生支持USB接口,因而可以模拟出各式USB设备:键盘、鼠标...
Digispark ATtiny85现在在某宝上不到7块钱就能买到,有两种接口类型(mini-USB/USB)。
关于如何安装Arduino IDE并添加Digispark支持、安装Digispark驱动程序,能找到很多文章链接,这里就不赘述了。需要注意的是必须保证当前网络能访问到github.com
,否则就下载不了Digispark支持包。
- Digispark(ATTINY85) 微型开发板驱动与开发环境安装教程
- 十块钱RMB | 用Digispark制作一个简单的Badusb
- Digispark USB开发板把玩笔记(一)
- Easy USB Mouse Jiggler to Prevent Screensaver
编写程序
啊,就这?对,就这么简单。每隔1分钟让鼠标左右横跳一个像素点,确保不会干扰到当前的活动,也不至于产生随时间累计的位移。
#include <DigiMouse.h>
void setup() {
DigiMouse.begin();
}
void loop() {
DigiMouse.moveX(-1);
DigiMouse.delay(50);
DigiMouse.moveX(1);
DigiMouse.delay(60000);
}
点击验证
按钮(对勾),编译通过后,再点击上传
按钮(右箭头)。底部的输出窗口会提示你接入开发板,插上以后,等烧录成功的提示。从此就可以直接连目标电脑的USB口了,即插即用;而你的计算机将开启无眠无休的终身福报。
(完)