[PATCH v2 0/7] HID: asus: ASUS Zenbook Duo keyboard support

From: Paolo Pisati

Date: Fri Oct 09 2026 - 11:47:58 EST


Add support for the detachable USB/Bluetooth keyboard of the ASUS
Zenbook Duo line (UX8406MA, UX8406CA, UX8407AA): hotkeys, keyboard
backlight and the platform profile key, over both transports.

This patchset is a collective effort, gathered here:

https://github.com/NeroReflex/asusctl/issues/25

v1 was applied to hid.git#for-7.2/asus and dropped again because of a
clang warning. This version fixes that, addresses the review comments
on v1 (Sashiko, Nathan Chancellor, kernel test robot) and the problems
found while testing it on a UX8407AA against 7.3, docked and over
Bluetooth: hotkeys, keyboard backlight, Fn+F profile cycling, and the
touchpad staying with hid-multitouch.

Rebecca Mara Müller posted an independent patch for the UX8407AA
keyboard in August [1]. This series follows it in using
HID_CONNECT_HIDINPUT_FORCE and in binding the USB IDs by group, and
carries her re-sent handshake as the last patch.

Changes in v2:
- Rebase onto hid.git#for-7.4/asus; QUIRK_ZENBOOK_DUO_KEYBOARD moves to
BIT(16) as BIT(15) is taken now.
- Fold the USB descriptor offsets and the padding removal into the
descriptor fixup patch; fix the padding removal, which read past the
end of the descriptor and could write past the end of the new one,
and move the whole remainder of the descriptor instead of 12 bytes,
as the Zenbook Duo collection does not end there (Sashiko).
- End the fixup's branch chain with a plain else so clang does not warn
that rsize_orig may be uninitialized (kernel test robot, Nathan).
- Drop the MyASUS key mapping, which is upstream as KEY_PROG1 now and
matches asus-nb-wmi (Sashiko).
- Use HID_CONNECT_HIDINPUT_FORCE on the vendor interface instead of
injecting a fake keyboard collection into its descriptor (Sashiko
flagged the malformed padding item).
- Cycle the platform profile from the driver's worker instead of the
HID event callback, consume the event, and only build the call when
ACPI_PLATFORM_PROFILE is reachable; v1 did not link on architectures
without ACPI (Sashiko).
- New: cap feature report writes at the declared report length; the
Zenbook Duo does not answer the 64 byte writes the driver sends for
the backlight since 7.3.
- Bind the USB IDs to HID_GROUP_GENERIC so hid-multitouch keeps the
touchpad interfaces, and leave Fn-lock out, see that patch.
- New: re-send the handshake after probe (from Rebecca's patch).
- Use the "HID: asus:" subject prefix, write commit messages for every
patch, and fix the Signed-off-by chains.

Not covered: Fn-lock (see patch 6). On the UX8407AA the screen swap key
sends a Super+P chord by itself; the 0x9c mapping is for the UX8406MA.

v1: https://lore.kernel.org/r/20260513163248.16483-1-p.pisati@xxxxxxxxx
[1] https://lore.kernel.org/r/20260811125548.1975748-1-rebecca.mara@xxxxxxxxx

Joshua Leivenzon (4):
HID: asus: Fix up Zenbook Duo report descriptors
HID: asus: Add missing Zenbook Duo hotkeys
HID: asus: Force hid-input to bind to the Zenbook Duo hotkey interface
HID: asus: Cycle the platform profile from the Zenbook Duo profile key

Luke Jones (1):
HID: asus: add prod-id, quirk for Zenbook Duo keyboard

Paolo Pisati (1):
HID: asus: Do not send feature reports larger than declared

Rebecca Mara Müller (1):
HID: asus: Re-send the Zenbook Duo keyboard handshake after probe

drivers/hid/hid-asus.c | 178 +++++++++++++++++++++++++++++++++++++----
drivers/hid/hid-ids.h | 6 ++
2 files changed, 169 insertions(+), 15 deletions(-)


base-commit: 8099f9da59f1c338bf88e25b7aa2a7fdf840879c
--
2.43.0