blob: ffc8300db45d8abf6cf3143d557d36fe79b61e5a [file] [log] [blame]
#ifndef LK_DATA_H
#define LK_DATA_H
#include <linux/kd.h>
#include <linux/keyboard.h>
#include <keymap/findfile.h>
#include <keymap/array.h>
/**
* @brief Copy of struct kbdiacruc.
*/
struct kb_diacr {
unsigned int diacr, base, result;
};
/**
* @brief Parser flags that are set outside the library.
*/
typedef enum {
LK_FLAG_UNICODE_MODE = (1 << 1), /**< Unicode mode */
LK_FLAG_CLEAR_COMPOSE = (1 << 2), /**< Compose */
LK_FLAG_CLEAR_STRINGS = (1 << 3), /**< Strings */
LK_FLAG_PREFER_UNICODE = (1 << 4) /**< Prefer unicode */
} lk_flags;
/**
* @brief Keywords used in keymap files.
*/
typedef enum {
LK_KEYWORD_KEYMAPS = (1 << 1), /**< 'Keymaps' keyword */
LK_KEYWORD_ALTISMETA = (1 << 2), /**< 'Alt-is-meta' keyword */
LK_KEYWORD_CHARSET = (1 << 3), /**< 'Charset' keyword */
LK_KEYWORD_STRASUSUAL = (1 << 4) /**< 'String as usual' keyword */
} lk_keywords;
/**
* @brief The maximum number of include levels.
*/
#define MAX_INCLUDE_DEPTH 20
/**
* @brief Opaque object representing the library context.
*/
struct lk_ctx {
/**
* Parser flags that are set outside the library.
*/
lk_flags flags;
/**
* Keywords used in keymap files.
*/
lk_keywords keywords;
/**
* Key translation table (keycode to action code).
*/
struct lk_array *keymap;
/**
* Function key string entry.
*/
struct lk_array *func_table;
/**
* Accent table.
*/
struct lk_array *accent_table;
/** @protected
* User defined logging function.
*/
void (*log_fn)(void *data, int priority,
const char *file, int line, const char *fn,
const char *format, va_list args);
/** @protected
* The data passed to the @ref log_fn logging function as the first argument.
*/
void *log_data;
/** @protected
* Logging priority used by @ref log_fn logging function.
*/
int log_priority;
/** @protected
* User defined charset.
*/
unsigned int charset;
/* Fields used by keymap parser */
struct lk_array *key_constant; /**< @private */
struct lk_array *key_line; /**< @private */
int mod; /**< @private */
lkfile_t *stack[MAX_INCLUDE_DEPTH]; /**< @private */
};
#endif /* LK_DATA_H */