Doesn't seem that sloppy to me given what you want to do.
I thought of using an integer for this, but that just seems sloppy... Like if I press key_w, held_amt++, if I press key_up, held_amt++, if I press mouse_2, held_amt++. Then when I release one of them, I do held_amt--, check if it is equal to zero, and then if it is, stop running...
I don't know, this just seems very sloppy to me.
What you could do is have an enum of possible actions (Action) mapped to an integer to count the number of inputs that are applied to that action like this:
std::map<Action, int> ActionBindings;
And for the callback system you want to associate a key with an action in another map like this:
std::map<Key, Action> KeyBindings;
When OnKeyUp/Down is called, map from the Key to the Action and then from the Action to the count for that Action. Then in the part of the code that performs actions just check for which actions are currently occurring and do actions based on that. Hope this helps.