AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-382160

GNUser's questions

Martin Hope
GNUser
Asked: 2019-11-16 08:42:21 +0800 CST

如何让 linux 用户态应用程序认为笔记本电脑的盖子总是打开的?

  • 3

目标:

我正在尝试使我的 linux 笔记本电脑(带有 Libreboot 的 T400 ThinkPad)无论盖子是打开还是关闭,其行为方式都完全相同。换句话说,我试图模拟一台笔记本电脑的盖子开关坏了,该开关始终处于“盖子打开”位置。我正在寻找一种不需要特定 init 系统或特定电源管理器的低级解决方案——只需要任何 GNU/Linux 系统中预期存在(或可用)的软件。

我的两个操作系统是运行 Xorg 和 Fluxbox 的 Devuan ASCII(64 位)和 Tiny Core Linux 10.1(64 位),以防万一。内核版本为 4.16.2 (Devuan) 和 4.19.10 (Tiny Core Linux)。

测试:

我正在使用 xscreensaver(设置为在 1 分钟不活动后开始播放动画)作为我的测试应用程序,因为我注意到 xscreensaver 在盖子关闭时不会启动并开始播放动画。因此,当我可以合上盖子时,稍等一分钟,重新打开盖子,发现正在播放 xscreensaver 动画,我就知道我找到了解决方案。

到目前为止我尝试了什么:

  1. 机械的。我的笔记本电脑是 T400,它使用蓝牙 LED 上方的小磁铁作为盖子开关。在该位置放置一个小型冰箱磁铁会导致盖子开关卡在“关闭”位置,并且 xscreensaver 测试失败。使用button.lid_init_state=open内核引导参数引导没有帮助。

  2. 按键模块启动参数。这个内置模块是笔记本电脑盖子开关的驱动程序。使用button.lid_report_interval=0或=-1或=500000没有帮助。

  3. i915 模块启动参数。Devuan 中的内核支持i915.panel_ignore_lid引导参数。将其设置为 -2 无助于通过 xscreensaver 测试。

  4. 视频模块启动参数。使用video.report_key_events=0没有帮助。

  5. ACPI。使用acpi=off内核引导参数禁用它无助于通过测试。

  6. 禁用盖子开关。令人惊讶的是,禁用盖子开关并没有帮助。很难禁用按钮模块,因为它内置在内核中(即,它显示为ls /sys/module但不显示为lsmod)。但是,可以在系统启动后取消绑定所有使用按钮模块的设备:

  # 1. find the devices that use the button driver:
$ ls /sys/bus/acpi/drivers/button
LNXPWRBN:00  PNP0C0D:00   PNP0C0E:00   bind         uevent       unbind
  # 2. disable the devices one by one:
$ echo "LNXPWRBN:00" | sudo tee /sys/bus/acpi/drivers/button/unbind
LNXPWRBN:00
$ echo "PNP0C0D:00" | sudo tee /sys/bus/acpi/drivers/button/unbind
PNP0C0D:00
$ echo "PNP0C0E:00" | sudo tee /sys/bus/acpi/drivers/button/unbind
PNP0C0E:00
  # 3. satisfy oneself that the devices are gone:
$ ls /sys/bus/acpi/drivers/button
bind    uevent  unbind

即使这样,xscreensaver 动画会在盖子打开时启动,但不会在盖子关闭时启动。

  1. 捕获触摸板事件。通过观察cat /dev/input/event5的输出,我注意到打开和关闭笔记本电脑盖会导致突触触摸板生成一些输入。使用evtest --grab /dev/input/event5 >/dev/null 获取所有输入并没有帮助。

  2. 告诉X不要挡道。X 启动后,我在引导时以普通用户身份运行这些命令:xset s off; xset -dpms; xset 的 noblank。这些命令告诉 X 我不想要它的空白屏幕屏幕保护程序,我不想要 DPMS,并且它永远不应该使屏幕空白。它没有帮助。

  3. BIOS。我已经搜索了在 BIOS(在我的情况下为 Libreboot)级别禁用盖子开关的方法,但没有找到任何相关的内容。

这就是我到目前为止所尝试的全部。即使结合了以上所有,用户态应用程序(xscreensaver 是它们的代表)仍然会根据笔记本电脑盖是打开还是关闭而表现不同。(在 xscreensaver 的情况下,它只在笔记本电脑盖打开时开始播放动画,而在它关闭时从不播放。)

当然,必须有一种方法可以通过软件完全禁用笔记本电脑的盖子开关,并让用户级应用程序认为笔记本电脑的盖子总是打开的。我错过了什么?

video
  • 1 个回答
  • 423 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve