diff --git a/src/HID-APIs/KeyboardAPI.h b/src/HID-APIs/KeyboardAPI.h index f646984..6a8df49 100644 --- a/src/HID-APIs/KeyboardAPI.h +++ b/src/HID-APIs/KeyboardAPI.h @@ -47,17 +47,17 @@ public: inline void begin(void); inline void end(void); + inline size_t write(uint8_t k); + inline size_t write(KeyboardKeycode k); + inline size_t write(KeyboardModifier k); - template - inline size_t write(TYPE k); - inline virtual size_t write(uint8_t k) override; + inline size_t press(uint8_t k); + inline size_t press(KeyboardKeycode k); + inline size_t press(KeyboardModifier k); - - template - inline size_t press(TYPE k); - - template - inline size_t release(TYPE k); + inline size_t release(uint8_t k); + inline size_t release(KeyboardKeycode k); + inline size_t release(KeyboardModifier k); inline size_t add(uint8_t k); inline size_t add(KeyboardKeycode k); diff --git a/src/HID-APIs/KeyboardAPI.hpp b/src/HID-APIs/KeyboardAPI.hpp index 0315f5d..fba968d 100644 --- a/src/HID-APIs/KeyboardAPI.hpp +++ b/src/HID-APIs/KeyboardAPI.hpp @@ -36,8 +36,8 @@ void KeyboardAPI::end(void) } -template -size_t KeyboardAPI::write(TYPE k) +// TODO template?? +size_t KeyboardAPI::write(uint8_t k) { // Press and release key (if press was successfull) auto ret = press(k); @@ -48,14 +48,29 @@ size_t KeyboardAPI::write(TYPE k) } -size_t KeyboardAPI::write(uint8_t k) +size_t KeyboardAPI::write(KeyboardKeycode k) { - return write(k); + // Press and release key (if press was successfull) + auto ret = press(k); + if(ret){ + release(k); + } + return ret; } -template -size_t KeyboardAPI::press(TYPE k) +size_t KeyboardAPI::write(KeyboardModifier k) +{ + // Press and release key (if press was successfull) + auto ret = press(k); + if(ret){ + release(k); + } + return ret; +} + + +size_t KeyboardAPI::press(uint8_t k) { // Press key and send report to host auto ret = add(k); @@ -66,11 +81,21 @@ size_t KeyboardAPI::press(TYPE k) } -template -size_t KeyboardAPI::release(TYPE k) +size_t KeyboardAPI::press(KeyboardKeycode k) { - // Release key and send report to host - auto ret = remove(k); + // Press key and send report to host + auto ret = add(k); + if(ret){ + send_now(); + } + return ret; +} + + +size_t KeyboardAPI::press(KeyboardModifier k) +{ + // Press modifier key and send report to host + auto ret = add(k); if(ret){ send_now(); } @@ -126,6 +151,39 @@ size_t KeyboardAPI::add(KeyboardModifier k) } +size_t KeyboardAPI::release(uint8_t k) +{ + // Release key and send report to host + auto ret = remove(k); + if(ret){ + send_now(); + } + return ret; +} + + +size_t KeyboardAPI::release(KeyboardKeycode k) +{ + // Release key and send report to host + auto ret = remove(k); + if(ret){ + send_now(); + } + return ret; +} + + +size_t KeyboardAPI::release(KeyboardModifier k) +{ + // Release modifier key and send report to host + auto ret = remove(k); + if(ret){ + send_now(); + } + return ret; +} + + size_t KeyboardAPI::remove(uint8_t k) { // Ignore invalid input