У меня где-то валялась реализация на js. Принцип работы: на $("html").mousemove висел кэллбэк, который при каждом движении мышкой сравнивал время последней отправки статуса, и, если с момента последней отправки прошло более n секунд, посылал на сервер запрос.