Как вы можете прочитать нажатия клавиш, когда программа Python не на переднем плане? - PullRequest
6 голосов
/ 28 июня 2009

Я пытаюсь проанализировать нажатия клавиш в следующем месяце и хотел бы собрать простую программу для этого. Я не хочу точно регистрировать команды, а просто генерирую общую статистику по нажатию клавиш.

Мне удобнее всего писать на python, но я открыт для других предложений. Возможно ли это, и если да, то на какие модули Python мне следует взглянуть? Это уже было сделано?

Я нахожусь на OSX, но также был бы заинтересован сделать это на Ubuntu box и Windows XP.

Ответы [ 4 ]

4 голосов
/ 12 августа 2009

Похоже, вам нужно http://patorjk.com/keyboard-layout-analyzer/

Эта удобная программа проанализирует блок текста и скажет вам, как далеко должны были пройти ваши пальцы, чтобы набрать его, а затем порекомендует ваш оптимальный макет.

Чтобы ответить на ваш первоначальный вопрос, в Linux вы можете прочитать из / dev / event * события локальной клавиатуры, мыши и джойстика. Я полагаю, что вы могли бы, например, просто cat /dev/event0 > keylogger. События являются экземплярами struct input_event. Смотри также http://www.linuxjournal.com/article/6429.

Модуль Python struct - удобный способ анализа двоичных данных.

Для OSX взгляните на исходный код в logkext. http://code.google.com/p/logkext/

2 голосов
/ 28 августа 2009

Поскольку расширение Record текущего X-сервера, похоже, повреждено, использование pykeylogger для Linux на самом деле не помогает. Взгляните на evdev и его функцию demo. Решение более противное, но оно, по крайней мере, работает.

Все сводится к настройке подключения к устройству

import evdev
keyboard_location = '/dev/input/event1'  # get the correct one from HAL or so
keyboard_device = evdev.Device(keyboard_location)

Затем регулярно опрашивайте устройство, чтобы узнать статус ключей и другую информацию:

keyboard_device.poll()
2 голосов
/ 28 июля 2009

Если вы не планируете писать интерфейсы самостоятельно, вам потребуется некоторая библиотека, поскольку, как указывали другие авторы, вам необходим доступ к событиям нажатия клавиш низкого уровня, управляемым средой рабочего стола.

В Windows библиотека PyHook предоставит вам необходимую функциональность.

В Linux вы можете использовать Python X Library (при условии, что вы используете графический рабочий стол).

Оба из них используются для хорошего эффекта pykeylogger . Лучше всего загрузить исходный код (см., Например, pyxhook.py), чтобы увидеть конкретные примеры того, как регистрируются события нажатия клавиш. Это должно быть тривиально изменить, чтобы суммировать распределение ключей, а не записывать порядок.

0 голосов
/ 29 июня 2009

В зависимости от того, какую статистику вы хотите собрать, возможно, вам не нужно писать это самостоятельно; программа Workrave - это программа, которая напоминает вам делать небольшие перерывы и делает это путем мониторинга активности клавиатуры и мыши. Он хранит статистику этой активности, которую вы, вероятно, могли бы использовать (если вы не хотите очень подробную / более конкретную статистику). В худшем случае вы можете посмотреть на источник (C ++), чтобы узнать, как это делается.

...