4.3 KiB
ROG Flow Z13 — Touchpad DWT & Palm Rejection Fix
Fixes the "Disable while typing" checkbox being greyed out in KDE Plasma and enables proper palm rejection on the ASUS ROG Flow Z13 folio keyboard touchpad.
Device: ROG Flow Z13 (2023 & 2025 models, USB 0b05:1a30)
OS: CachyOS / Arch Linux, KDE Plasma 6, Wayland
The Problem
The Z13's magnetic folio keyboard connects via USB. Because it's detachable,
the kernel flags the USB device as removable. Systemd's 65-integration.rules
then sets:
ID_INPUT_TOUCHPAD_INTEGRATION=external
on the touchpad. Libinput refuses to enable Disable-While-Typing (DWT) for external touchpads, so KDE greys out the checkbox.
The libinput package ships a built-in quirk (50-system-asus.quirks) that marks
the keyboard interface as internal, but there is no libinput quirk attribute
to mark a touchpad as internal. The keyboard was handled — the touchpad was not.
How the folio exposes itself
| Event | Role | Status |
|---|---|---|
event3 |
Vendor keys | — |
event4 |
Keyboard | Marked internal by libinput quirk |
event7 |
Mouse pointer | — |
event8 |
Touchpad | 🛑 Was marked external |
The keyboard and touchpad share the same LIBINPUT_DEVICE_GROUP, so they can
be paired for DWT — but only if both are internal.
The Fix
Layer 1 — Mark the keyboard as internal
Already handled by the system's built-in libinput quirk at
/usr/share/libinput/50-system-asus.quirks:
[Asus ROG FLow Z13 2025 keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x0B05
MatchProduct=0x1A30
AttrKeyboardIntegration=internal
The install script also creates a local override at
/etc/libinput/local-overrides.quirks as a broader catch-all for any ASUS
USB keyboard.
Layer 2 — Mark the touchpad as internal
A udev rule (/etc/udev/rules.d/99-rog-z13-touchpad.rules) overrides the
integration type after 65-integration.rules has already set it to external:
ACTION=="add|change", SUBSYSTEM=="input", \
ENV{ID_VENDOR_ID}=="0b05", ENV{ID_MODEL_ID}=="1a30", \
ENV{ID_INPUT_TOUCHPAD}=="1", \
ENV{ID_INPUT_TOUCHPAD_INTEGRATION}="internal"
Why this works:
- Runs at priority 99 (after
65-integration.rulesat priority 65) - Only matches the Z13 folio (
0b05:1a30) - Only affects the touchpad interface (
ID_INPUT_TOUCHPAD=1) - Sets
ID_INPUT_TOUCHPAD_INTEGRATION=internal, which libinput reads at runtime
The result
With both keyboard + touchpad recognized as internal:
- The "Disable while typing" checkbox becomes available in KDE System Settings → Touchpad
- DWT activates — the touchpad is ignored for ~300–500ms after any keypress
- Palm rejection improves — libinput applies more aggressive defaults for internal touchpads (larger exclusion zones, lower palm pressure thresholds)
Usage
# Clone the repo
git clone ssh://git@forgejo.fifthdread.com:223/Fifthdread/rog-z13-trackpad-fix.git
cd rog-z13-trackpad-fix
# Run the install script (as root)
sudo ./fix-rog-z13-trackpad.sh
Then log out and back in. Open System Settings → Touchpad — the "Disable touchpad when typing" checkbox should now be available.
Reverting
sudo rm /etc/udev/rules.d/99-rog-z13-touchpad.rules
sudo rm /etc/libinput/local-overrides.quirks
sudo udevadm control --reload-rules
sudo udevadm trigger --subsystem-match=input
Troubleshooting
Verify the udev rule is loaded:
udevadm info --query=property /dev/input/event8 | grep INTEGRATION
# Should show: ID_INPUT_TOUCHPAD_INTEGRATION=internal
Verify the keyboard quirk is applied:
sudo libinput quirks list /dev/input/event4
# Should show: AttrKeyboardIntegration=internal
Verify DWT is enabled:
sudo libinput list-devices | grep -A15 "Touchpad"
# Should show: Disable-w-typing: enabled
Your event numbers may differ (e.g. after a kernel update). Run
sudo libinput list-devicesto find the correct ones.