Deskflow 1.22.0.197
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
EiKeyState.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2024 Symless Ltd.
4 * SPDX-FileCopyrightText: (C) 2022 Red Hat, Inc.
5 * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
6 */
7
8#pragma once
9
10#include "deskflow/KeyState.h"
11#include "platform/EiScreen.h"
12
13struct xkb_context;
14struct xkb_keymap;
15struct xkb_state;
16
17namespace deskflow {
18
20class EiKeyState : public KeyState
21{
22public:
23 EiKeyState(EiScreen *screen, IEventQueue *events);
24 ~EiKeyState() override;
25
26 void init(int fd, std::size_t len);
27 void initDefaultKeymap();
28
29 // IKeyState overrides
30 bool fakeCtrlAltDel() override;
31 KeyModifierMask pollActiveModifiers() const override;
32 std::int32_t pollActiveGroup() const override;
33 void pollPressedKeys(KeyButtonSet &pressedKeys) const override;
34 KeyID mapKeyFromKeyval(std::uint32_t keyval) const;
35 void updateXkbState(std::uint32_t keyval, bool is_pressed);
36
37protected:
38 // KeyState overrides
39 void getKeyMap(KeyMap &keyMap) override;
40 void fakeKey(const Keystroke &keystroke) override;
41
42private:
43 std::uint32_t convertModMask(std::uint32_t xkb_mask) const;
44 void assignGeneratedModifiers(std::uint32_t keycode, KeyMap::KeyItem &item);
45
46 EiScreen *m_screen = nullptr;
47
48 xkb_context *m_xkb = nullptr;
49 xkb_keymap *m_xkbKeymap = nullptr;
50 xkb_state *m_xkbState = nullptr;
51};
52
53} // namespace deskflow
static void FAR int len
Definition ArchNetworkWinsock.cpp:37
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
EiKeyState(EiScreen *screen, IEventQueue *events)
Definition EiKeyState.cpp:23
KeyID mapKeyFromKeyval(std::uint32_t keyval) const
Definition EiKeyState.cpp:246
void fakeKey(const Keystroke &keystroke) override
Fake a key event.
Definition EiKeyState.cpp:231
bool fakeCtrlAltDel() override
Fake ctrl+alt+del.
Definition EiKeyState.cpp:91
void initDefaultKeymap()
Definition EiKeyState.cpp:36
void pollPressedKeys(KeyButtonSet &pressedKeys) const override
Get the keys currently pressed from OS.
Definition EiKeyState.cpp:108
std::int32_t pollActiveGroup() const override
Get the active keyboard layout from OS.
Definition EiKeyState.cpp:103
void init(int fd, std::size_t len)
Definition EiKeyState.cpp:49
~EiKeyState() override
Definition EiKeyState.cpp:84
KeyModifierMask pollActiveModifiers() const override
Get the active modifiers from OS.
Definition EiKeyState.cpp:97
void updateXkbState(std::uint32_t keyval, bool is_pressed)
Definition EiKeyState.cpp:258
void getKeyMap(KeyMap &keyMap) override
Get the keyboard map.
Definition EiKeyState.cpp:162
Implementation of IPlatformScreen for X11.
Definition EiScreen.h:33
Key map.
Definition KeyMap.h:24
Definition EventTypes.h:11
KeyID synthesis info.
Definition KeyMap.h:42