[ruamoko] Add wrapper for IN_SendConnectedDevices

And wrap input/event.h

event.h is a bit messy because of the data pointer in events, but it
works for now.
This commit is contained in:
Bill Currie 2024-02-01 01:40:46 +09:00
parent 0af727341f
commit 2e19e2d913
4 changed files with 35 additions and 2 deletions

View file

@ -31,7 +31,9 @@
#ifndef __QF_in_event_h
#define __QF_in_event_h
#ifndef __QFCC__ // FIXME make more compatible with Ruamoko
#include "QF/qtypes.h"
#endif
/** \defgroup input_events Input Events
\ingroup input
@ -74,14 +76,22 @@ typedef struct {
} IE_key_event_t;
typedef struct {
#ifdef __QFCC__
long data;
#else
void *data;
#endif
int devid;
int axis;
int value;
} IE_axis_event_t;
typedef struct {
#ifdef __QFCC__
long data;
#else
void *data;
#endif
int devid;
int button;
int state;
@ -97,7 +107,11 @@ typedef enum {
ie_event_count
} IE_event_type;
#ifdef __QFCC__
extern string ie_event_names[];
#else
extern const char *ie_event_names[];
#endif
#define IE_broadcast_events (0 \
| (1 << ie_add_device) \
@ -109,7 +123,11 @@ extern const char *ie_event_names[];
typedef struct IE_event_s {
IE_event_type type;
#ifdef __QFCC__//FIXME proper stdint for Ruamoko
unsigned long when;
#else
uint64_t when;
#endif
union {
IE_app_window_event_t app_window;
IE_mouse_event_t mouse;
@ -119,7 +137,7 @@ typedef struct IE_event_s {
IE_device_event_t device;
};
} IE_event_t;
#ifndef __QFCC__
typedef int ie_handler_t (const IE_event_t *, void *data);
void IN_Event_Init (void);
@ -128,7 +146,7 @@ int IE_Add_Handler (ie_handler_t *event_handler, void *data);
void IE_Remove_Handler (int handle);
void IE_Set_Focus (int handle);
int IE_Get_Focus (void) __attribute__ ((pure));
#endif
///@}
#endif//__QF_in_event_h

View file

@ -62,6 +62,12 @@ typedef struct input_resources_s {
ptrset_t axes;
} input_resources_t;
static void
bi_IN_SendConnectedDevices (progs_t *pr, void *_res)
{
IN_SendConnectedDevices ();
}
static void
bi_IN_FindDeviceId (progs_t *pr, void *_res)
{
@ -511,6 +517,7 @@ static builtin_t insecure_builtins[] = {
{0}
};
static builtin_t builtins[] = {
bi(IN_SendConnectedDevices, 0),
bi(IN_FindDeviceId, 1, p(string)),
bi(IN_GetDeviceName, 1, p(int)),
bi(IN_GetDeviceId, 1, p(int)),

View file

@ -2,11 +2,13 @@
#define __ruamoko_input_h
#include <QF/input.h>
#include <QF/input/event.h>
struct plitem_s;
void IN_LoadConfig (struct plitem_s *config);
in_button_t *IN_CreateButton (string name, string description);
in_axis_t *IN_CreateAxis (string name, string description);
void IN_SendConnectedDevices (void);
int IN_FindDeviceId (string _id);
string IN_GetDeviceName (int devid);
string IN_GetDeviceId (int devid);

View file

@ -3,6 +3,7 @@
void IN_LoadConfig (struct plitem_s *config) = #0;
in_button_t *IN_CreateButton (string name, string description) = #0;
in_axis_t *IN_CreateAxis (string name, string description) = #0;
void IN_SendConnectedDevices (void) = #0;
int IN_FindDeviceId (string _id) = #0;
string IN_GetDeviceName (int devid) = #0;
string IN_GetDeviceId (int devid) = #0;
@ -40,3 +41,8 @@ void IN_AxisRemoveListener (in_axis_t *axis, IMP listener, id obj) = #0;
int IMT_CreateContext (string name) = #0;
int IMT_GetContext (void) = #0;
void IMT_SetContext (int ctx) = #0;
#define IE_EVENT(event) #event,
string ie_event_names[] = {
#include "QF/input/event_names.h"
};