ESPHome 2025.5.0
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 {
12namespace matrix_keypad {
13
15 public:
16 virtual void button_pressed(int row, int col){};
17 virtual void button_released(int row, int col){};
18 virtual void key_pressed(uint8_t key){};
19 virtual void key_released(uint8_t key){};
20};
21
22class MatrixKeyTrigger : public Trigger<uint8_t> {};
23
25 public:
26 void setup() override;
27 void loop() override;
28 void dump_config() override;
29 void set_columns(std::vector<GPIOPin *> pins) { columns_ = std::move(pins); };
30 void set_rows(std::vector<GPIOPin *> pins) { rows_ = std::move(pins); };
31 void set_keys(std::string keys) { keys_ = std::move(keys); };
32 void set_debounce_time(int debounce_time) { debounce_time_ = debounce_time; };
33 void set_has_diodes(int has_diodes) { has_diodes_ = has_diodes; };
34 void set_has_pulldowns(int has_pulldowns) { has_pulldowns_ = has_pulldowns; };
35
38
39 protected:
40 std::vector<GPIOPin *> rows_;
41 std::vector<GPIOPin *> columns_;
42 std::string keys_;
44 bool has_diodes_{false};
45 bool has_pulldowns_{false};
46 int pressed_key_ = -1;
47
48 std::vector<MatrixKeypadListener *> listeners_{};
49 std::vector<MatrixKeyTrigger *> key_triggers_;
50};
51
52} // namespace matrix_keypad
53} // namespace esphome
interface for components that provide keypresses
std::vector< MatrixKeypadListener * > listeners_
void set_columns(std::vector< GPIOPin * > pins)
void set_rows(std::vector< GPIOPin * > pins)
void set_has_pulldowns(int has_pulldowns)
void register_key_trigger(MatrixKeyTrigger *trig)
std::vector< GPIOPin * > columns_
std::vector< MatrixKeyTrigger * > key_triggers_
std::vector< GPIOPin * > rows_
void set_debounce_time(int debounce_time)
void register_listener(MatrixKeypadListener *listener)
virtual void button_pressed(int row, int col)
virtual void button_released(int row, int col)
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7