本文目录导读:

#!/usr/bin/env python3
"""
屏幕常亮模式脚本
通过模拟按下Scroll Lock键,防止系统进入休眠或锁屏状态。
使用pynput库监控鼠标或键盘活动,无活动时自动发送保持唤醒信号。
"""
import time
import threading
import sys
from pynput.keyboard import Controller as KeyboardController, Key
from pynput.mouse import Controller as MouseController, Listener
# 配置参数
IDLE_TIMEOUT = 60 # 空闲超时时间(秒),之后开始模拟按键
ACTIVITY_CHECK_INTERVAL = 10 # 检查活动的时间间隔(秒)
SIMULATE_KEY = Key.scroll_lock # 用于唤醒的按键(不会影响正常使用)
class ScreenAwake:
def __init__(self):
self.keyboard = KeyboardController()
self.last_activity_time = time.time()
self.running = True
self._setup_listeners()
def _setup_listeners(self):
"""设置鼠标和键盘监听器"""
# 鼠标监听(移动、点击、滚动)
self.mouse_listener = Listener(
on_move=self._on_activity,
on_click=self._on_activity,
on_scroll=self._on_activity
)
# 键盘监听(按键按下)
self.keyboard_listener = Listener(
on_press=self._on_activity
)
def _on_activity(self, *args):
"""当检测到用户活动时更新最后活动时间"""
self.last_activity_time = time.time()
def _keep_awake(self):
"""执行保持唤醒动作:模拟按键"""
try:
self.keyboard.press(SIMULATE_KEY)
self.keyboard.release(SIMULATE_KEY)
print(f"[{time.strftime('%H:%M:%S')}] 发送保持唤醒信号 ({SIMULATE_KEY})")
except Exception as e:
print(f"模拟按键失败: {e}")
def _activity_loop(self):
"""后台线程:检查空闲时间并触发唤醒"""
while self.running:
elapsed = time.time() - self.last_activity_time
if elapsed > IDLE_TIMEOUT:
self._keep_awake()
time.sleep(ACTIVITY_CHECK_INTERVAL)
def start(self):
"""启动常亮模式"""
print("=" * 50)
print("屏幕常亮模式已启动")
print(f"空闲超时: {IDLE_TIMEOUT}秒")
print(f"检查间隔: {ACTIVITY_CHECK_INTERVAL}秒")
print(f"模拟按键: {SIMULATE_KEY}")
print("按 Ctrl+C 退出")
print("=" * 50)
# 启动监听器
self.mouse_listener.start()
self.keyboard_listener.start()
# 启动活动检测循环
activity_thread = threading.Thread(target=self._activity_loop, daemon=True)
activity_thread.start()
try:
# 保持主线程运行
while self.running:
time.sleep(1)
except KeyboardInterrupt:
print("\n正在退出...")
self.stop()
def stop(self):
"""停止所有监听器和线程"""
self.running = False
self.mouse_listener.stop()
self.keyboard_listener.stop()
print("屏幕常亮模式已关闭")
def main():
# 检查是否有管理员权限(非必需,但某些系统可能需要)
# if sys.platform.startswith('linux') and os.geteuid() != 0:
# print("警告: 在Linux上可能需要root权限才能模拟按键")
# print("请考虑使用 sudo 运行")
awaker = ScreenAwake()
awaker.start()
if __name__ == "__main__":
main()
使用说明
安装依赖
在终端中运行以下命令安装所需的Python库:
pip install pynput
运行脚本
python screen_awake.py
工作原理
- 监控用户活动:通过监听鼠标移动、点击、滚动以及键盘按键来检测用户是否在场。
- 空闲检测:如果用户无操作超过设定的空闲时间(默认60秒),脚本会自动模拟按下一次
Scroll Lock键。 - 保持唤醒:模拟按键会重置系统的空闲计时器,从而阻止屏幕休眠或系统锁屏。
配置调整
您可以根据需要修改脚本开头的配置参数:
IDLE_TIMEOUT:空闲多久后触发唤醒信号(单位:秒)ACTIVITY_CHECK_INTERVAL:检查用户活动的时间间隔(单位:秒)SIMULATE_KEY:用于唤醒的按键,默认为Scroll Lock(通常不影响正常使用)
退出方式
按 Ctrl+C 即可安全退出脚本。
注意事项
- 该脚本模拟的是
Scroll Lock键,这通常不会干扰您的正常工作。 - 在某些系统(如macOS)上,模拟按键可能需要辅助功能权限(在“系统偏好设置” > “安全性与隐私” > “辅助功能”中允许终端或Python)。
- 长时间运行可能会稍微增加CPU占用,但通常非常小(低于1%)。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播