forked from kofal.net/zmk
Initial event manager work, and two first events.
* Add initial event manager implementation, roughly mimicking Nordic's API. * Add `position_state_changed` and `keycode_state_changed` events. * Hook up HID and keymap to new events instead of using behaviour global event crazy.
This commit is contained in:
@@ -12,7 +12,8 @@
|
||||
LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
|
||||
|
||||
#include <zmk/matrix_transform.h>
|
||||
#include <zmk/events.h>
|
||||
#include <zmk/event-manager.h>
|
||||
#include <zmk/events/position-state-changed.h>
|
||||
|
||||
#define ZMK_KSCAN_EVENT_STATE_PRESSED 0
|
||||
#define ZMK_KSCAN_EVENT_STATE_RELEASED 1
|
||||
@@ -50,12 +51,12 @@ void zmk_kscan_process_msgq(struct k_work *item)
|
||||
{
|
||||
bool pressed = (ev.state == ZMK_KSCAN_EVENT_STATE_PRESSED);
|
||||
u32_t position = zmk_matrix_transform_row_column_to_position(ev.row, ev.column);
|
||||
struct position_state_changed *pos_ev;
|
||||
LOG_DBG("Row: %d, col: %d, position: %d, pressed: %s\n", ev.row, ev.column, position, (pressed ? "true" : "false"));
|
||||
if (pressed) {
|
||||
zmk_events_position_pressed(position);
|
||||
} else {
|
||||
zmk_events_position_released(position);
|
||||
}
|
||||
pos_ev = new_position_state_changed();
|
||||
pos_ev->state = pressed;
|
||||
pos_ev->position = position;
|
||||
ZMK_EVENT_RAISE(pos_ev);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user