Если вы только что добавили опцию выбора в форму и хотите активировать событие изменения, я обнаружил, что требуется setTimeout, иначе jQuery не заберет вновь добавленное поле выбора:
window.setTimeout(function() { jQuery('.languagedisplay').change();}, 1);
Похоже, вам понадобится 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/
В зависимости от того, какую статистику вы хотите собирать, возможно, вам не придется писать это самостоятельно; Программа Workrave - это программа, напоминающая вам о небольших перерывах, которая делает это путем отслеживания активности клавиатуры и мыши. Он хранит статистику этой активности, которую вы, вероятно, могли бы использовать (если вам не нужна очень подробная / более конкретная статистика). В худшем случае вы можете посмотреть исходный код (C ++), чтобы узнать, как это делается.
Если вы не планируете писать интерфейсы самостоятельно, вам понадобится некоторая библиотека, поскольку, как указывали другие плакаты, вам необходимо получить доступ к низкоуровневым событиям нажатия клавиш, управляемым средой рабочего стола.
В Windows библиотека PyHook предоставит вам необходимую функциональность.
В Linux вы можете использовать Библиотека Python X (при условии, что вы используете графический рабочий стол).
Обе они используются для хорошего эффекта pykeylogger . Лучше всего загрузить исходный код (см., Например, pyxhook.py), чтобы увидеть конкретные примеры того, как фиксируются события нажатия клавиш. Это должно быть тривиально изменить для суммирования распределения ключей, а не записи порядка.
Поскольку текущее расширение Record X-сервера, похоже, не работает, использование pykeylogger
для Linux на самом деле не помогает. Взгляните на evdev
и его демонстрационную функцию
. Решение более неприятное, но оно, по крайней мере, работает.
Все сводится к настройке подключения к устройству
import evdev
keyboard_location = '/dev/input/event1' # get the correct one from HAL or so
keyboard_device = evdev.Device(keyboard_location)
Затем регулярно опрашивайте устройство, чтобы получить статус ключей и другую информацию:
keyboard_device.poll()