I’ve tracked this down and fixed it for the next release.
This was a real regression introduced when KeyDown was changed to be cancellable. Objo event handlers can now return True from KeyDown to consume the key press, which means the runtime has to dispatch that event synchronously while Avalonia is still processing the key event.
The bug was in the event wiring that came with that change. The desktop controls were listening on too narrow a routed-event path, mostly the tunnel phase for KeyDown. That is fragile for text input controls, because Avalonia text controls are templated and their inner input elements can handle or reroute key events before the Objo bridge sees them. The result was that TextField.KeyDown could be skipped even though the project compiled correctly and the generated AddHandler TextField1.KeyDown code was present.
The fix changes the keyboard bridge so controls listen on both tunnel and bubble routed-event phases, with duplicate suppression so the handler is still called only once per key event. This preserves cancellable KeyDown behaviour while avoiding the route sensitivity that caused this bug.
I also checked the other controls with keyboard events and applied the same shared wiring to:
TextField
TextArea
SearchField
NumericTextField
Canvas
GameCanvas
Fixed in the next release: https://feedback.objo.dev/bug/430