1

仮想キーボード/マウスを作成して uinput で遊んでいます。仮想デバイスのセットアップに問題はありません。

int                    fd;
struct uinput_user_dev uidev;
struct input_event     ev;
int                    dx, dy;
int                    i;

fd = open("/dev/uinput", O_WRONLY | O_NONBLOCK);
if(fd < 0)
    die("error: open");


if(ioctl(fd, UI_SET_EVBIT, EV_KEY) < 0)
    die("error: ioctl");
if(ioctl(fd, UI_SET_KEYBIT, BTN_LEFT) < 0)
    die("error: ioctl");

if(ioctl(fd, UI_SET_EVBIT, EV_REL) < 0)
    die("error: ioctl");
if(ioctl(fd, UI_SET_RELBIT, REL_X) < 0)
    die("error: ioctl");
if(ioctl(fd, UI_SET_RELBIT, REL_Y) < 0)
    die("error: ioctl");

memset(&uidev, 0, sizeof(uidev));
snprintf(uidev.name, UINPUT_MAX_NAME_SIZE, "test");
uidev.id.bustype = BUS_USB;
uidev.id.vendor  = 0x1;
uidev.id.product = 0x1;
uidev.id.version = 1;

write(fd, &uidev, sizeof(uidev))
ioctl(fd, UI_DEV_CREATE)

また、/dev/uinput にイベントを書き込むことができます。魔法のように機能しており、マウスが動いているか、キーボードが機能しています。

ただし、入力されたイベントをどこで読み取ることができるかわかりません。/dev/input/mouse でマウスを読み取り、仮想マウスのデータを確認できます。しかし、 /dev/input/mouse はすべてのマウス用です...

どの /dev/input/eventX を読むべきですか? 私はそれらすべてを読み込もうとしましたが、何もありません。

USB マウスの場合は event0、キーボードの場合は event1 を読み取りましたが、仮想デバイスについてはどこで読み取ることができますか?

4

1 に答える 1