Програмной реализации разницы нет между оптическим и механическим.
Так что тебе сюда нужно заглянуть