/* * InputHandler.h - input abstraction and mapping to commands */ #pragma once #include #include "Command.h" class Editor; // fwd decl // Result of translating raw input into an editor command. struct MappedInput { bool hasCommand = false; CommandId id = CommandId::Refresh; std::string arg; // optional argument (e.g., text for InsertText) int count = 0; // optional repeat (C-u not yet implemented) }; class InputHandler { public: virtual ~InputHandler() = default; // Optional: attach current Editor so handlers can consult editor state (e.g., universal argument) // Default implementation does nothing. virtual void Attach(Editor *) {} // Poll for input and translate it to a command. Non-blocking. // Returns true if a command is available in 'out'. Returns false if no input. virtual bool Poll(MappedInput &out) = 0; };