Program Listing for File CPDJE_Input.h
↰ Return to documentation for file (include\input\CPDJE_Input.h)
#pragma once
#include "PDJE_EXPORT_SETTER.hpp"
#include <stddef.h>
#include <stdint.h>
#define PDJE_MOUSE_L_BTN_DOWN 0x0001
#define PDJE_MOUSE_L_BTN_UP 0x0002
#define PDJE_MOUSE_R_BTN_DOWN 0x0004
#define PDJE_MOUSE_R_BTN_UP 0x0008
#define PDJE_MOUSE_M_BTN_DOWN 0x0010
#define PDJE_MOUSE_M_BTN_UP 0x0020
#define PDJE_MOUSE_SIDE_BTN_DOWN 0x0040
#define PDJE_MOUSE_SIDE_BTN_UP 0x0080
#define PDJE_MOUSE_EX_BTN_DOWN 0x0100
#define PDJE_MOUSE_EX_BTN_UP 0x0200
#define PDJE_MOUSE_YWHEEL 0x0400
#define PDJE_MOUSE_XWHEEL 0x0800
#ifdef __cplusplus
extern "C" {
#endif
typedef struct PDJE_InputHandleV1 PDJE_InputHandleV1;
typedef struct PDJE_InputDeviceListHandleV1 PDJE_InputDeviceListHandleV1;
typedef struct PDJE_MidiDeviceListHandleV1 PDJE_MidiDeviceListHandleV1;
typedef struct PDJE_InputSnapshotHandleV1 PDJE_InputSnapshotHandleV1;
typedef enum PDJE_InputResultV1 {
PDJE_INPUT_RESULT_OK_V1 = 0,
PDJE_INPUT_RESULT_INVALID_ARGUMENT_V1 = 1,
PDJE_INPUT_RESULT_OUT_OF_RANGE_V1 = 2,
PDJE_INPUT_RESULT_INVALID_STATE_V1 = 3,
PDJE_INPUT_RESULT_OPERATION_FAILED_V1 = 4,
PDJE_INPUT_RESULT_INTERNAL_ERROR_V1 = 5
} PDJE_InputResultV1;
typedef enum PDJE_InputStateV1 {
PDJE_INPUT_STATE_DEVICE_CONFIG_V1 = 0,
PDJE_INPUT_STATE_LOOP_READY_V1 = 1,
PDJE_INPUT_STATE_LOOP_RUNNING_V1 = 2,
PDJE_INPUT_STATE_DEAD_V1 = 3
} PDJE_InputStateV1;
typedef enum PDJE_InputDeviceTypeV1 {
PDJE_INPUT_DEVICE_MOUSE_V1 = 0,
PDJE_INPUT_DEVICE_KEYBOARD_V1 = 1,
PDJE_INPUT_DEVICE_UNKNOWN_V1 = 2
} PDJE_InputDeviceTypeV1;
typedef struct PDJE_InputStringViewV1 {
const char *data;
size_t size;
} PDJE_InputStringViewV1;
typedef struct PDJE_InputBytesViewV1 {
const uint8_t *data;
size_t size;
} PDJE_InputBytesViewV1;
typedef struct PDJE_InputDeviceViewV1 {
uint32_t struct_size;
PDJE_InputDeviceTypeV1 type;
PDJE_InputStringViewV1 name;
PDJE_InputStringViewV1 device_specific_id;
} PDJE_InputDeviceViewV1;
typedef struct PDJE_MidiDeviceViewV1 {
uint32_t struct_size;
PDJE_InputStringViewV1 manufacturer;
PDJE_InputStringViewV1 device_name;
PDJE_InputStringViewV1 port_name;
PDJE_InputStringViewV1 display_name;
uint64_t client_handle;
uint64_t port_handle;
uint8_t port_type;
} PDJE_MidiDeviceViewV1;
typedef struct PDJE_InputKeyboardEventV1 {
uint32_t key_code;
int pressed;
} PDJE_InputKeyboardEventV1;
typedef struct PDJE_InputMouseEventV1 {
uint16_t button_type;
int32_t wheel_move;
uint32_t axis_type;
int32_t x;
int32_t y;
} PDJE_InputMouseEventV1;
typedef struct PDJE_InputEventViewV1 {
uint32_t struct_size;
PDJE_InputDeviceTypeV1 type;
PDJE_InputStringViewV1 id;
PDJE_InputStringViewV1 name;
uint64_t microsecond;
PDJE_InputKeyboardEventV1 keyboard;
PDJE_InputMouseEventV1 mouse;
PDJE_InputBytesViewV1 hid_report;
} PDJE_InputEventViewV1;
typedef struct PDJE_MidiEventViewV1 {
uint32_t struct_size;
uint8_t type;
uint8_t channel;
uint8_t position;
uint16_t value;
uint64_t highres_time;
PDJE_InputStringViewV1 port_name;
} PDJE_MidiEventViewV1;
typedef struct PDJE_InputSnapshotInfoV1 {
uint32_t struct_size;
int has_input_stream;
int has_midi_stream;
size_t input_event_count;
size_t midi_event_count;
} PDJE_InputSnapshotInfoV1;
PDJE_API PDJE_InputResultV1 PDJE_CALL
pdje_input_create_v1(PDJE_InputHandleV1 **out_input);
PDJE_API void PDJE_CALL
pdje_input_destroy_v1(PDJE_InputHandleV1 *input);
PDJE_API PDJE_InputResultV1 PDJE_CALL
pdje_input_init_v1(PDJE_InputHandleV1 *input,
void *platform_ctx0,
void *platform_ctx1,
int use_internal_window);
PDJE_API PDJE_InputResultV1 PDJE_CALL
pdje_input_kill_v1(PDJE_InputHandleV1 *input);
PDJE_API PDJE_InputResultV1 PDJE_CALL
pdje_input_get_state_v1(const PDJE_InputHandleV1 *input,
PDJE_InputStateV1 *out_state);
PDJE_API PDJE_InputResultV1 PDJE_CALL
pdje_input_get_backend_name_v1(PDJE_InputHandleV1 *input,
PDJE_InputStringViewV1 *out_backend);
PDJE_API PDJE_InputResultV1 PDJE_CALL
pdje_input_list_devices_v1(PDJE_InputHandleV1 *input,
PDJE_InputDeviceListHandleV1 **out_list);
PDJE_API size_t PDJE_CALL
pdje_input_device_list_size_v1(const PDJE_InputDeviceListHandleV1 *list);
PDJE_API PDJE_InputResultV1 PDJE_CALL
pdje_input_device_list_get_v1(const PDJE_InputDeviceListHandleV1 *list,
size_t index,
PDJE_InputDeviceViewV1 *out_device);
PDJE_API void PDJE_CALL
pdje_input_device_list_destroy_v1(PDJE_InputDeviceListHandleV1 *list);
PDJE_API PDJE_InputResultV1 PDJE_CALL
pdje_input_list_midi_devices_v1(PDJE_InputHandleV1 *input,
PDJE_MidiDeviceListHandleV1 **out_list);
PDJE_API size_t PDJE_CALL
pdje_input_midi_device_list_size_v1(const PDJE_MidiDeviceListHandleV1 *list);
PDJE_API PDJE_InputResultV1 PDJE_CALL
pdje_input_midi_device_list_get_v1(const PDJE_MidiDeviceListHandleV1 *list,
size_t index,
PDJE_MidiDeviceViewV1 *out_device);
PDJE_API void PDJE_CALL
pdje_input_midi_device_list_destroy_v1(PDJE_MidiDeviceListHandleV1 *list);
PDJE_API PDJE_InputResultV1 PDJE_CALL
pdje_input_config_v1(PDJE_InputHandleV1 *input,
const PDJE_InputDeviceListHandleV1 *devices,
const size_t *device_indices,
size_t device_index_count,
const PDJE_MidiDeviceListHandleV1 *midi_devices,
const size_t *midi_indices,
size_t midi_index_count);
PDJE_API PDJE_InputResultV1 PDJE_CALL
pdje_input_run_v1(PDJE_InputHandleV1 *input);
PDJE_API PDJE_InputResultV1 PDJE_CALL
pdje_input_poll_snapshot_v1(PDJE_InputHandleV1 *input,
PDJE_InputSnapshotHandleV1 **out_snapshot);
PDJE_API PDJE_InputResultV1 PDJE_CALL
pdje_input_snapshot_describe_v1(const PDJE_InputSnapshotHandleV1 *snapshot,
PDJE_InputSnapshotInfoV1 *out_info);
PDJE_API size_t PDJE_CALL
pdje_input_snapshot_input_size_v1(const PDJE_InputSnapshotHandleV1 *snapshot);
PDJE_API PDJE_InputResultV1 PDJE_CALL
pdje_input_snapshot_input_get_v1(const PDJE_InputSnapshotHandleV1 *snapshot,
size_t index,
PDJE_InputEventViewV1 *out_event);
PDJE_API size_t PDJE_CALL
pdje_input_snapshot_midi_size_v1(const PDJE_InputSnapshotHandleV1 *snapshot);
PDJE_API PDJE_InputResultV1 PDJE_CALL
pdje_input_snapshot_midi_get_v1(const PDJE_InputSnapshotHandleV1 *snapshot,
size_t index,
PDJE_MidiEventViewV1 *out_event);
PDJE_API void PDJE_CALL
pdje_input_snapshot_destroy_v1(PDJE_InputSnapshotHandleV1 *snapshot);
#ifdef __cplusplus
}
#endif