Finished input abstraction framework
Windows implementations need finishing but do compile and return default values.