/* Matrix Keyboard (based on dedicated GPIO) example
This example code is in the Public Domain (or CC0 licensed, at your option.)
Unless required by applicable law or agreed to in writing, this
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied.
*/
#include <stdio.h>
#include "esp_log.h"
#include "matrix_keyboard.h"
const static char *TAG = "example";
/**
* @brief Matrix keyboard event handler
* @note This function is run under OS timer task context
*/
esp_err_t example_matrix_kbd_event_handler(matrix_kbd_handle_t mkbd_handle, matrix_kbd_event_id_t event, void *event_data, void *handler_args)
{
uint32_t key_code = (uint32_t)event_data;
switch (event) {
case MATRIX_KBD_EVENT_DOWN:
ESP_LOGI(TAG, "press event, key code = %04"PRIx32, key_code);
break;
case MATRIX_KBD_EVENT_UP:
ESP_LOGI(TAG, "release event, key code = %04"PRIx32, key_code);
break;
}
return ESP_OK;
}
void app_main(void)
{
matrix_kbd_handle_t kbd = NULL;
// Apply default matrix keyboard configuration
matrix_kbd_config_t config = MATRIX_KEYBOARD_DEFAULT_CONFIG();
// Set GPIOs used by row and column line
config.col_gpios = (int[]) {
10, 11, 12, 13
};
config.nr_col_gpios = 4;
config.row_gpios = (int[]) {
14, 15, 16, 17
};
config.nr_row_gpios = 4;
// Install matrix keyboard driver
matrix_kbd_install(&config, &kbd);
// Register keyboard input event handler
matrix_kbd_register_event_handler(kbd, example_matrix_kbd_event_handler, NULL);
// Keyboard start to work
matrix_kbd_start(kbd);
}