Upstream support of Google Chromebook keyboards (udev, xkeyboard-config)?
From: Paul Menzel
Date: Mon Dec 27 2021 - 11:18:49 EST
Dear Linux folks,
Installing a non-Chromium OS distribution like Debian on a Google
Chromebook, in this case a Dell Latitude 5400 Chrome (google/sarien),
not all keys work as expected.
1. Non-working super key and two function keys on Google Chromebook
Dell Latitute 5400 Chrome (google/sarien) [1]
2. Wrong caps lock key and function key mappings on Google Chromebook
Dell Latitute 5400 Chrome (google/sarien) [2]
Peter replied, this should be fixed in udev, so it’s not directly
related to the Linux kernel, as the Linux kernel exposes the
scancodes(?) just fine. But what is the upstream process for this in
general? Chromium OS carries `91-chromeos-keyboard.rules` for example.
systemd/udev currently has an entry for two Google Chromebook models in
`hwdb.d/60-keyboard.hwdb` [4]:
######################### FIXED MODEL DEVICES
#############################
# This section lists devices which require special handling in
their key
# code to keysym mapping by setting the xkb model.
# The model must be an xkb compatible model (defined with
XKB_FIXED_MODEL).
# Chromebooks
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnFalco:pvr*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnPeppy:pvr*
XKB_FIXED_MODEL="chromebook"
The Dell Chromebooks, unfortunately, also use the embedded controller
with Dell’s proprietary firmware (Wilco(?)), and not Chrome EC making
special handling necessary. `91-chromeos-keyboard.rules` has
# Wilco keyboard (5220W-C) for Chrome OS
SUBSYSTEM=="input", \
ATTRS{idVendor}=="413c", ATTRS{idProduct}=="2510", \
ENV{CROS_KEYBOARD_TOP_ROW_LAYOUT}="3", \
ENV{ID_INPUT_KEYBOARD}="1"
Kind regards,
Paul
[1]:
https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/issues/298
[2]:
https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/issues/299
[3]:
https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/783bd8563450d9e9e575323a83321fdc67e334bf/sys-fs/udev/files/91-chromeos-keyboard.rules
[4]:
https://github.com/systemd/systemd/commit/d7d31692bf7cde5dce7f4ed3cae429a5b302a9f0?branch=d7d31692bf7cde5dce7f4ed3cae429a5b302a9f0