#pragma once #include #include #include #include class KeyboardDriver { public: KeyboardDriver(); KeyboardDriver(const KeyboardDriver&) = delete; KeyboardDriver(KeyboardDriver&&) = delete; static z_cap_t GetPortCap(); void RegisterListener(uint64_t port_cap); Thread StartInterruptLoop(); void InterruptLoop(); private: z_cap_t port_cap_; glcr::LinkedList listeners_; uint64_t bitmap_ = 0; void ProcessInput(uint64_t input); void SendKeypress(uint16_t scancode); };