33 lines
739 B
C
33 lines
739 B
C
#include <fxengine/event/keyboard.h>
|
|
|
|
static callback callbacks[3][6][10]={0};
|
|
|
|
static inline uint32_t get_x(const uint32_t matrix_code)
|
|
{
|
|
return (matrix_code-1) % 0x10;
|
|
}
|
|
|
|
static inline uint32_t get_y(const uint32_t matrix_code)
|
|
{
|
|
return (matrix_code-1) / 0x10;
|
|
}
|
|
|
|
void FE_keyboard_reload()
|
|
{
|
|
key_event_t event;
|
|
while (1)
|
|
{
|
|
event=pollevent();
|
|
event.type--;
|
|
if (event.type==-1)
|
|
break;
|
|
callback action = callbacks[event.type][get_x(event.key)][get_y(event.key)];
|
|
if (action)
|
|
action();
|
|
}
|
|
}
|
|
|
|
void FE_keyboard_set_key(uint32_t matrix_code, uint32_t ev_type, callback function)
|
|
{
|
|
callbacks[ev_type-1][get_x(matrix_code)][get_y(matrix_code)]=function;
|
|
} |