summaryrefslogtreecommitdiff
path: root/src/endpoints.c
diff options
context:
space:
mode:
authorPete Johanson <peter@peterjohanson.com>2020-06-02 11:23:22 -0400
committerPete Johanson <peter@peterjohanson.com>2020-06-02 11:23:22 -0400
commit8de6c85b7464fdc3518648242ce16142e30ed73d (patch)
tree22fb6a1b87520e8472142003d093edfab7db616b /src/endpoints.c
parentf1afbb8e49383d429096bc84fc5855c3929acc50 (diff)
Implement a basic set of consumer page keycodes.
Diffstat (limited to 'src/endpoints.c')
-rw-r--r--src/endpoints.c58
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);
}