/* 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 #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 = %04x", key_code); break; case MATRIX_KBD_EVENT_UP: ESP_LOGI(TAG, "release event, key code = %04x", 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); }