[Input] Added From* overloads with out parameters
[Mac] Use DeviceCollection

This reduces code duplication significantly.