#include #include #include #include #include typedef sdbus::Struct> dbus_shortcut_t; typedef void(*shortcut_callback_t)(void*); // typedef std::function shortcut_callback_t; struct ShortcutCallback { void* userData; shortcut_callback_t callback; }; class GlobalShortcuts { public: GlobalShortcuts() = delete; GlobalShortcuts(const char* const tokenPrefix); void addShortcut(const std::string& id, const std::string& description, const std::string& trigger, shortcut_callback_t callback, void* userData); int createSession(); int bindKeys(); bool alreadyBound(); std::vector listBinds(); void listen(); private: std::string AddNumToToken(); private: sdbus::ObjectPath m_SessionPath; std::string m_TokenPrefix; std::string m_ConnName; std::string m_Sender; std::unique_ptr m_xdgProxy; std::vector m_Shortcuts; std::map m_Callbacks; };