summaryrefslogtreecommitdiffhomepage
path: root/logic/shortcuts.h
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2016-08-12 18:00:49 +0200
committerStanislaw Halik <sthalik@misaki.pl>2016-08-12 18:00:49 +0200
commit9040b187a1c4fa380f8a12207b9dd6d04b3a10ac (patch)
tree115e1351571d690c1261a9d512e6d44e717f3051 /logic/shortcuts.h
parent13a18b149764509a3f460be86590250cdcf690fb (diff)
all: rename modules s#^opentrack-##. and opentrack -> api
Adjust usages.
Diffstat (limited to 'logic/shortcuts.h')
-rw-r--r--logic/shortcuts.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/logic/shortcuts.h b/logic/shortcuts.h
new file mode 100644
index 00000000..d5dfd394
--- /dev/null
+++ b/logic/shortcuts.h
@@ -0,0 +1,68 @@
+/* Copyright (c) 2014-2015, Stanislaw Halik <sthalik@misaki.pl>
+
+ * Permission to use, copy, modify, and/or distribute this
+ * software for any purpose with or without fee is hereby granted,
+ * provided that the above copyright notice and this permission
+ * notice appear in all copies.
+ */
+
+#pragma once
+#include <QObject>
+#include <tuple>
+#include <vector>
+#include <functional>
+
+#include "export.hpp"
+
+#include "qxt-mini/QxtGlobalShortcut"
+#include "compat/options.hpp"
+#include "main-settings.hpp"
+
+#ifdef _WIN32
+# include "dinput/keybinding-worker.hpp"
+#endif
+
+#if defined(__GNUC__) && !defined(_WIN32)
+# define unused_on_unix(t, i) t __attribute__((unused)) i
+#else
+# define unused_on_unix(t, i) t i
+#endif
+
+using namespace options;
+
+struct OPENTRACK_LOGIC_EXPORT Shortcuts : public QObject
+{
+ Q_OBJECT
+
+public:
+ using K =
+#ifndef _WIN32
+ mem<QxtGlobalShortcut>
+#else
+ Key
+#endif
+ ;
+
+ using fun = std::function<void(bool)>;
+ using tt = std::tuple<K, fun, bool>;
+ using t_key = std::tuple<key_opts&, fun, bool>;
+ using t_keys = std::vector<t_key>;
+ std::vector<tt> keys;
+#ifdef _WIN32
+ KeybindingWorker::Token key_token;
+#endif
+
+ Shortcuts()
+#ifdef _WIN32
+ : key_token([&](const Key& k) { receiver(k); })
+#endif
+ {}
+
+ void reload(const t_keys& keys_);
+private:
+ void free_binding(K& key);
+ void bind_shortcut(K &key, const key_opts& k, bool held);
+#ifdef _WIN32
+ void receiver(const Key& k);
+#endif
+};