39 ,
public QtWaylandServer::wl_keyboard
42 Q_DECLARE_PUBLIC(QWaylandKeyboard)
44 static QWaylandKeyboardPrivate *get(QWaylandKeyboard *keyboard);
46 QWaylandKeyboardPrivate(QWaylandSeat *seat);
47 ~QWaylandKeyboardPrivate() override;
49 QWaylandCompositor *compositor()
const {
return seat->compositor(); }
51 void focused(QWaylandSurface* surface);
53#if QT_CONFIG(xkbcommon)
54 struct xkb_state *xkbState()
const {
return mXkbState.get(); }
55 struct xkb_context *xkbContext()
const {
56 return QWaylandCompositorPrivate::get(seat->compositor())->xkbContext();
58 uint32_t xkbModsMask()
const {
return modsDepressed | modsLatched | modsLocked; }
59 void maybeUpdateXkbScanCodeTable();
60 void resetKeyboardState();
63 void keyEvent(uint code, uint32_t state);
64 void sendKeyEvent(uint code, uint32_t state);
65 void updateModifierState(uint code, uint32_t state);
66 void checkAndRepairModifierState(QKeyEvent *ke);
67 void maybeUpdateKeymap();
69 void checkFocusResource(Resource *resource);
70 void sendEnter(QWaylandSurface *surface, Resource *resource);
73 void keyboard_bind_resource(Resource *resource) override;
74 void keyboard_destroy_resource(Resource *resource) override;
75 void keyboard_release(Resource *resource) override;
78#if QT_CONFIG(xkbcommon)
79 void createXKBKeymap();
80 void createXKBState(xkb_keymap *keymap);
82 static uint toWaylandKey(
const uint nativeScanCode);
83 static uint fromWaylandKey(
const uint key);
85 void sendRepeatInfo();
87 QWaylandSeat *seat =
nullptr;
89 QWaylandSurface *focus =
nullptr;
90 Resource *focusResource =
nullptr;
91 QWaylandDestroyListener focusDestroyListener;
94 uint32_t modsDepressed = 0;
95 uint32_t modsLatched = 0;
96 uint32_t modsLocked = 0;
99 uint32_t shiftIndex = 0;
100 uint32_t controlIndex = 0;
101 uint32_t altIndex = 0;
103 Qt::KeyboardModifiers currentModifierState;
105 bool pendingKeymap =
false;
106#if QT_CONFIG(xkbcommon)
109 char *keymap_area =
nullptr;
110 using ScanCodeKey = std::pair<uint,
int>;
111 QMap<ScanCodeKey, uint> scanCodesByQtKey;
112 QXkbCommon::ScopedXKBState mXkbState;
115 quint32 repeatRate = 40;
116 quint32 repeatDelay = 400;