Adding another low level Input layer on top of OIS is not all that useful/good. However, you are right that cluttering one main class with everything is also not good.
I think what you need is a higher level view of input from your main loop. For instance, you can translate input events into action events (such as run, turn, jump, etc) in a secondary class. Pretty much what "Action Mapping" is. Then, your input class can worry about if the input was a keyboard, mouse or joystick, and just translate that into a higher message/event for other consumers.