File indexing completed on 2025-04-27 11:33:00
0001 /* 0002 SPDX-FileCopyrightText: 2022 Vlad Zahorodnii <vlad.zahorodnii@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "x11eventfilter.h" 0010 0011 #include <xkbcommon/xkbcommon.h> 0012 0013 #include <memory> 0014 0015 namespace KWin 0016 { 0017 0018 class X11KeyboardFilter; 0019 0020 class X11Keyboard 0021 { 0022 public: 0023 X11Keyboard(); 0024 ~X11Keyboard(); 0025 0026 xkb_keymap *xkbKeymap() const; 0027 xkb_state *xkbState() const; 0028 Qt::KeyboardModifiers modifiers() const; 0029 0030 bool event(xcb_generic_event_t *event); 0031 0032 private: 0033 void updateKeymap(); 0034 0035 xkb_context *m_xkbContext = nullptr; 0036 xkb_keymap *m_xkbKeymap = nullptr; 0037 xkb_state *m_xkbState = nullptr; 0038 int32_t m_deviceId = 0; 0039 0040 std::unique_ptr<X11KeyboardFilter> m_filter; 0041 }; 0042 0043 } // namespace KWin