Added Keyboard API templates

This commit is contained in:
NicoHood 2015-10-23 20:49:11 +02:00
parent c4eb9c7ef2
commit 0f72656a8a
2 changed files with 28 additions and 86 deletions

View file

@ -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<class TYPE>
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<class TYPE>
inline size_t press(TYPE k);
template<class TYPE>
inline size_t release(TYPE k);
inline size_t add(uint8_t k);
inline size_t add(KeyboardKeycode k);

View file

@ -36,41 +36,26 @@ void KeyboardAPI::end(void)
}
// TODO template??
template<class TYPE>
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<uint8_t>(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<class TYPE>
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<class TYPE>
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