Как получить данные в фоновом процессе в Ubuntu

Я нахожу команду ОС Ubuntu, которая позволяет программе считывать данные с клавиатуры, даже если программа находится в фоновом режиме. Я пытался много искать, но безуспешно. Если какой-либо программист Ubuntu/Linux знает команду ОС, которая позволяет программе сделать это, пожалуйста, поделитесь ею со мной.

Я новичок в программировании Ubuntu.


person user1698102    schedule 05.10.2012    source источник


Ответы (2)


Вы можете использовать подсистему ввода Linux для чтения событий с мышей и клавиатур. Это будет работать только в том случае, если ваше приложение имеет необходимые привилегии. По сути, вы должны запустить приложение от имени пользователя root, чтобы это работало.

Если вы не можете работать с правами root, вам все равно не следует пытаться контролировать клавиатуру.

Вы можете создать приложение X11 для отслеживания событий клавиатуры в текущем сеансе. Он работает только для текущего пользователя и в текущей графической среде и может не иметь возможности наблюдать за привилегированными диалогами, например, при вводе пароля. Подробную информацию см. в средстве запуска ярлыков приложений для среды рабочего стола; все Linux DE, о которых я когда-либо слышал, имеют его.

Я думаю, что старые статьи Linux Journal, Подсистема USB-ввода Linux и Использование подсистемы ввода до сих пор остается одним из лучших вводных материалов о подсистеме ввода Linux. В настоящее время большинство дистрибутивов Linux также поддерживают uinput, аналогичное устройство, которое позволяет вводить события ввода обратно в подсистему ядра, разработанное для обеспечения возможности использования драйверов устройств ввода в пользовательском пространстве. Их интерфейсы описаны в /usr/include/linux/input.h и /usr/include/linux/uinput.h. Я рекомендую вам начать с вышеуказанных статей, а затем просмотреть некоторые input и uinput.

person Nominal Animal    schedule 05.10.2012

Если вам удобно пользоваться программой, посмотрите проект Logkeys . Он напрямую получает ввод из /dev/input/event*.

person Nikhil Nilawar    schedule 16.05.2018