summaryrefslogtreecommitdiff
path: root/quantum
diff options
context:
space:
mode:
authorDrashna Jael're <drashna@live.com>2020-01-15 02:14:48 -0800
committerFlorian Didron <fdidron@users.noreply.github.com>2020-02-26 10:15:12 +0900
commit3b71e1e8196d5db7e82a36edc3f0f0a8d3d46ee3 (patch)
treecdcdf7a4f55eeef6f74c5dcd72f6a19e4c84f6b9 /quantum
parent5c1c41462a1f9d4002e5955ba749f616b4d13ca0 (diff)
Implement core communication
Diffstat (limited to 'quantum')
-rw-r--r--quantum/oryx.c37
-rw-r--r--quantum/oryx.h21
-rw-r--r--quantum/quantum.c8
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
}
}