Я 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
?
В соответствии с эти , 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
все еще необходимо установить.