Почему X11 не принимает мое виртуальное событие от нажатия мыши?

Я floatредактор моя мышь в xinput и следовал инструкциям, здесь пытаясь ввести событие от нажатия мыши.

Я пытаюсь считать события из мыши, изменить код события от REL_Y кому: REL_WHEEL и от REL_X кому: REL_HWHEEL, и введите событие назад так, чтобы я мог использовать мышь в качестве 2-го колесика прокрутки.

Я думаю, что получил максимум от него работа, потому что, когда я запускаю свою программу, я вижу event13 добавляется к /dev/input. И в dmesg Я действительно добираюсь:

input: uinput-sample as /devices/virtual/input/input28

И если я выполняю evtest /dev/input/event13 Я добираюсь:

[linux-devkit]:/dev/input> sudo evtest event13

Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x1234 product 0xfedc version 0x1
Input device name: "uinput-sample"
Supported events:
  Event type 0 (EV_SYN)
  Event type 2 (EV_REL)
    Event code 6 (REL_HWHEEL)
    Event code 8 (REL_WHEEL)
Testing ... (interrupt to exit)
Event: time 1457290441.973961, type 2 (EV_REL), code 6 (REL_HWHEEL), value 1
Event: time 1457290441.973961, -------------- SYN_REPORT ------------
Event: time 1457290441.981947, type 2 (EV_REL), code 6 (REL_HWHEEL), value 4
Event: time 1457290441.981947, -------------- SYN_REPORT ------------
Event: time 1457290441.989947, type 2 (EV_REL), code 6 (REL_HWHEEL), value 12
Event: time 1457290441.989947, type 2 (EV_REL), code 8 (REL_WHEEL), value 3
Event: time 1457290441.989947, -------------- SYN_REPORT ------------
Event: time 1457290441.997981, type 2 (EV_REL), code 6 (REL_HWHEEL), value 15
Event: time 1457290441.997981, type 2 (EV_REL), code 8 (REL_WHEEL), value 5
Event: time 1457290441.997981, -------------- SYN_REPORT ------------
Event: time 1457290442.005927, type 2 (EV_REL), code 6 (REL_HWHEEL), value 18
Event: time 1457290442.005927, type 2 (EV_REL), code 8 (REL_WHEEL), value 5
Event: time 1457290442.005927, -------------- SYN_REPORT ------------
Event: time 1457290442.013904, type 2 (EV_REL), code 6 (REL_HWHEEL), value 23
Event: time 1457290442.013904, type 2 (EV_REL), code 8 (REL_WHEEL), value 9
Event: time 1457290442.013904, -------------- SYN_REPORT ------------

Но если я работаю xinput list Я не видел виртуальное устройство ввода данных. И человечность не отвечает на событие также.

Что я пропускал?

Сделайте я должен создать ведомое устройство для него и присоединить его в xinput?

1
задан 6 March 2016 в 22:06

1 ответ

В соответствии с эти , BTN_LEFT и BTN_RIGHT должны быть установлены, иначе xinput не будет принимать входное виртуальное устройство в качестве подчиненного указателя.

После выполнения:

ret = ioctl(uinputFD, UI_SET_KEYBIT, BTN_LEFT);
ret = ioctl(uinputFD, UI_SET_KEYBIT, BTN_RIGHT);

виртуальное устройство отображается в xinput и хорошо функционирует.

Таким образом, даже если виртуальное устройство реализует только подмножество функций мыши, как в моем случае только два колеса, флаги BTN_LEFT и BTN_RIGHT все еще необходимо установить.

1
ответ дан 7 December 2019 в 16:00

Другие вопросы по тегам:

Похожие вопросы: