Bashスクリプトからの入力をシミュレートするために、入力デーモンにキーストロークを挿入しようとしています。これは可能ですか?もし可能なら、どうすればそれを実現できますか?
Bashスクリプトからの入力をシミュレートするために、入力デーモンにキーストロークを挿入しようとしています。これは可能ですか?もし可能なら、どうすればそれを実現できますか?
回答:
uinput
ドライバーを使用してください。そのためのユーティリティはないと思います。少しのCコードを作成または適合させる必要があります。一言で言えば:
#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);
より完全なリファレンス:
それを行うPythonコードをいくつか書きました。私のオープンソースプロジェクトで見つけることができます。
http://code.google.com/p/pycopia/source/browse/trunk/core/pycopia/OS/Linux/event.py
そのモジュールをrootとしてスクリプトとして実行すると、実際のデモを見ることができます。
この基本機能は、組み込みシステム(Android)のより具体的な実装を提供する別のプロジェクトpowerdroid向けに拡張されました。
http://code.google.com/p/powerdroid/source/browse/trunk/src/droid/devices.py