summaryrefslogtreecommitdiffstats
path: root/xbmc/input/joysticks/interfaces/IKeyHandler.h
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/input/joysticks/interfaces/IKeyHandler.h')
-rw-r--r--xbmc/input/joysticks/interfaces/IKeyHandler.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/xbmc/input/joysticks/interfaces/IKeyHandler.h b/xbmc/input/joysticks/interfaces/IKeyHandler.h
new file mode 100644
index 0000000..30f49c5
--- /dev/null
+++ b/xbmc/input/joysticks/interfaces/IKeyHandler.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2015-2018 Team Kodi
+ * This file is part of Kodi - https://kodi.tv
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ * See LICENSES/README.md for more information.
+ */
+
+#pragma once
+
+namespace KODI
+{
+namespace JOYSTICK
+{
+/*!
+ * \ingroup joystick
+ * \brief Interface for handling keymap keys
+ *
+ * Keys can be mapped to analog actions (e.g. "AnalogSeekForward") or digital
+ * actions (e.g. "Up").
+ */
+class IKeyHandler
+{
+public:
+ virtual ~IKeyHandler() = default;
+
+ /*!
+ * \brief Return true if the key is "pressed" (has a magnitude greater
+ * than 0.5)
+ *
+ * \return True if the key is "pressed", false otherwise
+ */
+ virtual bool IsPressed() const = 0;
+
+ /*!
+ * \brief A key mapped to a digital feature has been pressed or released
+ *
+ * \param bPressed true if the key's button/axis is activated, false if deactivated
+ * \param holdTimeMs The held time in ms for pressed buttons, or 0 for released
+ *
+ * \return True if the key is mapped to an action, false otherwise
+ */
+ virtual bool OnDigitalMotion(bool bPressed, unsigned int holdTimeMs) = 0;
+
+ /*!
+ * \brief Callback for keys mapped to analog features
+ *
+ * \param magnitude The amount of the analog action
+ * \param motionTimeMs The time since the magnitude was 0
+ *
+ * \return True if the key is mapped to an action, false otherwise
+ */
+ virtual bool OnAnalogMotion(float magnitude, unsigned int motionTimeMs) = 0;
+};
+} // namespace JOYSTICK
+} // namespace KODI