#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "../rute_base.h"
#ifdef __cplusplus
extern "C" {
#endif
struct RUKeyEventFuncs;
struct RUKeyEvent;
typedef struct RUKeyEventFuncs {
int (*key)(struct RUBase* self_c);
bool (*matches)(struct RUBase* self_c, uint32_t key);
uint32_t (*modifiers)(struct RUBase* self_c);
const char* (*text)(struct RUBase* self_c);
bool (*is_auto_repeat)(struct RUBase* self_c);
int (*count)(struct RUBase* self_c);
uint32_t (*native_scan_code)(struct RUBase* self_c);
uint32_t (*native_virtual_key)(struct RUBase* self_c);
uint32_t (*native_modifiers)(struct RUBase* self_c);
} RUKeyEventFuncs;
typedef struct RUKeyEventAllFuncs {
struct RUEventFuncs* event_funcs;
struct RUInputEventFuncs* input_event_funcs;
struct RUKeyEventFuncs* key_event_funcs;
} RUKeyEventAllFuncs;
typedef struct RUKeyEvent {
RUBase* qt_data;
RUBase* host_data;
struct RUKeyEventAllFuncs* all_funcs;
} RUKeyEvent;
extern RUKeyEventFuncs s_key_event_funcs;
extern RUKeyEventAllFuncs s_key_event_all_funcs;
#ifdef __cplusplus
}
#endif