That's not necessary since that's what action feedback is for. You tell DI what keys you want to capture and it reports only events when the those keys are pressed and released.
So a user can create a struct like
Code:
struct KeyStruct1
{
bool bKeyStart;
bool bKeySelect;
bool bKeyDoSomething1;
bool bKeyDoSomething2;
};
...That is used all throughout the app. Another app might use a different struct:
Code:
struct KeyStruct2
{
bool bKeyStart;
bool bKeySelect;
bool bKeyDoSomething1;
bool bKeyDoSomething2;
bool bKeyDoSomething3;
};
...But it will still work just fine.
The app can create the struct to look however it wants. It can even merge two or more keys into a WORD or an UINT. The library won't care and plot one byte for each key.
And the app can even change struct abruptly if it wants (like from KeyStruct1 to KeyStruct2) without negative effects.
And if an app doesn't want all that data captured all the time, it can just ignore those member variables which contain their state.