在GNOME Shell中,许多HP笔记本电脑在启动时会自动激活“飞行模式”,当屏幕倾斜、盖子打开/关闭时也会激活。以下是适用于运行Linux并使用GNOME Shell的HP笔记本电脑的修复方法。在`/usr/include/linux/input-event-codes.h`中,键码240被定义为`KEY_UNKNOWN`(一种无操作键)。此外,您的系统日志将不再提示您定义HP e057和e058代码,这可能非常烦人。
首先,我们使用经典的SysV init脚本进行修复,将其放置在`init.d`目录中,并相应地创建符号链接(基本上,我们希望它在除了halt(0)或reboot(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
sudo reboot
新的推荐
systemd
方法(在终端中输入):
sudo nano /etc/systemd/system/hp-keycodes.service
将以下行粘贴或输入到文件中:
[Unit]
Description=HP setkeycodes fix
[Service]
Type=oneshot
Restart=no
RemainAfterExit=no
ExecStart=/usr/bin/setkeycodes e057 240 e058 240
[Install]
WantedBy=rescue.target
WantedBy=multi-user.target
WantedBy=graphical.target
保存并确认文件名使用
Ctrl+
x,
y。然后,在终端中输入:
sudo systemctl daemon-reload
sudo systemctl enable --now hp-keycodes.service
就是这样,当你倾斜屏幕或关闭/打开笔记本电脑盖子时再也没有烦人的奇怪问题了!