Files
voice_linux/src/voice_cmd.h
T

62 lines
1.5 KiB
C

#ifndef VOICE_VOICE_CMD_H
#define VOICE_VOICE_CMD_H
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
VOICE_CMD_TEXT = 0,
VOICE_CMD_KEYCOMBO = 1,
} voice_cmd_type_t;
enum {
VOICE_CMD_MOD_SHIFT = 1 << 0,
VOICE_CMD_MOD_CTRL = 1 << 1,
VOICE_CMD_MOD_ALT = 1 << 2,
VOICE_CMD_MOD_SUPER = 1 << 3,
};
typedef struct {
char trigger[128];
voice_cmd_type_t type;
char text_value[256];
unsigned int keyval;
unsigned int modifiers;
char display_key[128];
} voice_cmd_t;
typedef struct {
voice_cmd_t *cmds;
int count;
int capacity;
int enabled;
} voice_cmd_list_t;
typedef int (*voice_cmd_key_callback_t)(unsigned int keyval, unsigned int modifiers, void *user_data);
void voice_cmd_init(voice_cmd_list_t *list);
void voice_cmd_free(voice_cmd_list_t *list);
int voice_cmd_add(voice_cmd_list_t *list, const voice_cmd_t *cmd);
int voice_cmd_remove(voice_cmd_list_t *list, int index);
int voice_cmd_load(const char *path, voice_cmd_list_t *list);
int voice_cmd_save(const char *path, const voice_cmd_list_t *list);
int voice_cmd_seed_defaults(voice_cmd_list_t *list);
char *voice_cmd_apply(const char *input,
const voice_cmd_list_t *list,
voice_cmd_key_callback_t key_cb,
void *user_data);
void voice_cmd_format_key_combo(unsigned int keyval,
unsigned int modifiers,
char *out,
size_t out_sz);
#ifdef __cplusplus
}
#endif
#endif