input: keymap: add a MATRIX_CODE macro

Add a MATRIX_CODE macro to extract the key code from a key value created
in DT with MATRIX_KEY. This can be handy for code other than input_keymap.c

Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
This commit is contained in:
Fabio Baltieri
2025-11-03 17:56:48 +00:00
committed by Johan Hedberg
parent 6a340f6ef0
commit 00966b857e
2 changed files with 12 additions and 3 deletions

View File

@@ -41,6 +41,17 @@
*/
#define MATRIX_COL(keymap_entry) (((keymap_entry) >> 16) & 0xff)
/**
* @brief Extract the key code from a keymap entry.
*
* This macro extracts the key code from a 32-bit keymap entry. The key code
* s stored in bits 0-15 of the keymap entry.
*
* @param keymap_entry The 32-bit keymap entry value.
* @return The key code (0-0xffff) extracted from the keymap entry.
*/
#define MATRIX_CODE(keymap_entry) (keymap_entry & 0xffff)
/** @} */
#endif /* ZEPHYR_INCLUDE_INPUT_INPUT_KEYMAP_H_ */

View File

@@ -86,8 +86,6 @@ static int keymap_init(const struct device *dev)
#define KEYMAP_ENTRY_OFFSET(keymap_entry, col_size) \
(MATRIX_ROW(keymap_entry) * col_size + MATRIX_COL(keymap_entry))
#define KEYMAP_ENTRY_CODE(keymap_entry) (keymap_entry & 0xffff)
#define KEYMAP_ENTRY_VALIDATE(node_id, prop, idx) \
BUILD_ASSERT(MATRIX_ROW(DT_PROP_BY_IDX(node_id, prop, idx)) < \
DT_PROP(node_id, row_size), "invalid row"); \
@@ -96,7 +94,7 @@ static int keymap_init(const struct device *dev)
#define CODES_INIT(node_id, prop, idx) \
[KEYMAP_ENTRY_OFFSET(DT_PROP_BY_IDX(node_id, prop, idx), DT_PROP(node_id, col_size))] = \
KEYMAP_ENTRY_CODE(DT_PROP_BY_IDX(node_id, prop, idx)),
MATRIX_CODE(DT_PROP_BY_IDX(node_id, prop, idx)),
#define INPUT_KEYMAP_DEFINE(inst) \
INPUT_CALLBACK_DEFINE_NAMED(DEVICE_DT_GET(DT_INST_PARENT(inst)), keymap_cb, \