From 06eb50be07ff16e4bfb046e4773185d9bcf048e9 Mon Sep 17 00:00:00 2001 From: tmk Date: Sun, 24 Oct 2010 01:17:26 +0900 Subject: hhkb: refactored --- usb_keyboard.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'usb_keyboard.c') diff --git a/usb_keyboard.c b/usb_keyboard.c index 9d41e8bc59..44365bb857 100644 --- a/usb_keyboard.c +++ b/usb_keyboard.c @@ -1,8 +1,11 @@ #include #include #include "usb_keyboard.h" +#include "print.h" +static bool is_sent = false; + // which modifier keys are currently pressed // 1=left ctrl, 2=left shift, 4=left alt, 8=left gui // 16=right ctrl, 32=right shift, 64=right alt, 128=right gui @@ -72,5 +75,45 @@ int8_t usb_keyboard_send(void) UEINTX = 0x3A; keyboard_idle_count = 0; SREG = intr_state; + is_sent = true; return 0; } + +void usb_keyboard_init(void) { + usb_keyboard_clear(); + is_sent = false; +} + +void usb_keyboard_clear(void) { + usb_keyboard_clear_key(); + usb_keyboard_clear_mod(); +} + +void usb_keyboard_clear_key(void) { + for (int i = 0; i < 6; i++) keyboard_keys[i] = 0; +} + +void usb_keyboard_clear_mod(void) { + keyboard_modifier_keys = 0; +} + +bool usb_keyboard_is_sent(void) { + return is_sent; +} + +bool usb_keyboard_has_key(void) { + uint8_t keys = 0; + for (int i = 0; i < 6; i++) keys |= keyboard_keys[i]; + return keys ? true : false; +} + +bool usb_keyboard_has_mod(void) { + return keyboard_modifier_keys ? true : false; +} + +void usb_keyboard_print(void) { + print("\nkeys: "); + for (int i = 0; i < 6; i++) { phex(keyboard_keys[i]); print(" "); } + print("\n"); + print("mods: "); phex(keyboard_modifier_keys); print("\n"); +} -- cgit v1.2.3