86 PointerAxisSourceWheelTilt
124 QPointF globalPointer()
const;
125 Qt::MouseButtons qtButtonStates()
const;
126 Qt::KeyboardModifiers keyboardModifiers()
const;
127 Qt::KeyboardModifiers modifiersRelevantForGlobalShortcuts()
const;
129 void registerPointerShortcut(Qt::KeyboardModifiers modifiers, Qt::MouseButton pointerButtons, QAction *action);
130 void registerAxisShortcut(Qt::KeyboardModifiers modifiers,
PointerAxisDirection axis, QAction *action);
131 void registerTouchpadSwipeShortcut(
SwipeDirection direction, uint32_t fingerCount, QAction *onUp, std::function<
void(qreal)> progressCallback = {});
132 void registerTouchpadPinchShortcut(PinchDirection direction, uint32_t fingerCount, QAction *onUp, std::function<
void(qreal)> progressCallback = {});
133 void registerTouchscreenSwipeShortcut(SwipeDirection direction, uint32_t fingerCount, QAction *action, std::function<
void(qreal)> progressCallback = {});
134 void forceRegisterTouchscreenSwipeShortcut(SwipeDirection direction, uint32_t fingerCount, QAction *action, std::function<
void(qreal)> progressCallback = {});
135 void registerGlobalAccel(KGlobalAccelInterface *interface);
137 bool supportsPointerWarping()
const;
138 void warpPointer(
const QPointF &pos);
147 void prependInputEventFilter(InputEventFilter *filter);
148 void uninstallInputEventFilter(InputEventFilter *filter);
153 void installInputEventSpy(InputEventSpy *spy);
158 void uninstallInputEventSpy(InputEventSpy *spy);
160 void simulateUserActivity();
162 void addIdleDetector(IdleDetector *detector);
163 void removeIdleDetector(IdleDetector *detector);
165 QList<Window *> idleInhibitors()
const;
166 void addIdleInhibitor(
Window *inhibitor);
167 void removeIdleInhibitor(
Window *inhibitor);
169 Window *findToplevel(
const QPointF &pos);
170#if KWIN_BUILD_GLOBALSHORTCUTS
171 GlobalShortcutsManager *shortcuts()
const
191 template<
class UnaryPredicate>
194 std::any_of(m_filters.constBegin(), m_filters.constEnd(), function);
210 template<
class UnaryFunction>
213 std::for_each(m_spies.constBegin(), m_spies.constEnd(), function);
236 void setLastInputHandler(QObject *device);
237 QObject *lastInputHandler()
const;
239 QList<InputDevice *> devices()
const;
242 bool hasPointer()
const;
243 bool hasTouch()
const;
244 bool hasTabletModeSwitch();
246 void startInteractiveWindowSelection(std::function<
void(
KWin::Window *)> callback,
const QByteArray &cursorName);
247 void startInteractivePositionSelection(std::function<
void(
const QPoint &)> callback);
248 bool isSelectingWindow()
const;
250 void toggleTouchpads();
251 void enableTouchpads();
252 void disableTouchpads();
306 void handleInputConfigChanged(
const KConfigGroup &group);
307 void updateScreens();
310 void setupInputBackends();
311 void setupTouchpadShortcuts();
312 void setupWorkspace();
313 void setupInputFilters();
315 void updateLeds(LEDs leds);
316 void updateAvailableInputDevices();
317 void addInputBackend(std::unique_ptr<InputBackend> &&inputBackend);
322 QObject *m_lastInputDevice =
nullptr;
324#if KWIN_BUILD_GLOBALSHORTCUTS
328 std::vector<std::unique_ptr<InputBackend>> m_inputBackends;
329 QList<InputDevice *> m_inputDevices;
331 QList<IdleDetector *> m_idleDetectors;
332 QList<Window *> m_idleInhibitors;
333 std::unique_ptr<WindowSelectorFilter> m_windowSelector;
335 QList<InputEventFilter *> m_filters;
336 QList<InputEventSpy *> m_spies;
337 KConfigWatcher::Ptr m_inputConfigWatcher;
339 std::unique_ptr<InputEventFilter> m_virtualTerminalFilter;
340 std::unique_ptr<InputEventFilter> m_dragAndDropFilter;
341 std::unique_ptr<InputEventFilter> m_lockscreenFilter;
342 std::unique_ptr<InputEventFilter> m_screenEdgeFilter;
343 std::unique_ptr<InputEventFilter> m_tabboxFilter;
344 std::unique_ptr<InputEventFilter> m_globalShortcutFilter;
345 std::unique_ptr<InputEventFilter> m_effectsFilter;
346 std::unique_ptr<InputEventFilter> m_interactiveMoveResizeFilter;
347 std::unique_ptr<InputEventFilter> m_popupFilter;
348 std::unique_ptr<InputEventFilter> m_decorationFilter;
349 std::unique_ptr<InputEventFilter> m_windowActionFilter;
350 std::unique_ptr<InputEventFilter> m_internalWindowFilter;
351 std::unique_ptr<InputEventFilter> m_inputKeyboardFilter;
352 std::unique_ptr<InputEventFilter> m_forwardFilter;
353 std::unique_ptr<InputEventFilter> m_tabletFilter;
355 std::unique_ptr<InputEventSpy> m_hideCursorSpy;
356 std::unique_ptr<InputEventSpy> m_userActivitySpy;
357 std::unique_ptr<InputEventSpy> m_windowInteractedSpy;
360 bool m_hasKeyboard =
false;
361 bool m_hasPointer =
false;
362 bool m_hasTouch =
false;
363 bool m_hasTabletModeSwitch =
false;
364 bool m_touchpadsEnabled =
true;
410 virtual bool pointerEvent(
MouseEvent *event, quint32 nativeButton);
411 virtual bool pointerFrame();
425 virtual bool keyEvent(
KeyEvent *event);
426 virtual bool touchDown(qint32
id,
const QPointF &pos, std::chrono::microseconds time);
427 virtual bool touchMotion(qint32
id,
const QPointF &pos, std::chrono::microseconds time);
428 virtual bool touchUp(qint32
id, std::chrono::microseconds time);
429 virtual bool touchCancel();
430 virtual bool touchFrame();
432 virtual bool pinchGestureBegin(
int fingerCount, std::chrono::microseconds time);
433 virtual bool pinchGestureUpdate(qreal scale, qreal angleDelta,
const QPointF &delta, std::chrono::microseconds time);
434 virtual bool pinchGestureEnd(std::chrono::microseconds time);
435 virtual bool pinchGestureCancelled(std::chrono::microseconds time);
437 virtual bool swipeGestureBegin(
int fingerCount, std::chrono::microseconds time);
438 virtual bool swipeGestureUpdate(
const QPointF &delta, std::chrono::microseconds time);
439 virtual bool swipeGestureEnd(std::chrono::microseconds time);
440 virtual bool swipeGestureCancelled(std::chrono::microseconds time);
442 virtual bool holdGestureBegin(
int fingerCount, std::chrono::microseconds time);
443 virtual bool holdGestureEnd(std::chrono::microseconds time);
444 virtual bool holdGestureCancelled(std::chrono::microseconds time);
449 virtual bool tabletToolButtonEvent(uint button,
bool pressed,
const TabletToolId &tabletToolId, std::chrono::microseconds time);
450 virtual bool tabletPadButtonEvent(uint button,
bool pressed,
const TabletPadId &tabletPadId, std::chrono::microseconds time);
451 virtual bool tabletPadStripEvent(
int number,
int position,
bool isFinger,
const TabletPadId &tabletPadId, std::chrono::microseconds time);
452 virtual bool tabletPadRingEvent(
int number,
int position,
bool isFinger,
const TabletPadId &tabletPadId, std::chrono::microseconds time);
455 void passToWaylandServer(QKeyEvent *event);
456 bool passToInputMethod(QKeyEvent *event);