如何欺骗 Xorg 将 TCP 远程控制视为用户活动?

如何欺骗 Xorg 将 TCP 远程控制视为用户活动?

我有一台新的自制 HTPC,运行 Debian bullseye + X11 + LightDM + Kodi 19。HTPC 连接到等离子屏幕和我的本地网络,但没有其他东西(没有鼠标,没有键盘)。 Kodi 是通过 Kore 进行控制的,Kore 是一款通过网络运行的 Android Kodi 远程控制应用程序。

我的问题是,X 不会将遥控器的操作视为用户活动,因此,大约 1000 万后,屏幕变黑,必须插入鼠标并摇动才能唤醒屏幕。

我的第一个想法是禁用 DPMS 并完成它:

nano /usr/share/X11/xorg.conf.d/10-monitor.conf
Section "Extensions"
        Option      "DPMS" "Disable"
EndSection

但由于某种原因它没有起作用。与此同时,我改变了主意,认为在真正不活动后屏幕变黑会很棒,因为屏幕是等离子屏幕,很容易出现烧屏现象。

那么:如何让 X11 将 Kore 的输入视为用户活动?

我有一个想法,那就是让 Kore 连接到一个虚拟端口(比如 8081)。然后让一个 python 脚本永远在 HTPC 上运行,监听 8081 并将请求转发到 Kodi 监听的端口(比如 8082)。每次我的脚本代理请求时,它都会触发一次按键(例如按下 Ctrl + 释放 Ctrl 以避免副作用)。我还没有测试过,但我想我会首先从社区得到一些不同的想法。

答案1

如果lightdm使用自己的light-locker屏幕保护程序/储物柜实现,也许您可​​以安排每个远程控制器操作也运行light-locker-command --poke?这手册页将其描述为“戳一下正在运行的储物柜来模拟用户活动”。

但如果您使用的是裸 Xorg DPMS,则该选项不可用。

答案2

  1. 您使用什么窗口管理器(gnome、kde、xfce、lxde 等)?无论是哪一个,请检查其屏幕保护程序设置,应该有一种方法可以完全禁用它。 xfce4 肯定有(我正在使用的),但我不知道其他的。如果您的窗口管理器不支持禁用屏幕保护程序,请考虑切换到支持的窗口管理器。

    根据您的 WM,您可能还必须使用电源管理设置来禁用“显示电源管理”(或您的 WM 称为 DPMS 的任何名称)。

  2. Shift硬件破解:找一个旧键盘,撬开、 、Alt或键的键帽Control,然后将其插入 USB 端口。设计并构建一个电路,每 9 分钟左右触发一次按键(或将屏幕保护程序延迟增加到尽可能高,并每 XX 小时触发一次 - 尽可能不频繁,但仍足以防止屏幕保护程序启动)。

    您也许可以在以下网站上找到有关电路设计的帮助https:// electronics.stackexchange.com/或其他一些电子网站。

    顺便说一句,使用 Shift、Alt 或 Ctrl 的原因是它们只是修饰键 - 它们不会将字符插入到您的终端或您可能正在编辑的任何文档中......并且每 XX 分钟一次瞬时触发不太可能产生任何明显的影响。 Shift可能是最好的选择 - 也许它能做的最糟糕的事情就是(很少)将您在触发时恰好输入的字母大写。

    一种变体是使用旧鼠标代替键盘,并使用某种设备每 XX 分钟触发一次滚轮事件或微小的鼠标移动事件。同样,与修饰键一样,滚轮或移动事件比鼠标单击更不可能引起烦恼。

  3. 与硬件黑客类似:可能值得搜索可以执行类似操作的现有 USB 设备,也许是某种可编程 USB HID 设备。不知道这样的事情是否真的存在。也许是一个像 Raspberry Pi 一样的小型 ARM SBC,或者运行的旧 Android 手机USB小工具或类似的。

相关内容