用脚本实现屏幕常亮模式

wen 实用脚本 3

本文目录导读:

用脚本实现屏幕常亮模式

  1. 使用说明
  2. 注意事项
#!/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

工作原理

  1. 监控用户活动:通过监听鼠标移动、点击、滚动以及键盘按键来检测用户是否在场。
  2. 空闲检测:如果用户无操作超过设定的空闲时间(默认60秒),脚本会自动模拟按下一次 Scroll Lock 键。
  3. 保持唤醒:模拟按键会重置系统的空闲计时器,从而阻止屏幕休眠或系统锁屏。

配置调整

您可以根据需要修改脚本开头的配置参数:

  • IDLE_TIMEOUT:空闲多久后触发唤醒信号(单位:秒)
  • ACTIVITY_CHECK_INTERVAL:检查用户活动的时间间隔(单位:秒)
  • SIMULATE_KEY:用于唤醒的按键,默认为 Scroll Lock(通常不影响正常使用)

退出方式

Ctrl+C 即可安全退出脚本。

注意事项

  • 该脚本模拟的是 Scroll Lock 键,这通常不会干扰您的正常工作。
  • 在某些系统(如macOS)上,模拟按键可能需要辅助功能权限(在“系统偏好设置” > “安全性与隐私” > “辅助功能”中允许终端或Python)。
  • 长时间运行可能会稍微增加CPU占用,但通常非常小(低于1%)。

抱歉,评论功能暂时关闭!