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

View file

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

View file

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

View file

@ -3,6 +3,7 @@
void IN_LoadConfig (struct plitem_s *config) = #0; void IN_LoadConfig (struct plitem_s *config) = #0;
in_button_t *IN_CreateButton (string name, string description) = #0; in_button_t *IN_CreateButton (string name, string description) = #0;
in_axis_t *IN_CreateAxis (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; int IN_FindDeviceId (string _id) = #0;
string IN_GetDeviceName (int devid) = #0; string IN_GetDeviceName (int devid) = #0;
string IN_GetDeviceId (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_CreateContext (string name) = #0;
int IMT_GetContext (void) = #0; int IMT_GetContext (void) = #0;
void IMT_SetContext (int ctx) = #0; void IMT_SetContext (int ctx) = #0;
#define IE_EVENT(event) #event,
string ie_event_names[] = {
#include "QF/input/event_names.h"
};