#ifndef KSYMS_H
#define KSYMS_H

#include "keymap.h"

typedef struct {
	const unsigned short uni;
	const char *name;
} sym;

typedef struct {
	const char *const *table;
	const unsigned int size;
} syms_entry;

struct syn {
	const char *synonym;
	const char *official_name;
};
extern struct syn const synonyms[];

extern const unsigned int syms_size;
extern const unsigned int syn_size;

/* Returned by ksymtocode to report an unknown symbol */
#define CODE_FOR_UNKNOWN_KSYM (-1)

/* Directions for converting keysyms */
#define TO_AUTO (-1) /* use LK_FLAG_PREFER_UNICODE */
#define TO_8BIT 0
#define TO_UNICODE 1

const char *get_sym(struct lk_ctx *ctx, unsigned int ktype, unsigned int index);
unsigned int get_sym_size(struct lk_ctx *ctx, unsigned int ktype);

const char *codetoksym(struct lk_ctx *ctx, int code);
int ksymtocode(struct lk_ctx *ctx, const char *s, int direction);
int convert_code(struct lk_ctx *ctx, int code, int direction);
int add_capslock(struct lk_ctx *ctx, int code);

#endif
