For laptop user, there could be a quite annoying issue that the ‘Airplane Mode’ automatically turns on when lid closed, or when the screen is tilted sideways.
For HP laptops running Ubuntu, Fedora, or other Linux using systemd, there’s a workaround by mapping the HP e057 and e058 scancodes to 240 (no-op key). So it won’t automatically turn on Airplane Mode, while the option in ‘Wi-Fi’ settings and fn + F12 key combination still function.
NOTE: This tutorial is tested and works in my Ubuntu 22.04 on HP 246 laptop. It may or may not work in your machine.
1. Create service to remap the scancode:
1.) Firstly, press Ctrl+Alt+T on keyboard to open terminal. When it opens, run command to create a service file and edit via Gedit text editor:
sudo gedit /etc/systemd/system/hp-keycodes.service
Depends on your desktop environment, replace
gedit in command with your system text editor (e.g.,
gnome-text-editor for Ubuntu 22.10+/Fedora workstation), or use
nano command line editor that works in most Linux. When file opens, paste below lines and save it.
Description=HP setkeycodes fix
ExecStart=/usr/bin/setkeycodes e057 240 e058 240
As mentioned, this service will map e057 and e058 scancodes to no operation keycode 240.
2. Enable the service
2.) After saving the file (for nano, press Ctrl+X, type y and hit Enter), reload and enable the service by running commands below one by one:
sudo systemctl daemon-reload
sudo systemctl enable hp-keycodes.service
And finally restart your computer and check the result!
Undo the changes:
If the method does not work for you, simply run the command in terminal (Ctrl+Alt+T) to disable the service:
sudo systemctl disable hp-keycodes.service
Next remove the file:
sudo rm /etc/systemd/system/hp-keycodes.service
Finally restart your machine to apply change.
I’ve got this :
“Failed to enable unit: “target.graphic” is not a valid unit name.”
problem solved, I’m stupid. sorry.
it didnt work on my case whats should i do
This worked great for me on PopOS 22.04. I didn’t even have to reboot the computer. Thanks!
I found an alternative solution that is desktop-agnostic, actually works, and can be implemented on any distro (instead of only ones that use Systemd)