From 0f72656a8a8ad03489ad8e8f783860c9b66d54fb Mon Sep 17 00:00:00 2001 From: NicoHood Date: Fri, 23 Oct 2015 20:49:11 +0200 Subject: [PATCH] Added Keyboard API templates --- src/HID-APIs/KeyboardAPI.h | 18 +++---- src/HID-APIs/KeyboardAPI.hpp | 96 +++++++----------------------------- 2 files changed, 28 insertions(+), 86 deletions(-) diff --git a/src/HID-APIs/KeyboardAPI.h b/src/HID-APIs/KeyboardAPI.h index 6a229f0..707a056 100644 --- a/src/HID-APIs/KeyboardAPI.h +++ b/src/HID-APIs/KeyboardAPI.h @@ -48,17 +48,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); - inline size_t press(uint8_t k); - inline size_t press(KeyboardKeycode k); - inline size_t press(KeyboardModifier k); + template + inline size_t write(TYPE k); + inline virtual size_t write(uint8_t k) override; - inline size_t release(uint8_t k); - inline size_t release(KeyboardKeycode k); - inline size_t release(KeyboardModifier k); + + template + inline size_t press(TYPE k); + + template + inline size_t release(TYPE 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 fba968d..0315f5d 100644 --- a/src/HID-APIs/KeyboardAPI.hpp +++ b/src/HID-APIs/KeyboardAPI.hpp @@ -36,41 +36,26 @@ void KeyboardAPI::end(void) } -// TODO template?? +template +size_t KeyboardAPI::write(TYPE k) +{ + // Press and release key (if press was successfull) + auto ret = press(k); + if(ret){ + release(k); + } + return ret; +} + + size_t KeyboardAPI::write(uint8_t k) { - // Press and release key (if press was successfull) - auto ret = press(k); - if(ret){ - release(k); - } - return ret; + return write(k); } -size_t KeyboardAPI::write(KeyboardKeycode k) -{ - // Press and release key (if press was successfull) - auto ret = press(k); - if(ret){ - release(k); - } - return ret; -} - - -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) +template +size_t KeyboardAPI::press(TYPE k) { // Press key and send report to host auto ret = add(k); @@ -81,21 +66,11 @@ size_t KeyboardAPI::press(uint8_t k) } -size_t KeyboardAPI::press(KeyboardKeycode k) +template +size_t KeyboardAPI::release(TYPE 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); + // Release key and send report to host + auto ret = remove(k); if(ret){ send_now(); } @@ -151,39 +126,6 @@ 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