#pragma once #include #include #include #include #include class TpagerKeyboard : public tt::hal::keyboard::KeyboardDevice { private: lv_indev_t* _Nullable kbHandle = nullptr; lv_indev_t* _Nullable encHandle = nullptr; pcnt_unit_handle_t encPcntUnit = nullptr; std::shared_ptr keypad; std::unique_ptr inputTimer; void initEncoder(void); void processKeyboard(); public: TpagerKeyboard(std::shared_ptr tca) : keypad(std::move(tca)) {} ~TpagerKeyboard() {} std::string getName() const final { return "T-Lora Pager Keyboard"; } std::string getDescription() const final { return "I2C keyboard with encoder"; } bool start(lv_display_t* display) override; bool stop() override; bool isAttached() const override; lv_indev_t* _Nullable getLvglIndev() override { return kbHandle; } int getEncoderPulses(); }; std::shared_ptr createKeyboard();