X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;f=common%2Fhost.c;h=fddd5b6627fdad4411982bafbd3f70d6b135d5b1;hb=4ae979f6ef8dbf9e1d1f35be15322ad6d02e2958;hp=8dd2abbee8d86048ff21ad9c9cd4c0b42054695e;hpb=a112f3614e0e3204ce35dcdfbf2723c3382c4c35;p=max%2Ftmk_keyboard.git diff --git a/common/host.c b/common/host.c index 8dd2abbe..fddd5b66 100644 --- a/common/host.c +++ b/common/host.c @@ -56,6 +56,19 @@ uint8_t host_keyboard_leds(void) return (*driver->keyboard_leds)(); } +/* new interface */ +void host_register_key(uint8_t key) +{ + host_add_key(key); + host_send_keyboard_report(); +} + +void host_unregister_key(uint8_t key) +{ + host_del_key(key); + host_send_keyboard_report(); +} + /* keyboard report operations */ void host_add_key(uint8_t key) { @@ -158,6 +171,14 @@ void host_send_keyboard_report(void) { if (!driver) return; (*driver->send_keyboard)(keyboard_report); + + if (debug_keyboard) { + print("keys: "); + for (int i = 0; i < REPORT_KEYS; i++) { + phex(keyboard_report->keys[i]); print(" "); + } + print(" mods: "); phex(keyboard_report->mods); print("\n"); + } } void host_mouse_send(report_mouse_t *report) @@ -216,7 +237,6 @@ static inline void del_key_byte(uint8_t code) for (; i < REPORT_KEYS; i++) { if (keyboard_report->keys[i] == code) { keyboard_report->keys[i] = 0; - break; } } }