Feature: Input Cleanup

Made input use some template magic that allows us to very easily add support for more devices later.