Захват событий клавиатуры Linux / dev / inputX - PullRequest
12 голосов
/ 05 мая 2010

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

neel@pc1$ ls -l /dev/input/by-id
lrwxrwxrwx 1 root root 9 2010-05-05 21:33 usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-event-kbd -> ../event1
lrwxrwxrwx 1 root root 9 2010-05-05 21:33 usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-event-mouse -> ../event2
lrwxrwxrwx 1 root root 9 2010-05-05 21:33 usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-mouse -> ../mouse1

Но когда я попытался

neel@pc1$ sudo cat /dev/input/usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-event-kbd

ничего не дает НЕ БЫЛО ВЫХОДА

после еще немного поиска Теперь я думаю, что что-то в Xorg блокирует это.

Так что еще информации ?? и в конце сказать, как я могу прочитать входные данные из этого файла? или есть какой-то другой способ захвата событий клавиатуры ??

Ответы [ 4 ]

14 голосов
/ 02 августа 2010

Hello

Недавно я пытался сделать что-то подобное.

Посмотрите на проект logkeys:

http://code.google.com/p/logkeys/

Если вы загрузите исходный код и посмотрите на файл logkeys.cc, вы найдете один способ автоматического определения того, какой / dev / input / event используется вашей клавиатурой. Это позволит вам читать необработанные коды сканирования с клавиатуры независимо от того, какая программа в данный момент находится в фокусе. Программа logkeys также показывает, как преобразовать коды сканирования в символы и другие полезные приемы.

Надеюсь, это поможет,

Маркус.

12 голосов
/ 21 марта 2014

Простая grep операция с файлом / proc / bus / input / devices приведет к выводу всех клавиатур, подключенных к машине:

 grep -E  'Handlers|EV=' /proc/bus/input/devices | \
 grep -B1 'EV=120013' | \
 grep -Eo 'event[0-9]+'

Где EV=120013 - битовая маска для событий, поддерживаемых устройством. Как объяснено здесь .

Это реализовано в logkeys

10 голосов
/ 05 мая 2010

Вы читаете не то устройство. Попробуйте все / dev / input / event * или посмотрите в /var/log/Xorg.0.log, какое устройство используется для вашей клавиатуры.

9 голосов
/ 05 февраля 2014

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

...