Hash :
c4c531da
Author :
Date :
2025-06-17T11:43:50
rules: Add layout-specific options for RMLVO builder Change the signature of `xkb_rmlvo_builder_append_layout()` to accept an array of options. Also add tests for layout-specific options.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
/*
* Copyright © 2025 Pierre Le Marre <dev@wismill.eu>
* SPDX-License-Identifier: MIT
*/
#pragma once
#include "config.h"
#include <stdbool.h>
#include "xkbcommon/xkbcommon.h"
#include "darray.h"
enum RMLVO {
RMLVO_RULES = (1 << 0),
RMLVO_MODEL = (1 << 1),
RMLVO_LAYOUT = (1 << 2),
RMLVO_VARIANT = (1 << 3),
RMLVO_OPTIONS = (1 << 4)
};
struct xkb_rmlvo_builder_layout {
char *layout;
char *variant;
};
typedef darray(struct xkb_rmlvo_builder_layout) xkb_rmlvo_builder_layouts;
struct xkb_rmlvo_builder_option {
char *option;
xkb_layout_index_t layout;
};
typedef darray(struct xkb_rmlvo_builder_option) xkb_rmlvo_builder_options;
struct xkb_rmlvo_builder {
char *rules;
char *model;
xkb_rmlvo_builder_layouts layouts;
xkb_rmlvo_builder_options options;
int refcnt;
struct xkb_context *ctx;
};
bool
xkb_rmlvo_builder_to_rules_names(const struct xkb_rmlvo_builder *builder,
struct xkb_rule_names *rmlvo,
char *buf, size_t buf_size);