mutter does not handle input devices with multiple capabilities well (can cause inability to type)
This is an upstream report for this downstream (Fedora) bug. The long story short is that we've found that, sometimes, if a system's only keyboard is a wireless USB keyboard, you can't type into some applications (including gnome-initial-setup and gnome-terminal).
In practice this seems to only affect 64-bit ARM systems. This seems to be because on x86_64, libinput assumes some kind of virtual "AT Translated Set 2 keyboard" input device is always present, even if no wired keyboard is actually connected. This does not happen on aarch64.
The root of the problem seems to be that a wireless keyboard can be considered by libinput as having both "keyboard" and "pointer" capabilities. libinput is well-designed here: it doesn't assume that input devices have a single "type", but allows them to have multiple "capabilities".
mutter appears to be...not so well-designed. Its MetaInputDeviceNative
/ ClutterInputDevice
design assumes that each device has a single "type" - see here and here - and decides the "type" by just going through a list of capabilities and saying "if the device has this capability it's this type".
In our problematic case, per pwhalen's output here, the system has a wireless keyboard which libinput reports as having both "pointer" and "keyboard" capabilities. So - because in the code linked above, mutter checks for the "pointer" capability before it checks for the "keyboard" capability - mutter decides the device is of the "pointer" type, and since there's no other keyboard attached to the system, doesn't advertise wl_keyboard support because it thinks the system has no keyboard at all. mutter's design makes it kind of fundamentally incapable of treating the device as having both mouse and keyboard capabilities.
We're not sure whether libinput shows both capabilities because the keyboard really does have some kind of pointer capability or rather because on the affected system both the wireless mouse and wireless keyboard are connected via one single USB adapter (Logitech's "unifying" adapter, which lets you save on USB adapters for multiple input devices), but it doesn't really seem to matter; it does seem clearly a problem that mutter just can't handle a device having both keyboard and mouse capabilities, when libinput does.
The dumb way to fix this specific case would be to check for the "keyboard" capability before the "pointer" capability, but that of course could easily cause the opposite problem in some case, which right now would appear to be working OK.