17#if HAVE_X11_EXTENSIONS_XTEST_H
18#include <X11/extensions/XTest.h>
20#error The XTest extension is required to build deskflow
23#include <X11/extensions/XKBstr.h>
102 void init(
bool useXKB);
103 void updateKeysymMap(
deskflow::KeyMap &);
104 void updateKeysymMapXKB(
deskflow::KeyMap &);
105 bool hasModifiersXKB() const;
106 int getEffectiveGroup(KeyCode,
int group) const;
107 uint32_t getGroupFromState(
unsigned int state) const;
113 bool setCurrentLanguageWithDBus(int32_t group) const;
115 static
void remapKeyModifiers(
KeyID, int32_t,
deskflow::KeyMap::KeyItem &,
void *);
118 struct XKBModifierInfo
121 unsigned char m_level;
126 using KeyModifierMaskList = std::vector<KeyModifierMask>;
129 using KeyModifierToXMask = std::map<KeyModifierMask, unsigned int>;
130 using KeyToKeyCodeMap = std::multimap<KeyID, KeyCode>;
131 using NonXKBModifierMap = std::map<KeyCode, unsigned int>;
132 using XKBModifierMap = std::map<uint32_t, XKBModifierInfo>;
135#if HAVE_XKB_EXTENSION
139 XKBModifierMap m_lastGoodXKBModifiers;
140 NonXKBModifierMap m_lastGoodNonXKBModifiers;
143 KeyModifierMaskList m_modifierFromX = {};
146 KeyModifierToXMask m_modifierToX;
149 KeyToKeyCodeMap m_keyCodeFromKey;
152 XKeyboardState m_keyboardState;
int key
Definition KeySequence.cpp:15
uint32_t KeyID
Key ID.
Definition KeyTypes.h:21
uint32_t KeyModifierMask
Modifier key mask.
Definition KeyTypes.h:44
Event queue interface.
Definition IEventQueue.h:29
std::set< KeyButton > KeyButtonSet
Definition IKeyState.h:52
KeyState(IEventQueue *events, std::vector< std::string > layouts, bool isLangSyncEnabled)
Definition KeyState.cpp:643
deskflow::KeyMap::Keystroke Keystroke
Definition KeyState.h:81
void pollPressedKeys(KeyButtonSet &pressedKeys) const override
Get the keys currently pressed from OS.
Definition XWindowsKeyState.cpp:192
static const auto s_groupPollAndSet
Definition XWindowsKeyState.h:37
KeyModifierMask mapModifiersFromX(unsigned int state) const
Convert X modifier mask to deskflow mask.
Definition XWindowsKeyState.cpp:100
KeyModifierMask pollActiveModifiers() const override
Get the active modifiers from OS.
Definition XWindowsKeyState.cpp:156
bool fakeCtrlAltDel() override
Fake ctrl+alt+del.
Definition XWindowsKeyState.cpp:150
std::vector< int > KeycodeList
Definition XWindowsKeyState.h:35
bool mapModifiersToX(KeyModifierMask, unsigned int &) const
Convert deskflow modifier mask to X mask.
Definition XWindowsKeyState.cpp:122
void getKeyMap(deskflow::KeyMap &keyMap) override
Get the keyboard map.
Definition XWindowsKeyState.cpp:205
~XWindowsKeyState() override
Definition XWindowsKeyState.cpp:58
int32_t pollActiveGroup() const final
Get the active keyboard layout from OS.
Definition XWindowsKeyState.cpp:171
XWindowsKeyState(Display *, bool useXKB, IEventQueue *events)
Definition XWindowsKeyState.cpp:37
void setAutoRepeat(const XKeyboardState &)
Set the auto-repeat state.
Definition XWindowsKeyState.cpp:95
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:141
static const auto s_groupPoll
Definition XWindowsKeyState.h:36
void setActiveGroup(int32_t group)
Set active group.
Definition XWindowsKeyState.cpp:80
Key map.
Definition KeyMap.h:24
Definition EventTypes.h:11