Improving the performance of motor-impaired users with automatically-generated, ability-based interfaces