1 /*
2  * Copyright 2024 Google LLC
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 /**
8  * @file
9  * @ingroup input_keymap
10  * @brief Header file for keymap utilities.
11  */
12 
13 #ifndef ZEPHYR_INCLUDE_INPUT_INPUT_KEYMAP_H_
14 #define ZEPHYR_INCLUDE_INPUT_INPUT_KEYMAP_H_
15 
16 /**
17  * @defgroup input_keymap Keymap utilities
18  * @ingroup input_interface
19  * @{
20  */
21 
22 /**
23  * @brief Extract the row index from a keymap entry.
24  *
25  * This macro extracts the row index from a 32-bit keymap entry. The row index
26  * is stored in bits 24-31 of the keymap entry.
27  *
28  * @param keymap_entry The 32-bit keymap entry value.
29  * @return The row index (0-255) extracted from the keymap entry.
30  */
31 #define MATRIX_ROW(keymap_entry) (((keymap_entry) >> 24) & 0xff)
32 
33 /**
34  * @brief Extract the column index from a keymap entry.
35  *
36  * This macro extracts the column index from a 32-bit keymap entry. The column
37  * index is stored in bits 16-23 of the keymap entry.
38  *
39  * @param keymap_entry The 32-bit keymap entry value.
40  * @return The column index (0-255) extracted from the keymap entry.
41  */
42 #define MATRIX_COL(keymap_entry) (((keymap_entry) >> 16) & 0xff)
43 
44 /**
45  * @brief Extract the key code from a keymap entry.
46  *
47  * This macro extracts the key code from a 32-bit keymap entry. The key code
48  * s stored in bits 0-15 of the keymap entry.
49  *
50  * @param keymap_entry The 32-bit keymap entry value.
51  * @return The key code (0-0xffff) extracted from the keymap entry.
52  */
53 #define MATRIX_CODE(keymap_entry) (keymap_entry & 0xffff)
54 
55 /** @} */
56 
57 #endif /* ZEPHYR_INCLUDE_INPUT_INPUT_KEYMAP_H_ */
58