From 26258b348f85bb94d4102cb1c791ba5a26e56166 Mon Sep 17 00:00:00 2001 From: Torben Hohn Date: Fri, 6 Oct 2023 14:08:23 +0200 Subject: [PATCH] clients: keyboard: Implement config Allow configuring the look of the keyboard. This patch does not make use of the colors. Without configuration nothing should change to the old default look. Signed-off-by: Torben Hohn --- clients/keyboard.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/clients/keyboard.c b/clients/keyboard.c index 1f203315c..80f6f58bb 100644 --- a/clients/keyboard.c +++ b/clients/keyboard.c @@ -62,6 +62,8 @@ struct virtual_keyboard { bool toplevel; bool overlay; struct zwp_input_panel_surface_v1 *ips; + + struct weston_config *config; }; enum key_type { @@ -271,6 +273,19 @@ struct keyboard { struct widget *widget; enum keyboard_state state; + uint32_t key_margin; + uint32_t key_radius; + + uint32_t key_fg_color; + uint32_t key_bg_color; + uint32_t key_pressed_fg_color; + uint32_t key_pressed_bg_color; + uint32_t special_key_fg_color; + uint32_t special_key_bg_color; + uint32_t special_key_pressed_fg_color; + uint32_t special_key_pressed_bg_color; + uint32_t panel_fg_color; + uint32_t panel_bg_color; }; static void __attribute__ ((format (printf, 1, 2))) @@ -1052,6 +1067,45 @@ keyboard_destroy(struct virtual_keyboard *virtual_keyboard) free(virtual_keyboard->keyboard); } +static void +config_load(struct virtual_keyboard *virtual_keyboard) +{ + struct weston_config_section *s; + const char *config_file; + config_file = weston_config_get_name_from_env(); + virtual_keyboard->config = weston_config_parse(config_file); + s = weston_config_get_section(virtual_keyboard->config, "keyboard", NULL, NULL); + + weston_config_section_get_uint(s, "key-margin", &virtual_keyboard->keyboard->key_margin, 0); + weston_config_section_get_uint(s, "key-radius", &virtual_keyboard->keyboard->key_radius, 0); + + weston_config_section_get_color(s, "key-fg", + &virtual_keyboard->keyboard->key_fg_color, 0xcc000000); + weston_config_section_get_color(s, "key-bg", + &virtual_keyboard->keyboard->key_bg_color, 0xccffffff); + weston_config_section_get_color(s, "key-pressed-fg", + &virtual_keyboard->keyboard->key_pressed_fg_color, 0xcc000000); + weston_config_section_get_color(s, "key-pressed-bg", + &virtual_keyboard->keyboard->key_pressed_bg_color, 0xccffffff); + weston_config_section_get_color(s, "special-key-fg", + &virtual_keyboard->keyboard->special_key_fg_color, 0xcc000000); + weston_config_section_get_color(s, "special-key-bg", + &virtual_keyboard->keyboard->special_key_bg_color, 0xccffffff); + weston_config_section_get_color(s, "special-key-pressed-fg", + &virtual_keyboard->keyboard->special_key_pressed_fg_color, 0xcc000000); + weston_config_section_get_color(s, "special-key-pressed-bg", + &virtual_keyboard->keyboard->special_key_pressed_bg_color, 0xccffffff); + weston_config_section_get_color(s, "panel-bg", + &virtual_keyboard->keyboard->panel_bg_color, 0xccffffff); + weston_config_section_get_color(s, "panel-fg", + &virtual_keyboard->keyboard->panel_fg_color, 0xcc000000); +} + +static void config_destroy(struct virtual_keyboard *virtual_keyboard) +{ + weston_config_destroy(virtual_keyboard->config); +} + int main(int argc, char *argv[]) { @@ -1076,10 +1130,13 @@ main(int argc, char *argv[]) keyboard_create(&virtual_keyboard); + config_load(&virtual_keyboard); + display_run(virtual_keyboard.display); keyboard_destroy(&virtual_keyboard); display_destroy(virtual_keyboard.display); + config_destroy(&virtual_keyboard); return 0; }