Ответы:
Существует программа под названием key-mon, которая контролирует нажатые клавиши. Прошло некоторое время с тех пор, как я использовал его, но он работал хорошо, и его отображение довольно привлекательно.
Вы можете использовать xev(X события), чтобы сделать это.
Запустите приложение , которое нужно контролировать, например, xman &.
Затем используйте wmctrl -lсписок X окон. Это может выглядеть так:
0x00400009 0 VLAN-.... urxvt
0x00e0007a 0 VLAN-.... Iceweasel
0x00800011 0 VLAN-.... xman
Вам нужен идентификатор окна (hex) в первом столбце; чтобы получить его, вы можете использовать grepи извлекать строку по четвертому столбцу (имя приложения, которое более естественно для вас использовать как человек) - когда у вас есть строка, вы можете получить первый столбец с cut(первый поле с -f1использованием пробела -d" "для разделения полей).
Вы можете анализировать данные (чтобы получить идентификатор) несколькими способами или, конечно, даже ввести идентификатор вручную. (Нули во втором столбце выше - это номер рабочего стола.)
Тогда попробуй
xev -id `wmctrl -l | grep xman | cut -d" " -f1` | tee event.txt
Он покажет нажатия клавиш (и более) в том же терминале, в котором была вызвана команда; плюс, teeон будет хранить то, что вы видите в файле. Хорошей идеей было бы позволить выводить вывод на stdoutтерминал, так как это мгновенно покажет действие; также, если вы не запускаете команду как фоновый процесс (с помощью &), вы можете легко завершить ее с помощьюCtrl-C.
ПРИМЕЧАНИЕ. Он работает для urxvt и xman, но по какой-то причине не срабатывает для Iceweasel в приведенном выше листинге (он что-то записывает, но не представляет ключевые события так же ясно (пока), как в случае с другими примерами.
Я нашел экранную клавиатуру сегодня, она очень крутая и работает очень хорошо.