16#if HAVE_X11_EXTENSIONS_XTEST_H
17#include <X11/extensions/XTest.h>
19#error The XTest extension is required to build deskflow
22#include <X11/extensions/XKBstr.h>
101 void init(const Display *display,
bool useXKB);
102 void updateKeysymMap(
deskflow::KeyMap &);
103 void updateKeysymMapXKB(
deskflow::KeyMap &);
104 bool hasModifiersXKB() const;
105 int getEffectiveGroup(KeyCode,
int group) const;
106 uint32_t getGroupFromState(
unsigned int state) const;
112 bool setCurrentLanguageWithDBus(int32_t group) const;
114 static
void remapKeyModifiers(
KeyID, int32_t,
deskflow::KeyMap::KeyItem &,
void *);
117 struct XKBModifierInfo
120 unsigned char m_level;
125 using KeyModifierMaskList = std::vector<KeyModifierMask>;
128 using KeyModifierToXMask = std::map<KeyModifierMask, unsigned int>;
129 using KeyToKeyCodeMap = std::multimap<KeyID, KeyCode>;
130 using NonXKBModifierMap = std::map<KeyCode, unsigned int>;
131 using XKBModifierMap = std::map<uint32_t, XKBModifierInfo>;
134#if HAVE_XKB_EXTENSION
138 XKBModifierMap m_lastGoodXKBModifiers;
139 NonXKBModifierMap m_lastGoodNonXKBModifiers;
142 KeyModifierMaskList m_modifierFromX = {};
145 KeyModifierToXMask m_modifierToX;
148 KeyToKeyCodeMap m_keyCodeFromKey;
151 XKeyboardState m_keyboardState;
int key
Definition KeySequence.cpp:15
uint32_t KeyID
Key ID.
Definition KeyTypes.h:22
uint32_t KeyModifierMask
Modifier key mask.
Definition KeyTypes.h:45
Event queue interface.
Definition IEventQueue.h:32
std::set< KeyButton > KeyButtonSet
Definition IKeyState.h:52
KeyState(IEventQueue *events, std::vector< std::string > layouts, bool isLangSyncEnabled)
Definition KeyState.cpp:645
deskflow::KeyMap::Keystroke Keystroke
Definition KeyState.h:81
void pollPressedKeys(KeyButtonSet &pressedKeys) const override
Get the keys currently pressed from OS.
Definition XWindowsKeyState.cpp:189
static const auto s_groupPollAndSet
Definition XWindowsKeyState.h:36
KeyModifierMask mapModifiersFromX(unsigned int state) const
Convert X modifier mask to deskflow mask.
Definition XWindowsKeyState.cpp:97
KeyModifierMask pollActiveModifiers() const override
Get the active modifiers from OS.
Definition XWindowsKeyState.cpp:153
bool fakeCtrlAltDel() override
Fake ctrl+alt+del.
Definition XWindowsKeyState.cpp:147
std::vector< int > KeycodeList
Definition XWindowsKeyState.h:34
bool mapModifiersToX(KeyModifierMask, unsigned int &) const
Convert deskflow modifier mask to X mask.
Definition XWindowsKeyState.cpp:119
void getKeyMap(deskflow::KeyMap &keyMap) override
Get the keyboard map.
Definition XWindowsKeyState.cpp:202
~XWindowsKeyState() override
Definition XWindowsKeyState.cpp:55
int32_t pollActiveGroup() const final
Get the active keyboard layout from OS.
Definition XWindowsKeyState.cpp:168
XWindowsKeyState(Display *, bool useXKB, IEventQueue *events)
Definition XWindowsKeyState.cpp:37
void setAutoRepeat(const XKeyboardState &)
Set the auto-repeat state.
Definition XWindowsKeyState.cpp:92
void fakeKey(const Keystroke &keystroke) override
Fake a key event.
Definition XWindowsKeyState.cpp:265
void mapKeyToKeycodes(KeyID key, KeycodeList &keycodes) const
Convert deskflow key to all corresponding X keycodes.
Definition XWindowsKeyState.cpp:138
static const auto s_groupPoll
Definition XWindowsKeyState.h:35
void setActiveGroup(int32_t group)
Set active group.
Definition XWindowsKeyState.cpp:77
Key map.
Definition KeyMap.h:24
Definition EventTypes.h:11