Я помню, что видел ClickHeat (или подобный вариант) давным-давно. У меня не было опыта с этим, поэтому я не могу помочь с плюсами и минусами, и это не отвечает на ваш вопрос полностью (не думаю, что это делает нажатия клавиш, хотя, возможно, я ошибаюсь, как я сказал, что на самом деле не знаю).
Не может быть полным решением, но должно быть хорошей отправной точкой.
В аналогичном ключе было бы не трудно фиксировать положение мыши время от времени вместе с отметкой времени и воссоздавать действия данного пользователя. Генерировать общее / среднее движение намного сложнее с этим типом данных, но это полезно на единичной основе. То же самое касается нажатий клавиш, все они просто события.