When you say "resource" do you mean assets or system resources? If you mean assets, then I think it's a little strange for an asset manager to hold references to system devices like the mouse and keyboard.
I think the most strict developers would advise against storing those references as public properties on other managers and instead use the dependency injection paradigm to share those references only with those objects that need them. Doing that will ensure that any class that needs a reference to your keyboard handler will have one.
The simplest way to implement this fancy idea of "dependency injection" is to simply require it as part of the constructor:
class SomeClassRequiresKeyboard {
public SomeClassRequiresKeyboard(KeyboardHandler keyboardHandler) {
if (keyboardHandler == null) {
throw new ArgumentNullException("keyboardHandler");
}
this.keyboardHandler = keyboardHandler;
}
}
This does make your software a little more verbose because of all the additional code to make sure your objects are where they need to be, but it does also make your code more understandable because dependencies are explicit.