.changelog/3391.md
CompanionKeyboardMouseCapable protocol — New PVCoreBridge protocol for emulator cores that support direct keyboard and mouse input from a companion controller session, distinct from the button/axis CompanionControllerCapable protocolCompanionKeyboardMouseEvent — PVUI-only event type for keyboard and mouse events routed through CompanionInputRouter.keyboardMouseEvents publisher, separate from the DSU button/axis state pipelineCompanionKeyboardBridge — Bridge class that converts VirtualKeyboardDelegate callbacks into keyboard events forwarded via CompanionInputRouter.sendKeyDown/sendKeyUpPVDosBoxCore+CompanionController — PVDosBoxCore now conforms to CompanionKeyboardMouseCapable, routing companion keyboard events to its KeyboardResponder and mouse trackpad events to its MouseResponder; trackpad deltas accumulate into a normalized cursor position (0–1) before forwarding to the libretro mouse pipelineDOSKeyboardLayout provides a full QWERTY keyboard, mouse trackpad area, and quick-access function keys for DOS / DOSBox companion controller sessionsCompanionInputRouter — Keyboard and mouse events now use dedicated sendKeyDown/sendKeyUp/sendMouseMove/sendMouseButton methods and publish via a typed AnyPublisher<CompanionKeyboardMouseEvent, Never> stream; button/axis types imported from PVCoreBridgePVEmulatorViewController+CompanionController — Updated to subscribe to keyboardMouseEvents and forward events to cores conforming to CompanionKeyboardMouseCapable alongside existing button/axis routing