#include 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; }