为什么“飞行模式”在 Ubuntu 18.04 中一直在我的 HP 笔记本电脑上切换?

Nic*_*mel 23 bluetooth hp airplane-mode gnome-shell 18.04

我有一台 HP Spectre x360 可转换笔记本电脑,我运行的是 Ubuntu 18.04。每次我将屏幕侧向或在平板电脑模式下转回来时,都会激活“飞行模式”。事实上,当我启动和登录时,我必须手动关闭“飞行模式”并重新打开 wifi。我不想像这样禁用 gnome rfkill 插件:'gsettings set org.gnome.settings-daemon.plugins.rfkill active false' 因为那样我就不能再使用蓝牙了。此外,出于某些不可告人的原因,即使我确实禁用了插件,gnome shell 还是会打开“飞行模式”,这意味着我每次登录时都必须重新打开 wifi。这太烦人了,我真的喜欢 18.04 的发展方向,但这严重破坏了整个 gnome shell 体验。

Nic*_*mel 32

在 gnome shell 中,许多 HP 笔记本电脑在启动时、屏幕向侧面倾斜或打开/关闭盖子时会自动激活“飞行模式”。以下是针对运行 Linux 并使用 gnome shell 的 HP 笔记本电脑的修复程序。Keycode 240 在 /usr/include/linux/input-event-codes.h 中定义为 KEY_UNKNOWN(一种非操作键)。此外,您的系统日志将不再提示您定义 HP e057 和 e058 代码,这可能非常烦人。

首先是使用经典的 SysV init 脚本进行修复,放置在 init.d 目录中并相应地进行符号链接(基本上,我们希望它在除暂停 (0) 或重新启动 (6) 之外的任何运行级别上都可以运行)。其次是更可靠的 systemd 服务,并且可能会出现最近的 systemd 更改,它也适用于 Fedora 28 和其他分发平台。特别是在 Fedora 上,您会发现 /etc/init.d 目录中几乎完全没有脚本,还有一些 README 详细说明了从 SysV 到 systemd 的过渡。第一种方法可以工作,但第二种方法更“未来友好”,尤其是考虑到 Ubuntu 的发展方向,并且也会以稍微不那么烦人的方式工作。Systemd init 脚本实际上非常方便,并且在 Ubuntu 18.04 中完全实现并经常使用。

旧的 SysV 方法:

$ sudo sh -c 'printf "#!/bin/sh\n/usr/bin/setkeycodes e057 240 e058 240\n" > /etc/init.d/hp-keycodes'
$ sudo chmod +x /etc/init.d/hp-keycodes
$ sudo ln -s /etc/init.d/hp-keycodes /etc/rc1.d/K01hp-keycodes
$ sudo ln -s /etc/init.d/hp-keycodes /etc/rc2.d/S01hp-keycodes
$ sudo ln -s /etc/init.d/hp-keycodes /etc/rc3.d/S01hp-keycodes
$ sudo ln -s /etc/init.d/hp-keycodes /etc/rc4.d/S01hp-keycodes
$ sudo ln -s /etc/init.d/hp-keycodes /etc/rc5.d/S01hp-keycodes
$ 须藤重启

新推荐的 Systemd 方法:

$ sudo nano /etc/systemd/system/hp-keycodes.service

粘贴以下几行或将它们键入到文件中:

[单元]
说明=HP setkeycodes 修复

[服务]
类型=oneshot
重启=否
RemainAfterExit=no
ExecStart=/usr/bin/setkeycodes e057 240 e058 240

[安装]
WantedBy=rescue.target
WantedBy=multi-user.target
WantedBy=graphical.target

使用 ctrl-x, y 保存并确认文件名。

$ sudo systemctl daemon-reload
$ sudo systemctl 启用 hp-keycodes.service
$ 须藤重启

就是这样,当您倾斜屏幕或关闭/打开笔记本电脑盖时,不再有烦人的奇怪东西!

  • 谢谢你。当许多其他解决方案没有时,这在我的 Spectre x360 上有效。 (2认同)
  • 由于某种原因,升级到 22.04 后第二种方法不再适用 (2认同)