diff options
author | Drashna Jael're <drashna@live.com> | 2020-01-15 02:14:48 -0800 |
---|---|---|
committer | Florian Didron <fdidron@users.noreply.github.com> | 2020-02-26 10:15:12 +0900 |
commit | 3b71e1e8196d5db7e82a36edc3f0f0a8d3d46ee3 (patch) | |
tree | cdcdf7a4f55eeef6f74c5dcd72f6a19e4c84f6b9 /quantum | |
parent | 5c1c41462a1f9d4002e5955ba749f616b4d13ca0 (diff) |
Implement core communication
Diffstat (limited to 'quantum')
-rw-r--r-- | quantum/oryx.c | 37 | ||||
-rw-r--r-- | quantum/oryx.h | 21 | ||||
-rw-r--r-- | quantum/quantum.c | 8 |
3 files changed, 60 insertions, 6 deletions
diff --git a/quantum/oryx.c b/quantum/oryx.c index b99b0106dd..ea34481d84 100644 --- a/quantum/oryx.c +++ b/quantum/oryx.c @@ -191,3 +191,40 @@ void oryx_layer_event(void) { } bool is_oryx_live_training_enabled(void) { return oryx_state_live_training_enabled; } + +bool process_record_oryx(uint16_t keycode, keyrecord_t *record) { + if(is_oryx_live_training_enabled()) { + uint8_t event[5]; + event[0] = WEBUSB_STATUS_OK; + event[1] = record->event.pressed ? ORYX_EVT_KEYDOWN : ORYX_EVT_KEYUP; + event[2] = record->event.key.col; + event[3] = record->event.key.row; + event[4] = WEBUSB_STOP_BIT; + webusb_send(event, sizeof(event)); + } + + switch (keycode) { + case WEBUSB_PAIR: + if (record->event.pressed) { + webusb_state.pairing = true; + } + return false; + case MACRO00 ... MACRO15: + if (record->event.pressed) { + dynamic_keymap_macro_send(keycode - MACRO00); + } + return false; + } + return true; +} + +void layer_state_set_oryx(layer_state_t state) { + if(is_oryx_live_training_enabled()) { + uint8_t event[4]; + event[0] = WEBUSB_STATUS_OK; + event[1] = ORYX_EVT_LAYER; + event[2] = get_highest_layer(state); + event[3] = WEBUSB_STOP_BIT; + webusb_send(event, sizeof(event)); + } +} diff --git a/quantum/oryx.h b/quantum/oryx.h index 4c713f0a00..b7d341ea14 100644 --- a/quantum/oryx.h +++ b/quantum/oryx.h @@ -54,6 +54,24 @@ enum Oryx_Event_Code { ORYX_EVT_KEYUP, }; +enum dynamic_macros_keycodes { + MACRO00 = 0x5F12, + MACRO01, + MACRO02, + MACRO03, + MACRO04, + MACRO05, + MACRO06, + MACRO07, + MACRO08, + MACRO09, + MACRO10, + MACRO11, + MACRO12, + MACRO13, + MACRO14, + MACRO15, +}; extern bool oryx_state_live_training_enabled; @@ -61,5 +79,6 @@ extern bool oryx_state_live_training_enabled; bool webusb_receive_oryx(uint8_t *data, uint8_t length); void oryx_layer_event(void); bool is_oryx_live_training_enabled(void); - +bool process_record_oryx(uint16_t keycode, keyrecord_t *record); +void layer_state_set_oryx(layer_state_t state); void keyboard_pre_init_oryx(void); diff --git a/quantum/quantum.c b/quantum/quantum.c index c25877b8c6..a3c16f7f8f 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -210,6 +210,9 @@ bool process_record_quantum(keyrecord_t *record) { #if defined(RGB_MATRIX_ENABLE) process_rgb_matrix(keycode, record) && #endif +#ifdef ORYX_ENABLE + process_record_oryx(keycode, record) && +#endif #if defined(VIA_ENABLE) process_record_via(keycode, record) && #endif @@ -310,11 +313,6 @@ bool process_record_quantum(keyrecord_t *record) { backlight_toggle_breathing(); return false; #endif -#ifdef WEBUSB_ENABLE - case WEBUSB_PAIR: - webusb_state.pairing = true; - return false; -#endif } } |