Cherry 8x16 keyboard matrix driver

nRF5 SDK v14.1.0

Cherry 8x16 keyboard matrix driver. More...

Macros

#define CHERRY8x16_MAX_NUM_OF_PRESSED_KEYS 6
Maximum number of pressed keys kept in buffers.
#define CHERRY8x16_DEFAULT_KEY_LOOKUP_MATRIX (const uint8_t*)0
If passed to cherry8x16_init , default lookup matrix will be used.
#define KEY_PACKET_MODIFIER_KEY_INDEX (0)
Index in the key packet where modifier keys such as ALT and Control are stored.
#define KEY_PACKET_RESERVED_INDEX (1)
Index in the key packet where OEMs can store information.
#define KEY_PACKET_KEY_INDEX (2)
Start index in the key packet where pressed keys are stored.
#define KEY_PACKET_MAX_KEYS (6)
Maximum number of keys that can be stored into the key packet.
#define KEY_PACKET_SIZE ( KEY_PACKET_KEY_INDEX + KEY_PACKET_MAX_KEYS )
Total size of the key packet in bytes.
#define KEY_PACKET_NO_KEY (0)
Value to be stored to key index to indicate no key is pressed.

Functions

cherry8x16_status_t cherry8x16_init (const uint8_t volatile *row_port, uint16_t *column_port, const uint8_t *key_lookup_matrix)
Function for initializing the driver. More...
bool cherry8x16_new_packet (const uint8_t **p_key_packet, uint8_t *p_key_packet_size)
Function for creating a new key packet if new data is available and key ghosting is not detected. More...

Detailed Description

Cherry 8x16 keyboard matrix driver.

Enumeration Type Documentation

Describes return values for: cherry8x16_init

Enumerator
CHERRY8x16_OK

Operation was succesful.

CHERRY8x16_NOT_DETECTED

Product/Revision ID was not what was expected

CHERRY8x16_INVALID_PARAMETER

Given parameters were not valid

Function Documentation

cherry8x16_status_t cherry8x16_init ( const uint8_t volatile * row_port ,
uint16_t * column_port ,
const uint8_t * key_lookup_matrix
)

Function for initializing the driver.

Note
Before calling this function, setup row_port as IO inputs with pulldowns enabled and column_port as IO outputs.
Parameters
row_port Pointer to GPIO port address that is used as key matrix row input.
column_port Pointer to GPIO port address that is used as key matrix column output.
key_lookup_matrix If NULL, use a default key lookup matrix. Otherwise pointer to a 128 (8x16) element array containing HID keycodes.
Returns
Return values
CHERRY8X16_OK Peripheral was initialized succesfully.
CHERRY8X16_NOT_DETECTED Could not detect the peripheral.
bool cherry8x16_new_packet ( const uint8_t ** p_key_packet ,
uint8_t * p_key_packet_size
)

Function for creating a new key packet if new data is available and key ghosting is not detected.

Parameters
p_key_packet Array that will hold the created key packet. Previously created packet will be discarded.
p_key_packet_size Key packet size in bytes.
Returns
Return values
true If new packet was created.
false If packet was not created.