40 ,
public QtWaylandServer::wl_keyboard
43 Q_DECLARE_PUBLIC(QWaylandKeyboard)
45 static QWaylandKeyboardPrivate *get(QWaylandKeyboard *keyboard);
47 QWaylandKeyboardPrivate(QWaylandSeat *seat);
48 ~QWaylandKeyboardPrivate() override;
50 QWaylandCompositor *compositor()
const {
return seat->compositor(); }
52 void focused(QWaylandSurface* surface);
54#if QT_CONFIG(xkbcommon)
55 struct xkb_state *xkbState()
const {
return mXkbState.get(); }
56 struct xkb_context *xkbContext()
const {
57 return QWaylandCompositorPrivate::get(seat->compositor())->xkbContext();
59 uint32_t xkbModsMask()
const {
return modsDepressed | modsLatched | modsLocked; }
60 void maybeUpdateXkbScanCodeTable();
61 void resetKeyboardState();
64 void keyEvent(uint code, uint32_t state);
65 void sendKeyEvent(uint code, uint32_t state);
66 void updateModifierState(uint code, uint32_t state);
67 void checkAndRepairModifierState(QKeyEvent *ke);
68 void maybeUpdateKeymap();
70 void checkFocusResource(Resource *resource);
71 void sendEnter(QWaylandSurface *surface, Resource *resource);
74 void keyboard_bind_resource(Resource *resource) override;
75 void keyboard_destroy_resource(Resource *resource) override;
76 void keyboard_release(Resource *resource) override;
79#if QT_CONFIG(xkbcommon)
80 void createXKBKeymap();
81 void createXKBState(xkb_keymap *keymap);
83 static uint toWaylandKey(
const uint nativeScanCode);
84 static uint fromWaylandKey(
const uint key);
86 void sendRepeatInfo();
88 QWaylandSeat *seat =
nullptr;
90 QWaylandSurface *focus =
nullptr;
91 Resource *focusResource =
nullptr;
92 QWaylandDestroyListener focusDestroyListener;
96 uint32_t modsDepressed = 0;
97 uint32_t modsLatched = 0;
98 uint32_t modsLocked = 0;
101 uint32_t shiftIndex = 0;
102 uint32_t controlIndex = 0;
103 uint32_t altIndex = 0;
104 uint32_t mod5Index = 0;
107 Qt::KeyboardModifiers currentModifierState;
109 bool pendingKeymap =
false;
110#if QT_CONFIG(xkbcommon)
113 char *keymap_area =
nullptr;
114 using ScanCodeKey = std::pair<uint,
int>;
115 QMap<ScanCodeKey, uint> scanCodesByQtKey;
116 QXkbCommon::ScopedXKBState mXkbState;
119 quint32 repeatRate = 40;
120 quint32 repeatDelay = 400;