23class QXcbKeyboard :
public QXcbObject,
public QPlatformKeyMapper
26 QXcbKeyboard(QXcbConnection *connection);
33 void handleKeyPressEvent(
const xcb_key_press_event_t *event);
34 void handleKeyReleaseEvent(
const xcb_key_release_event_t *event);
36 Qt::KeyboardModifiers translateModifiers(
int s)
const;
37 void updateKeymap(xcb_mapping_notify_event_t *event);
40 QList<QKeyCombination> possibleKeyCombinations(
const QKeyEvent *event)
const override;
41 Qt::KeyboardModifiers queryKeyboardModifiers()
const override;
44 xkb_mod_mask_t xkbModMask(quint16 state);
45 void updateXKBStateFromCore(quint16 state);
46 void updateXKBStateFromXI(
void *modInfo,
void *groupInfo);
48 int coreDeviceId()
const {
return core_device_id; }
49 void updateXKBState(xcb_xkb_state_notify_event_t *state);
51 void handleStateChanges(xkb_state_component changedComponents);
54 void handleKeyEvent(xcb_window_t sourceWindow, QEvent::Type type, xcb_keycode_t code,
55 quint16 state, xcb_timestamp_t time,
bool fromSendEvent);
57 void resolveMaskConflicts();
59 typedef QMap<xcb_keysym_t,
int> KeysymModifierMap;
60 struct xkb_keymap *keymapFromCore(
const KeysymModifierMap &keysymMods);
62 void updateModifiers(
const KeysymModifierMap &keysymMods);
63 KeysymModifierMap keysymsToModifiers();
65 void updateVModMapping();
66 void updateVModToRModMapping();
69 bool m_config =
false;
70 bool m_isAutoRepeat =
false;
71 xcb_keycode_t m_autoRepeatCode = 0;
81 _mod_masks rmod_masks;
83 xcb_key_symbols_t *m_key_symbols =
nullptr;
85 xkb_mod_index_t shift;
87 xkb_mod_index_t control;
96 _mod_masks vmod_masks;
99 QXkbCommon::ScopedXKBState m_xkbState;
100 QXkbCommon::ScopedXKBKeymap m_xkbKeymap;
101 QXkbCommon::ScopedXKBContext m_xkbContext;
103 bool m_superAsMeta =
false;
104 bool m_hyperAsMeta =
false;