Changeset View
Changeset View
Standalone View
Standalone View
libinput/connection.cpp
Show First 20 Lines • Show All 337 Lines • ▼ Show 20 Line(s) | 252 | switch (event->type()) { | |||
---|---|---|---|---|---|
338 | } | 338 | } | ||
339 | case LIBINPUT_EVENT_KEYBOARD_KEY: { | 339 | case LIBINPUT_EVENT_KEYBOARD_KEY: { | ||
340 | KeyEvent *ke = static_cast<KeyEvent*>(event.data()); | 340 | KeyEvent *ke = static_cast<KeyEvent*>(event.data()); | ||
341 | emit keyChanged(ke->key(), ke->state(), ke->time(), ke->device()); | 341 | emit keyChanged(ke->key(), ke->state(), ke->time(), ke->device()); | ||
342 | break; | 342 | break; | ||
343 | } | 343 | } | ||
344 | case LIBINPUT_EVENT_POINTER_AXIS: { | 344 | case LIBINPUT_EVENT_POINTER_AXIS: { | ||
345 | PointerEvent *pe = static_cast<PointerEvent*>(event.data()); | 345 | PointerEvent *pe = static_cast<PointerEvent*>(event.data()); | ||
346 | struct Axis { | 346 | const auto axes = pe->axis(); | ||
347 | qreal delta = 0.0; | 347 | for (const InputRedirection::PointerAxis &axis : axes) { | ||
348 | quint32 time = 0; | 348 | emit pointerAxisChanged(axis, pe->axisValue(axis), pe->discreteAxisValue(axis), | ||
349 | }; | 349 | pe->axisSource(), pe->time(), pe->device()); | ||
350 | QMap<InputRedirection::PointerAxis, Axis> deltas; | | |||
351 | auto update = [&deltas] (PointerEvent *pe) { | | |||
352 | const auto axis = pe->axis(); | | |||
353 | for (auto it = axis.begin(); it != axis.end(); ++it) { | | |||
354 | deltas[*it].delta += pe->axisValue(*it); | | |||
355 | deltas[*it].time = pe->time(); | | |||
356 | } | | |||
357 | }; | | |||
358 | update(pe); | | |||
359 | auto it = m_eventQueue.begin(); | | |||
360 | while (it != m_eventQueue.end()) { | | |||
361 | if ((*it)->type() == LIBINPUT_EVENT_POINTER_AXIS) { | | |||
362 | QScopedPointer<PointerEvent> p(static_cast<PointerEvent*>(*it)); | | |||
363 | update(p.data()); | | |||
364 | it = m_eventQueue.erase(it); | | |||
365 | } else { | | |||
366 | break; | | |||
367 | } | | |||
368 | } | | |||
369 | for (auto it = deltas.constBegin(); it != deltas.constEnd(); ++it) { | | |||
370 | emit pointerAxisChanged(it.key(), it.value().delta, it.value().time, pe->device()); | | |||
371 | } | 350 | } | ||
372 | break; | 351 | break; | ||
373 | } | 352 | } | ||
374 | case LIBINPUT_EVENT_POINTER_BUTTON: { | 353 | case LIBINPUT_EVENT_POINTER_BUTTON: { | ||
375 | PointerEvent *pe = static_cast<PointerEvent*>(event.data()); | 354 | PointerEvent *pe = static_cast<PointerEvent*>(event.data()); | ||
376 | emit pointerButtonChanged(pe->button(), pe->buttonState(), pe->time(), pe->device()); | 355 | emit pointerButtonChanged(pe->button(), pe->buttonState(), pe->time(), pe->device()); | ||
377 | break; | 356 | break; | ||
378 | } | 357 | } | ||
▲ Show 20 Lines • Show All 307 Lines • Show Last 20 Lines |