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

我有一台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体验。

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

首先是使用经典SysV init脚本的修复程序,放在init.d目录中并相应地进行符号链接(基本上,我们希望它在运行级别上运行,而不管halt(0)或reboot(6)除外)。 其次是系统服务,它更可靠,可能与最近的系统变化一起出现,这也适用于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

新推荐的系统方法:

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

粘贴以下行或将其键入文件:

 [单元]
说明= HP setkeycodes修复

 [服务]
 TYPE =单稳
重新启动=无
 RemainAfterExit =无
 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 enable hp-keycodes.service
 $ sudo reboot

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

我在HP Spectre x360上遇到了与17.10相同的问题。 事实上,我面对尼古拉斯和皮埃尔 – 安托万的问题:

  • 每次登录或翻转到平板电脑模式时都会激活飞行模式;
  • Fn + F12(切换飞行模式键)不再有效。

为了快速切换wifi,我制作了一个小脚本:

## Content of ~/scripts/wifi_toggle : ## #!/bin/bash str=`export LANGUAGE=en_GB ; nmcli r wifi` [ "$str" == "enabled" ] && nmcli r wifi off [ "$str" == "disabled" ] && nmcli r wifi on 

我很少使用蓝牙,所以它只处理wifi,但你可以很容易地修改它来处理蓝牙和wifi。

这一切都是从17.04开始的明显回归,其中一切都完美无瑕。 我尝试了18.04 beta,但情况与17.10相同。

Nicholas,Pierre-Antoine,我填写了关于这些问题的两份错误报告(关于每期的报告)。 你认为只要我完成报告,你就可以在这些报告中发表评论吗? 这有助于确认错误状态(受影响的多个用户)。

干杯