Мне нужно записывать каждое нажатие клавиши и сохранять в файле в каталоге пользователя ~, когда я использую свою учетную запись, я не sudoer и не могу устанавливать программы (например, logKeys ) любым способом. Как я могу сделать это с помощью терминала?
ПРИМЕЧАНИЕ. Этот вопрос не является дубликатом другого упомянутого вопроса; в этом вопросе я спрашиваю о каждом нажатии клавиши, в то время как в другом вопрос спрашивал о нажатии клавиши в терминальной сессии.
Ответы:
xinput test
может сообщать обо всех событиях клавиатуры на X-сервер. В системе GNU:Если вы хотите получить имена ключей из кодов ключей, вы можете постобработать этот вывод с помощью:
Добавить
> file.log
для хранения в лог-файл. Или| tee file.log
чтобы оба войти и увидеть это.xinput
запрашивает XinputExtension X-сервера. Это так же близко, как вы собираетесь получить в качестве стандарта (я не знаю ни одного стандарта, который охватывает утилиты X) или обычной команды для этого. Это также не требует прав суперпользователя.Если X-сервер и xinput поддерживают версию 2 XinputExtension, вы можете использовать
test-xi2
вместоtest
которой больше информации, в частности о состоянии модификаторов (shift, ctrl, alt ...). Пример:Вы можете перевести
detail
ключевой код (in ) в keyym с помощьюxmodmap -pke
снова, иeffective
модификатор битовой маски к чему-то более полезному с помощьюxmodmap -pm
. Например:будет выводить:
когда я нажимаю Shift + Alt + q, когда включена цифровая блокировка.
Обратите внимание, что вам не нужно иметь привилегии суперпользователя для установки программы. Если у вас есть доступ на запись в какое-то место в файловой системе, где предоставлено разрешение на выполнение (ваш домашний каталог
/tmp
,/var/tmp
...), вы можете скопироватьxinput
команду из совместимой системы и выполнить ее.источник
xinput
1.6.1
или новее для--root
. Утилиты X можно скачать отдельно с сайта xorg.freedesktop.org/releases/individual/app . Если вы не хотите компилировать из исходного кода. Debian имеет xinput 1.6.1 для нескольких архитектур для Linux или kfreebsd.xmodmap
находится в эталонной реализации X как минимум с 1987 года. О какой системе мы говорим здесь? Может быть,xmodmap
это не в вашем$PATH
(/usr/dt/bin
или другом?).Вы рассматривали возможность использования
script
команды?источник