@@ -40,6 +40,8 @@ void UInput::createMouse()
40 ioctl(m_uinput.handle(), UI_SET_EVBIT, EV_REL);
40 ioctl(m_uinput.handle(), UI_SET_EVBIT, EV_REL);
41 ioctl(m_uinput.handle(), UI_SET_RELBIT, REL_X);
41 ioctl(m_uinput.handle(), UI_SET_RELBIT, REL_X);
42 ioctl(m_uinput.handle(), UI_SET_RELBIT, REL_Y);
42 ioctl(m_uinput.handle(), UI_SET_RELBIT, REL_Y);
43+ ioctl(m_uinput.handle(), UI_SET_RELBIT, REL_HWHEEL);
44+ ioctl(m_uinput.handle(), UI_SET_RELBIT, REL_WHEEL);
44 ioctl(m_uinput.handle(), UI_SET_EVBIT, EV_KEY);
46 ioctl(m_uinput.handle(), UI_SET_EVBIT, EV_KEY);
45 ioctl(m_uinput.handle(), UI_SET_KEYBIT, BTN_MOUSE);
47 ioctl(m_uinput.handle(), UI_SET_KEYBIT, BTN_MOUSE);
@@ -107,36 +109,58 @@ void UInput::moveMouse(int dx, int dy)
107 write(m_uinput.handle(), &event, sizeof(event));
109 write(m_uinput.handle(), &event, sizeof(event));
110−void UInput::pressMouse(Qt::MouseButton button)
112+void UInput::pressMouse(Button button)
112 injectMouse(button, 1);
114 injectMouse(button, 1);
115−void UInput::releaseMouse(Qt::MouseButton button)
117+void UInput::releaseMouse(Button button)
117 injectMouse(button, 0);
119 injectMouse(button, 0);
122+void UInput::scrollMouse(int dh, int dv)
124+ struct input_event event;
125+ memset(&event, 0, sizeof(event));
126+ gettimeofday(&event.time, 0);
127+ event.type = EV_REL;
128+ event.code = REL_HWHEEL;
130+ write(m_uinput.handle(), &event, sizeof(event));
132+ event.code = REL_WHEEL;
134+ write(m_uinput.handle(), &event, sizeof(event));
136+ event.type = EV_SYN;
137+ event.code = SYN_REPORT;
139+ write(m_uinput.handle(), &event, sizeof(event));
120−void UInput::injectMouse(Qt::MouseButton button, int down)
142+void UInput::injectMouse(Button button, int down)
122 struct input_event event;
144 struct input_event event;
123 memset(&event, 0, sizeof(event));
145 memset(&event, 0, sizeof(event));
124 gettimeofday(&event.time, 0);
146 gettimeofday(&event.time, 0);
125 event.type = EV_KEY;
147 event.type = EV_KEY;
126 switch (button) {
148 switch (button) {
127− case Qt::LeftButton:
149+ case ButtonLeft:
128 event.code = BTN_LEFT;
150 event.code = BTN_LEFT;
130− case Qt::RightButton:
152+ case ButtonRight:
131 event.code = BTN_RIGHT;
153 event.code = BTN_RIGHT;
133− case Qt::MiddleButton:
155+ case ButtonMiddle:
134 event.code = BTN_MIDDLE;
156 event.code = BTN_MIDDLE;
137− qWarning() << "Unsupported mouse button.";
140 event.value = down;
159 event.value = down;
141 write(m_uinput.handle(), &event, sizeof(event));
160 write(m_uinput.handle(), &event, sizeof(event));
162+ event.type = EV_SYN;
163+ event.code = SYN_REPORT;
165+ write(m_uinput.handle(), &event, sizeof(event));