diff options
author | Pete Johanson <peter@peterjohanson.com> | 2020-05-15 09:41:06 -0400 |
---|---|---|
committer | Pete Johanson <peter@peterjohanson.com> | 2020-05-15 09:41:06 -0400 |
commit | 73bea6218e6681c62a4cbe32f6dd1394f242fa66 (patch) | |
tree | 51a1385906caa72bb0abde4035dfeb098462d453 /src/hid.c | |
parent | 04fe57d3a30c0bb37022e8b019293dbb1fc56197 (diff) |
Some initial BEL HoG support.
Diffstat (limited to 'src/hid.c')
-rw-r--r-- | src/hid.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/hid.c b/src/hid.c new file mode 100644 index 0000000..8c42df5 --- /dev/null +++ b/src/hid.c @@ -0,0 +1,56 @@ +#include "hid.h" + +static struct zmk_hid_report report = { + .modifiers = 0, + .keys = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; + +#define KEY_OFFSET 0x02 +#define MAX_KEYS 6 + +/* +#define TOGGLE_BOOT_KEY(match, val) \ + for (int idx = 0; idx < MAX_KEYS; idx++) \ + { \ + if (report.boot.keys[idx + KEY_OFFSET] != match) \ + { \ + continue; \ + } \ + report.boot.keys[idx + KEY_OFFSET] = val; \ + break; \ + } +*/ + +#define TOGGLE_KEY(code, val) WRITE_BIT(report.keys[code / 8], code % 8, val) + +int zmk_hid_press_key(zmk_key code) +{ + if (code > ZMK_HID_MAX_KEYCODE) + { + return -EINVAL; + } + + // TOGGLE_BOOT_KEY(0U, code); + + TOGGLE_KEY(code, true); + + return 0; +}; + +int zmk_hid_release_key(zmk_key code) +{ + if (code > ZMK_HID_MAX_KEYCODE) + { + return -EINVAL; + } + + // TOGGLE_BOOT_KEY(code, 0U); + + TOGGLE_KEY(code, false); + + return 0; +}; + +struct zmk_hid_report *zmk_hid_get_report() +{ + return &report; +}
\ No newline at end of file |