Я пытаюсь ввести нажатия клавиш в демон ввода, чтобы имитировать типизацию из сценария Bash. Возможно ли это, и если да, то как я могу это сделать?
Я пытаюсь ввести нажатия клавиш в демон ввода, чтобы имитировать типизацию из сценария Bash. Возможно ли это, и если да, то как я могу это сделать?
Ответы:
Если вы работаете на уровне X (как в вопросе Жиля), используйте xdotool следующим образом:
xdotool key KEYSTROKE_SPECIFIER
Где KEYSTROKE_SPECIFIER может быть что-то вроде «a» или «F2» или «control + j»
РЕДАКТИРОВАТЬ: я пропустил ваш ответ на вопрос Жиля, извините. Я оставлю этот ответ здесь как решение для X-дела.
xte
работает на том же уровне.
Используйте uinput
драйвер. Я не думаю, что есть полезность для этого; вам придется написать или адаптировать немного кода на Си. В двух словах:
#include <fcntl.h>
#include <ioctl.h>
#include <unistd.h>
#include <linux/input.h>
#include <linux/uinput.h>
/* Set up a fake keyboard device */
fd = open("/dev/uinput", O_WRONLY | O_NONBLOCK); // or /dev/input/uinput
ioctl(fd, UI_SET_EVBIT, EV_KEY);
struct uinput_user_dev uidev = …;
write(fd, &uidev, sizeof(uidev));
ioctl(fd, UI_DEV_CREATE);
/* Send an event */
struct input_event ev = …;
write(fd, &ev, sizeof(ev));
/* Clean up */
ioctl(fd, UI_DEV_DESTROY);
close(fd);
Более полные ссылки:
Если вы НЕ работаете с программами X с окнами, в которые можно отправлять ключи, вы, вероятно, ищете expect
удобную и очень настраиваемую программу для запуска других интерактивных программ оболочки, как если бы пользователь управлял терминалом. Вы можете настроить программные ответы для ответа на различные выходные данные с различными входами.
Я написал некоторый код Python, который делает это. Вы можете найти это в моем проекте с открытым исходным кодом.
http://code.google.com/p/pycopia/source/browse/trunk/core/pycopia/OS/Linux/event.py
Если вы запустите этот модуль как скрипт от имени пользователя root, вы увидите демонстрацию в действии.
Эта базовая функциональность была расширена для другого проекта, PowerDroid, который обеспечивает более конкретную реализацию для встроенной системы (Android).
http://code.google.com/p/powerdroid/source/browse/trunk/src/droid/devices.py