Ответ 1
Вы читаете неправильное устройство. Или попробуйте все /dev/input/event * или посмотрите в /var/log/Xorg.0.log, для которого устройство используется для вашей клавиатуры.
Я пытался захватить события клавиатуры. например Я хочу развернуть кейлоггер с нуля. После 2 часов боя я обнаружил следующее
[email protected]$ 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
Но когда я попытался
[email protected]$ sudo cat /dev/input/usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-event-kbd
Это ничего не дает НЕТ НЕТ ВЫХОДА
после немного большего поиска Теперь я думаю, что что-то в Xorg блокирует его.
Значит, больше информации? и в конце сказанного, как я могу прочитать ввод из этого файла? или есть ли другой способ захвата событий клавиатуры?
Вы читаете неправильное устройство. Или попробуйте все /dev/input/event * или посмотрите в /var/log/Xorg.0.log, для которого устройство используется для вашей клавиатуры.
Здравствуйте,
Недавно я пытался добиться чего-то подобного.
Посмотрите на проект logkeys:
http://code.google.com/p/logkeys/
Если вы загружаете исходный код и смотрите файл logkeys.cc, вы найдете один способ автоматического определения того, какой /dev/input/event используется вашей клавиатурой. Это позволит вам читать необработанные коды сканирования с клавиатуры, независимо от того, какая программа в настоящее время имеет фокус. Программа logkeys также показывает, как перевести коды сканирования в символы и другие полезные трюки.
Надеюсь, что это поможет,
Markus.
Простая операция 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
Я бы рекомендовал использовать приложение evtest, он перечисляет все ваши устройства ввода и позволяет отслеживать их события.