summaryrefslogtreecommitdiff
path: root/include/common
diff options
context:
space:
mode:
Diffstat (limited to 'include/common')
-rw-r--r--include/common/ctrl.h94
1 files changed, 94 insertions, 0 deletions
diff --git a/include/common/ctrl.h b/include/common/ctrl.h
new file mode 100644
index 0000000..98c717d
--- /dev/null
+++ b/include/common/ctrl.h
@@ -0,0 +1,94 @@
+/* -*- mode: c; tab-width: 4; indent-tabs-mode: t; -*- */
+/*
+ *
+ *
+ *
+ *
+ *
+ *
+ * Controller Service
+ *
+ * ctrl.h
+ */
+
+
+#ifndef _VDSUITE_COMMON_CTRL_H
+#define _VDSUITE_COMMON_CTRL_H
+
+#include_next <ctrl.h>
+
+#include <stdint.h>
+
+
+#if defined(_LANGUAGE_C_PLUS_PLUS)||defined(__cplusplus)||defined(c_plusplus)
+extern "C" {
+#endif /* defined(_LANGUAGE_C_PLUS_PLUS)||defined(__cplusplus)||defined(c_plusplus) */
+
+#define SCE_CTRL_PSBUTTON SCE_CTRL_INTERCEPTED //!< Playstation (Home) button.
+#define SCE_CTRL_HEADPHONE 0x00080000 //!< Headphone plugged in.
+#define SCE_CTRL_VOLUP 0x00100000 //!< Volume up button.
+#define SCE_CTRL_VOLDOWN 0x00200000 //!< Volume down button.
+#define SCE_CTRL_POWER 0x40000000 //!< Power button.
+
+/** Enumeration for the controller types. */
+typedef enum SceCtrlExternalInputMode {
+ SCE_CTRL_TYPE_UNPAIRED = 0, //!< Unpaired controller
+ SCE_CTRL_TYPE_PHY = 1, //!< Physical controller for VITA
+ SCE_CTRL_TYPE_VIRT = 2, //!< Virtual controller for PSTV
+ SCE_CTRL_TYPE_DS3 = 4, //!< DualShock 3
+ SCE_CTRL_TYPE_DS4 = 8 //!< DualShock 4
+} SceCtrlExternalInputMode;
+
+/** Structure to pass as argument to ::sceCtrlSetActuator */
+typedef struct SceCtrlActuator {
+ unsigned char small; //!< Vibration strength of the small motor
+ unsigned char large; //!< Vibration strength of the large motor
+ uint8_t unk[6]; //!< Unknown
+} SceCtrlActuator;
+
+/** Structure to pass as argument to ::sceCtrlGetControllerPortInfo */
+typedef struct SceCtrlPortInfo {
+ uint8_t port[5]; //!< Controller type of each port (See ::SceCtrlExternalInputMode)
+ uint8_t unk[11]; //!< Unknown
+} SceCtrlPortInfo;
+
+/**
+ * Get controller port information.
+ *
+ * @param[out] info - see ::SceCtrlPortInfo
+ * @return 0, <0 on error
+ */
+int sceCtrlGetControllerPortInfo(SceCtrlPortInfo *info);
+
+/**
+ * Sets intercept
+ *
+ * If true, allows the current thread to intercept controls. The use case
+ * might be, for example, a game plugin that wishes to capture input without
+ * having the input sent to the game thread.
+ * @param[in] intercept Boolean value
+ *
+ * @return 0, < 0 on error
+ */
+int sceCtrlSetButtonIntercept(int intercept);
+
+/**
+ * Gets intercept
+ *
+ * @param[out] intercept Boolean value
+ *
+ * @return 0, < 0 on error
+ */
+int sceCtrlGetButtonIntercept(int *intercept);
+
+#if defined(_LANGUAGE_C_PLUS_PLUS)||defined(__cplusplus)||defined(c_plusplus)
+}
+#endif /* defined(_LANGUAGE_C_PLUS_PLUS)||defined(__cplusplus)||defined(c_plusplus) */
+
+#endif /* _VDSUITE_COMMON_CTRL_H */
+
+
+/* Local variables: */
+/* tab-width: 4 */
+/* End: */
+/* vi:set tabstop=4: */