ESPHome 2026.5.0b1
Loading...
Searching...
No Matches
matrix_keypad.h
Go to the documentation of this file.
1#pragma once
2
6#include "esphome/core/hal.h"
8#include <cstdlib>
9#include <utility>
10
11namespace esphome::matrix_keypad {
12
14 public:
15 virtual void button_pressed(int row, int col){};
16 virtual void button_released(int row, int col){};
17 virtual void key_pressed(uint8_t key){};
18 virtual void key_released(uint8_t key){};
19};
20
21class MatrixKeyTrigger : public Trigger<uint8_t> {};
22
24 public:
25 void setup() override;
26 void loop() override;
27 void dump_config() override;
28 void set_columns(std::vector<GPIOPin *> pins) { columns_ = std::move(pins); };
29 void set_rows(std::vector<GPIOPin *> pins) { rows_ = std::move(pins); };
30 void set_keys(std::string keys) { keys_ = std::move(keys); };
31 void set_debounce_time(uint32_t debounce_time) { debounce_time_ = debounce_time; };
32 void set_has_diodes(bool has_diodes) { has_diodes_ = has_diodes; };
33 void set_has_pulldowns(bool has_pulldowns) { has_pulldowns_ = has_pulldowns; };
34
37
38 protected:
39 std::vector<GPIOPin *> rows_;
40 std::vector<GPIOPin *> columns_;
41 std::string keys_;
43 bool has_diodes_{false};
44 bool has_pulldowns_{false};
45 int pressed_key_ = -1;
47 int active_key_{-1};
48
49 std::vector<MatrixKeypadListener *> listeners_{};
50 std::vector<MatrixKeyTrigger *> key_triggers_;
51};
52
53} // namespace esphome::matrix_keypad
interface for components that provide keypresses
Definition key_provider.h:9
void set_has_diodes(bool has_diodes)
std::vector< MatrixKeypadListener * > listeners_
void set_columns(std::vector< GPIOPin * > pins)
void set_rows(std::vector< GPIOPin * > pins)
void register_key_trigger(MatrixKeyTrigger *trig)
std::vector< GPIOPin * > columns_
std::vector< MatrixKeyTrigger * > key_triggers_
std::vector< GPIOPin * > rows_
void set_debounce_time(uint32_t debounce_time)
void set_has_pulldowns(bool has_pulldowns)
void register_listener(MatrixKeypadListener *listener)
virtual void button_pressed(int row, int col)
virtual void button_released(int row, int col)
static void uint32_t