Как перехватить все нажатия клавиш

Прежде всего, я не ожидаю, что нечто подобное уже существует, но мне интересно знать, как что-то подобное может быть достигнуто.

Мне нужна программа, которая может работать в фоновом режиме, которая будет перехватывать ВСЕ нажатия клавиш (я предполагаю, что X работает и, возможно, даже то, что Unity также работает), обрабатывать эти нажатия клавиш, а затем отправлять исходные или измененные нажатия клавиш. должен обрабатываться как обычно.

Моей конечной целью является создание своего рода сопоставления клавиш, которое более близко имитирует поведение ярлыков OS X. Это очень сложно со стандартной установкой Ubuntu, так как такие вещи, как ctrl + c, кажутся каменными, тогда как для имитации поведения OS X это должен быть cmd + c. Во всяком случае, я менее заинтересован в обсуждении почему и больше заинтересован в обсуждении как. Я не против написания демона на Python, C или чем-то еще, что может понадобиться (мне также немного комфортно со стандартным API UNIX). Однако я совершенно не знаю, с чего начать что-то подобное.

Когда клавиши перехватываются и обрабатываются, он должен иметь возможность отправлять их обратно в ОС, следуя тому же интерфейсу, с которым эти штрихи были первоначально отправлены. Может быть, это должен быть патч для самого X? Или что-то может быть между клавиатурой и X?

6
задан 13 December 2011 в 05:02

2 ответа

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

Показывает события на более низком уровне, чем, например, xev.

Кроме того, оно показывает, какие события могут быть созданы устройством.

Как это происходит, event4 относится к моей основной клавиатуре.

Итак, я создаю пример выходных данных ниже с помощью команды

sudo evtest /dev/input/event4

и нажимаю a B :

[ ... ]
Event: time 1429316964.681508, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70004
Event: time 1429316964.681508, type 1 (EV_KEY), code 30 (KEY_A), value 1
Event: time 1429316964.681508, -------------- SYN_REPORT ------------
aEvent: time 1429316964.761540, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70004
Event: time 1429316964.761540, type 1 (EV_KEY), code 30 (KEY_A), value 0
Event: time 1429316964.761540, -------------- SYN_REPORT ------------
Event: time 1429316965.385461, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e1
Event: time 1429316965.385461, type 1 (EV_KEY), code 42 (KEY_LEFTSHIFT), value 1
Event: time 1429316965.385461, -------------- SYN_REPORT ------------
Event: time 1429316965.577461, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70005
Event: time 1429316965.577461, type 1 (EV_KEY), code 48 (KEY_B), value 1
Event: time 1429316965.577461, -------------- SYN_REPORT ------------
BEvent: time 1429316965.641460, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70005
Event: time 1429316965.641460, type 1 (EV_KEY), code 48 (KEY_B), value 0
Event: time 1429316965.641460, -------------- SYN_REPORT ------------
Event: time 1429316965.713470, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e1
Event: time 1429316965.713470, type 1 (EV_KEY), code 42 (KEY_LEFTSHIFT), value 0
[ ... ]


(Чтобы найти правильный номер события (например, мое событие4), вы можете посмотреть на cat /proc/bus/input/devices. Name может не относиться к клавиатуре, но искать запись Handlers, содержащая sysrq kbd и leds. Или просто попробуйте их все.)



События нажатия клавиш не может быть создан evdev, но есть реализация перераспределения ключа с использованием evdev, которая может создавать новые события,
Кажется, что соответствует тому, что вы ищете:

Модификатор «Дома» от Evdev (ahm или at-home-modifier-evdev):

Включает, например, «Двойной ролевой ключ пробела / Shift». Когда вы нажимаете только клавишу пробела, это пробел; но когда вы нажимаете его с помощью другой клавиши, это сдвиг. Например, пробел + x = X, грубо говоря.

Возможны любые пары ключей. Например, вы можете превратить свой Левый Alt в BS / Alt в дополнение к Space / Shift. В этом примере пробел, за которым следует LAlt, отправляет Shift + BS, LAlt, за которым следует пробел, выполняет Alt + пробел, а пробел + LAlt + x и LAlt + пробел + x - это Alt + Shift + x.

Это разветвленный драйвер Xorg «evdev» [...]

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

0
ответ дан 13 December 2011 в 05:02

Да, есть кейлоггер для Ubuntu ..

Вы можете скачать его здесь

Или установить через apt-get

Включить репозитории юниверсов, а затем запустить следующее в терминале

sudo aptitude update
sudo aptitude install lkl

. запустить, введите следующее в терминале

lkl -l -k us_km -o log.file

для просмотра результатов

tail log.file

0
ответ дан 13 December 2011 в 05:02

Другие вопросы по тегам:

Похожие вопросы: