diff options
author | Pete Johanson <peter@peterjohanson.com> | 2020-06-02 11:23:22 -0400 |
---|---|---|
committer | Pete Johanson <peter@peterjohanson.com> | 2020-06-02 11:23:22 -0400 |
commit | 8de6c85b7464fdc3518648242ce16142e30ed73d (patch) | |
tree | 22fb6a1b87520e8472142003d093edfab7db616b /src/endpoints.c | |
parent | f1afbb8e49383d429096bc84fc5855c3929acc50 (diff) |
Implement a basic set of consumer page keycodes.
Diffstat (limited to 'src/endpoints.c')
-rw-r--r-- | src/endpoints.c | 58 |
1 files changed, 44 insertions, 14 deletions
diff --git a/src/endpoints.c b/src/endpoints.c index 1f2c94d..f46d42d 100644 --- a/src/endpoints.c +++ b/src/endpoints.c @@ -35,41 +35,71 @@ int zmk_endpoints_init() return 0; } -int zmk_endpoints_send_report() +int zmk_endpoints_send_report(enum zmk_hid_report_changes report_type) { int err; - struct zmk_hid_report *report = zmk_hid_get_report(); + struct zmk_hid_keypad_report *keypad_report; + struct zmk_hid_consumer_report *consumer_report; + switch (report_type) + { + case Keypad: + keypad_report = zmk_hid_get_keypad_report(); +#ifdef CONFIG_ZMK_USB + if (zmk_usb_hid_send_report((u8_t *)keypad_report, sizeof(struct zmk_hid_keypad_report)) != 0) + { + LOG_DBG("USB Send Failed"); + } +#endif /* CONFIG_ZMK_USB */ +#ifdef CONFIG_ZMK_BLE + err = zmk_hog_send_keypad_report(&keypad_report->body); + if (err) + { + LOG_ERR("FAILED TO SEND OVER HOG: %d", err); + } +#endif /* CONFIG_ZMK_BLE */ + + break; + case Consumer: + consumer_report = zmk_hid_get_consumer_report(); #ifdef CONFIG_ZMK_USB - if (zmk_usb_hid_send_report(report) != 0) - { - LOG_DBG("USB Send Failed"); - } + if (zmk_usb_hid_send_report((u8_t *)consumer_report, sizeof(struct zmk_hid_consumer_report)) != 0) + { + LOG_DBG("USB Send Failed"); + } #endif /* CONFIG_ZMK_USB */ #ifdef CONFIG_ZMK_BLE - err = zmk_hog_send_report(report); - if (err) - { - LOG_ERR("FAILED TO SEND OVER HOG: %d", err); - } + err = zmk_hog_send_consumer_report(&consumer_report->body); + if (err) + { + LOG_ERR("FAILED TO SEND OVER HOG: %d", err); + } #endif /* CONFIG_ZMK_BLE */ + break; + default: + LOG_ERR("Unknown report change type %d", report_type); + return -EINVAL; + } + return 0; } int zmk_endpoints_send_key_event(struct zmk_key_event key_event) { + enum zmk_hid_report_changes changes; + LOG_DBG("key %d, state %d\n", key_event.key, key_event.pressed); if (key_event.pressed) { - zmk_hid_press_key(key_event.key); + changes = zmk_hid_press_key(key_event.key); } else { - zmk_hid_release_key(key_event.key); + changes = zmk_hid_release_key(key_event.key); } - return zmk_endpoints_send_report(); + return zmk_endpoints_send_report(changes); } |