From 1f46007544410fbbbeb585c6731d8b601b4f6856 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 1 Nov 2025 17:10:23 +0600 Subject: [PATCH] WIP keyboard remake --- source/ubl-settings-keyboard.c | 220 +++++----- source/ubl-settings-keyboard.h | 61 ++- ubl-settings-keyboard-layouts.glade | 12 +- ubl-settings-keyboard.glade | 595 ++++++++++++++-------------- 4 files changed, 446 insertions(+), 442 deletions(-) diff --git a/source/ubl-settings-keyboard.c b/source/ubl-settings-keyboard.c index e787546..1194b4d 100644 --- a/source/ubl-settings-keyboard.c +++ b/source/ubl-settings-keyboard.c @@ -106,15 +106,14 @@ void yon_load_proceed(YON_CONFIG_TYPE type){ } gboolean yon_interface_update(main_window *widgets){ - g_signal_handlers_block_by_func(G_OBJECT(widgets->SystemKeyboardModelCombo),G_CALLBACK(on_model_changed),widgets); + g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardModelCombo),G_CALLBACK(on_model_changed),widgets); // g_signal_handlers_block_by_func(G_OBJECT(widgets->SystemKeyboardOptionsCombo),G_CALLBACK(on_options_open),widgets); g_signal_handlers_block_by_func(G_OBJECT(widgets->NumlockCombo),G_CALLBACK(on_num_lock_changed),widgets); - gtk_list_store_clear(main_config.layouts_list); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->SystemKeyboardModelCombo),0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardModelCombo),0); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NumlockCombo),0); + // gtk_entry_set_text(GTK_ENTRY(widgets->SystemKeyboardOptionsCombo),DEFAULT_LABEL); GtkTreeIter iter; - gtk_entry_set_text(GTK_ENTRY(widgets->SystemKeyboardOptionsCombo),DEFAULT_LABEL); { char *name = yon_config_get_by_key(model_parameter); char *id; @@ -123,60 +122,44 @@ gboolean yon_interface_update(main_window *widgets){ for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.models_list),&iter)){ gtk_tree_model_get(GTK_TREE_MODEL(main_config.models_list),&iter,1,&id,-1); if (!strcmp(name,id)){ - gtk_combo_box_set_active_iter(GTK_COMBO_BOX(widgets->SystemKeyboardModelCombo),&iter); + gtk_combo_box_set_active_iter(GTK_COMBO_BOX(widgets->KeyboardModelCombo),&iter); break; } } - } else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->SystemKeyboardModelCombo),0); + } else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardModelCombo),0); } { - char *name = yon_config_get_by_key(options_parameter); - if (name) { - char *id, *rname; - gtk_entry_set_text(GTK_ENTRY(widgets->SystemKeyboardOptionsCombo),name); - int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.options_list),&iter); - for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.options_list),&iter)){ - gtk_tree_model_get(GTK_TREE_MODEL(main_config.options_list),&iter,0,&id,1,&rname,-1); - if (!strcmp(id,name)){ - gtk_list_store_set(main_config.options_list,&iter,2,1,-1); - gtk_entry_set_text(GTK_ENTRY(widgets->SystemKeyboardOptionsCombo),rname); - break; - } - } - } - } - { - if (main_config.layouts_list){ - for_iter(main_config.layouts_list,&iter){ - gtk_list_store_set(main_config.layouts_list,&iter,2,0,-1); - } - } + // if (main_config.layouts_store){ + // for_iter(main_config.layouts_store,&iter){ + // gtk_tree_store_set(main_config.layouts_store,&iter,2,0,-1); + // } + // } char *name = yon_config_get_by_key(num_lock_boot_parameter); if (name) { if (!strcmp(name,"yes")) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NumlockCombo),1); else if (!strcmp(name,"no")) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NumlockCombo),2); } else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NumlockCombo),0); - if (main_config.layouts_list){ - int size=0; - name = yon_config_get_by_key(keyboard_layout_parameter); - config_str layouts = yon_char_parse(name,&size,","); - GtkTreeIter iter, itar; - char *rid,*rname; - gtk_list_store_clear(main_config.layouts_list); - for (int i=0;iSystemKeyboardModelCombo),G_CALLBACK(on_model_changed),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->KeyboardModelCombo),G_CALLBACK(on_model_changed),widgets); // g_signal_handlers_unblock_by_func(G_OBJECT(widgets->OptionsButton),G_CALLBACK(on_options_open),widgets); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->NumlockCombo),G_CALLBACK(on_num_lock_changed),widgets); return G_SOURCE_REMOVE; @@ -202,9 +185,10 @@ void on_model_changed(GtkComboBoxText *self, main_window *widgets){ default: char *id; GtkTreeIter iter; - gtk_combo_box_get_active_iter(GTK_COMBO_BOX(widgets->SystemKeyboardModelCombo),&iter); - gtk_tree_model_get(GTK_TREE_MODEL(main_config.models_list),&iter,1,&id,-1); - yon_config_register(model_parameter,model_parameter_command,id); + if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(widgets->KeyboardModelCombo),&iter)){ + gtk_tree_model_get(GTK_TREE_MODEL(main_config.models_list),&iter,1,&id,-1); + yon_config_register(model_parameter,model_parameter_command,id); + } break; } @@ -218,7 +202,7 @@ void on_options_accept(GtkWidget *self, dictionary *dict){ char *name, *id; if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->MainTree)),&model,&iter)){ gtk_tree_model_get(model,&iter,0,&id,1,&name,-1); - gtk_entry_set_text(GTK_ENTRY(widgets->SystemKeyboardOptionsCombo),name); + gtk_entry_set_text(GTK_ENTRY(widgets->OptionsTree),name); yon_config_register(options_parameter,options_parameter_command,id); } @@ -233,7 +217,7 @@ void yon_layouts_save(main_window *widgets){ for_iter(widgets->layoutsFilter,&iter){ char *name, *id; gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(widgets->layoutsFilter),&child_iter,&iter); - gtk_tree_model_get(GTK_TREE_MODEL(main_config.layouts_list),&child_iter,0,&name,1,&id,-1); + gtk_tree_model_get(GTK_TREE_MODEL(main_config.layouts_store),&child_iter,0,&name,1,&id,-1); yon_char_parsed_add_or_create_if_exists(parsed,&size,id); } if (parsed&&size>0){ @@ -279,21 +263,28 @@ GList *yon_get_all_selected(GtkTreeView *tree, int column){ void on_layouts_accept(GtkWidget *self, dictionary *dict){ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); layouts_window *window = yon_dictionary_get_data(dict->first->next,layouts_window*); - gtk_list_store_clear(main_config.layouts_list); + gtk_list_store_clear(widgets->LayoutsList); GtkTreeModel *model = GTK_TREE_MODEL(window->list); - GList *list = yon_get_all_selected(GTK_TREE_VIEW(window->MainTree),2); - char *name; - char *id; - GtkTreeIter iter, lwiter; - GtkTreePath *pth; - for (guint i=0;ilist,&window_iter){ + char *id, *name; + int status; + gtk_tree_model_get(model,&window_iter,0,&id,1,&name,2,&status,-1); + if (status){ + gtk_list_store_append(widgets->LayoutsList,&main_iter); + gtk_list_store_set(widgets->LayoutsList,&main_iter,0,id,1,name,-1); + } + GtkTreeIter child_iter; + if (gtk_tree_model_iter_children(model,&child_iter,&window_iter)){ + for (int valid2=1;valid2;valid2=gtk_tree_model_iter_next(model,&child_iter)){ + gtk_tree_model_get(model,&child_iter,0,&id,1,&name,2,&status,-1); + if (status){ + gtk_list_store_append(widgets->LayoutsList,&main_iter); + gtk_list_store_set(widgets->LayoutsList,&main_iter,0,id,1,name,-1); + } + } + } } - yon_layouts_save(widgets); on_subwindow_close(self); } @@ -302,11 +293,11 @@ void on_layouts_chosen(GtkCellRenderer *, gchar *path, layouts_window *window){ gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->list),&iter,path); int chosen; gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,2,&chosen,-1); - gtk_list_store_set(window->list,&iter,2,!chosen,-1); + gtk_tree_store_set(GTK_TREE_STORE(window->list),&iter,2,!chosen,-1); } void on_system_layouts_add(GtkWidget *, main_window *widgets){ - yon_layouts_add(GTK_TREE_VIEW(widgets->SystemLayoutTree),widgets->SystemList,widgets); + yon_layouts_add(GTK_TREE_VIEW(widgets->LayoutTree),widgets->LayoutsList,widgets); } void yon_layouts_add(GtkTreeView *, GtkListStore *, main_window *widgets){ @@ -317,12 +308,14 @@ void yon_layouts_add(GtkTreeView *, GtkListStore *, main_window *widgets){ window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); window->ChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ChosenCell")); window->MainTree = yon_gtk_builder_get_widget(builder,"LayoutsTree"); - window->list = main_config.layouts_list; - gtk_tree_view_set_model(GTK_TREE_VIEW(window->MainTree), GTK_TREE_MODEL(window->list)); + window->list = (GtkListStore*)main_config.layouts_store; + gtk_tree_view_set_model(GTK_TREE_VIEW(window->MainTree), GTK_TREE_MODEL(main_config.layouts_store)); gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->MainTree)),GTK_SELECTION_MULTIPLE); yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),TITLE_LABEL,icon_path,"layout_window"); + gtk_tree_view_column_clicked(GTK_TREE_VIEW_COLUMN(gtk_tree_view_get_column(GTK_TREE_VIEW(window->MainTree),0))); + dictionary *dict = NULL; yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); @@ -340,13 +333,13 @@ void yon_layouts_add(GtkTreeView *, GtkListStore *, main_window *widgets){ gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,0,&id,-1); for (int i=0;ilist,&iter,2,1,-1); + gtk_tree_store_set(GTK_TREE_STORE(window->list),&iter,2,1,-1); found=1; break; } } if (!found) { - gtk_list_store_set(window->list,&iter,2,0,-1); + gtk_tree_store_set(GTK_TREE_STORE(window->list),&iter,2,0,-1); } } } @@ -365,11 +358,25 @@ void yon_layouts_remove(GtkTreeView *tree, GtkListStore *cur_list, main_window * } void on_system_layouts_remove(GtkWidget *, main_window *widgets){ - yon_layouts_add(GTK_TREE_VIEW(widgets->ConsoleLayoutTree),widgets->ConsoleList,widgets); + yon_layouts_remove(GTK_TREE_VIEW(widgets->LayoutTree),widgets->LayoutsList,widgets); } // standard functions +void yon_layout_build(char *key, dictionary *value, main_window *){ + GtkTreeIter parent; + GtkTreeIter iter; + gtk_tree_store_append(main_config.layouts_store,&parent,NULL); + gtk_tree_store_set(main_config.layouts_store,&parent,0,key,1,"",2,(char*)value->first->data,-1); + dictionary *dict; + for_dictionaries(dict,value){ + if (yon_char_is_empty(dict->key)) continue; + gtk_tree_store_append(main_config.layouts_store,&iter,&parent); + char *key_full = yon_char_unite(key,"_",dict->key,NULL); + gtk_tree_store_set(main_config.layouts_store,&iter,0,key_full,1,dict->key,2,(char*)dict->data,-1); + } +} + void yon_config_init(){ int size; main_config.models_list = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN); @@ -381,17 +388,29 @@ void yon_config_init(){ gtk_list_store_append(main_config.models_list,&iter); gtk_list_store_set(main_config.models_list,&iter,1,models[i],0,_(models[i+1]),-1); } - main_config.layouts_list = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN); - int laysize; - config_str rtn = yon_resource_open_file(layouts_path,&size); - for (int i=0; iConsoleNumlockCombo = yon_gtk_builder_get_widget(builder,"ConsoleNumlockCombo"); - widgets->ConsoleDefaultLayoutRadio = yon_gtk_builder_get_widget(builder,"ConsoleDefaultLayoutRadio"); - widgets->ConsoleManualLayoutRadio = yon_gtk_builder_get_widget(builder,"ConsoleManualLayoutRadio"); - widgets->ConsoleLayoutTree = yon_gtk_builder_get_widget(builder,"ConsoleLayoutTree"); - widgets->ConsoleLayoutAddButton = yon_gtk_builder_get_widget(builder,"ConsoleLayoutAddButton"); - widgets->ConsoleLayoutRemoveButton = yon_gtk_builder_get_widget(builder,"ConsoleLayoutRemoveButton"); - widgets->ConsoleScrollLockCheck = yon_gtk_builder_get_widget(builder,"ConsoleScrollLockCheck"); - widgets->ConsoleManualEntry = yon_gtk_builder_get_widget(builder,"ConsoleManualEntry"); - widgets->SystemKeyboardModelCombo = yon_gtk_builder_get_widget(builder,"SystemKeyboardModelCombo"); - widgets->SystemKeyboardOptionsCombo = yon_gtk_builder_get_widget(builder,"SystemKeyboardOptionsCombo"); - widgets->SystemDefaultLayoutRadio = yon_gtk_builder_get_widget(builder,"SystemDefaultLayoutRadio"); - widgets->SystemManualLayoutRadio = yon_gtk_builder_get_widget(builder,"SystemManualLayoutRadio"); - widgets->SystemLayoutTree = yon_gtk_builder_get_widget(builder,"SystemLayoutTree"); - widgets->SystemLayoutAddButton = yon_gtk_builder_get_widget(builder,"SystemLayoutAddButton"); - widgets->SystemLayoutRemoveButton = yon_gtk_builder_get_widget(builder,"SystemLayoutRemoveButton"); - widgets->SystemScrollLockCheck = yon_gtk_builder_get_widget(builder,"SystemScrollLockCheck"); - widgets->SystemComposeCheck = yon_gtk_builder_get_widget(builder,"SystemComposeCheck"); - widgets->SystemManualEntry = yon_gtk_builder_get_widget(builder,"SystemManualEntry"); + widgets->KeyboardModelCombo = yon_gtk_builder_get_widget(builder,"KeyboardModelCombo"); + widgets->DefaultLayoutRadio = yon_gtk_builder_get_widget(builder,"DefaultLayoutRadio"); + widgets->ManualLayoutRadio = yon_gtk_builder_get_widget(builder,"ManualLayoutRadio"); + widgets->LayoutTree = yon_gtk_builder_get_widget(builder,"LayoutTree"); + widgets->LayoutAddButton = yon_gtk_builder_get_widget(builder,"LayoutAddButton"); + widgets->LayoutRemoveButton = yon_gtk_builder_get_widget(builder,"LayoutRemoveButton"); + widgets->LayoutChangingCombo = yon_gtk_builder_get_widget(builder,"LayoutChangingCombo"); + widgets->OptionsTree = yon_gtk_builder_get_widget(builder,"OptionsTree"); + widgets->OptionsEditButton = yon_gtk_builder_get_widget(builder,"OptionsEditButton"); + widgets->ScrollLockCheck = yon_gtk_builder_get_widget(builder,"ScrollLockCheck"); + widgets->ComposeCheck = yon_gtk_builder_get_widget(builder,"ComposeCheck"); + widgets->ManualEntry = yon_gtk_builder_get_widget(builder,"ManualEntry"); widgets->NumlockCombo = yon_gtk_builder_get_widget(builder,"NumlockCombo"); - widgets->ConsoleList = GTK_LIST_STORE(gtk_builder_get_object(builder,"ConsoleList")); - widgets->SystemList = GTK_LIST_STORE(gtk_builder_get_object(builder,"SystemList")); + widgets->TTYLayoutCombo = yon_gtk_builder_get_widget(builder,"TTYLayoutCombo"); + widgets->LayoutsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"LayoutsList")); /* Widget registration for config monitoring | Регистрация виджетов для мониторинга конфига */ @@ -436,9 +450,9 @@ void yon_main_window_complete(main_window *widgets){ /* Signal connection | Присоединение сигналов */ - g_signal_connect(G_OBJECT(widgets->SystemLayoutAddButton),"clicked",G_CALLBACK(on_system_layouts_add),widgets); - g_signal_connect(G_OBJECT(widgets->SystemLayoutRemoveButton),"clicked",G_CALLBACK(on_system_layouts_remove),widgets); - g_signal_connect(G_OBJECT(widgets->SystemKeyboardModelCombo),"changed",G_CALLBACK(on_model_changed),widgets); + g_signal_connect(G_OBJECT(widgets->LayoutAddButton),"clicked",G_CALLBACK(on_system_layouts_add),widgets); + g_signal_connect(G_OBJECT(widgets->LayoutRemoveButton),"clicked",G_CALLBACK(on_system_layouts_remove),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardModelCombo),"changed",G_CALLBACK(on_model_changed),widgets); // g_signal_connect(G_OBJECT(widgets->SystemKeyboardOptionsCombo),"clicked",G_CALLBACK(on_options_open),widgets); g_signal_connect(G_OBJECT(widgets->NumlockCombo),"changed",G_CALLBACK(on_num_lock_changed),widgets); } @@ -454,6 +468,8 @@ void yon_main_window_complete(main_window *widgets){ yon_root_button_setup((template_main_window*)widgets,main_config.launch_arguments,main_config.launch_size); yon_save_window_set_postsave_function(on_save_done,widgets); + gtk_tree_view_column_clicked(GTK_TREE_VIEW_COLUMN(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->LayoutTree),0))); + g_hash_table_foreach(main_config.layouts,(GHFunc)yon_layout_build,widgets); on_config_local_load(NULL,widgets); } diff --git a/source/ubl-settings-keyboard.h b/source/ubl-settings-keyboard.h index 77791a8..c25895d 100644 --- a/source/ubl-settings-keyboard.h +++ b/source/ubl-settings-keyboard.h @@ -50,6 +50,25 @@ #define get_models_command "sed '/<\\/modelList>/q' /usr/share/X11/xkb/rules/base.xml | grep -E '^ {8,8}|^ {8,8}'|sed -e 's/ *//g' -e 's,,,g' -e 's/ *//g' -e 's,,,g'" #define layouts_path "resource:///com/ublinux/csv/layouts.csv" +#define layouts_command "xkbcli list --load-exotic | awk \"\ +layout && /description:/ {\ + match(\\$0, /: *(.*)/, matches);\ + description = matches[1];\ + printf \\\"%s|%s|%s\\\\n\\\", layout, variant, description;\ + layout = \\\"\\\"; variant = \\\"\\\";\ +}\ +/layout:/ {\ + match(\\$0, /: *'([^']+)'/, matches);\ + l = matches[1];\ + layout = layouts[l] = l;\ +}\ +/variant:/ {\ + match(\\$0, /: *'([^']+)'/, matches);\ + variant = matches[1];\ +}\ +\" | sort -u\ +" + typedef char* string; __attribute__((unused)) static \ @@ -61,36 +80,33 @@ typedef struct { config_str launch_arguments; int launch_size; char *options; - GtkListStore *layouts_list; + GtkTreeStore *layouts_store; GtkListStore *options_list; GtkListStore *models_list; + GHashTable *layouts; + int layouts_size; + config_str layouts_list; } config; typedef struct { template_window_fields - GtkWidget *ConsoleNumlockCombo; - GtkWidget *ConsoleDefaultLayoutRadio; - GtkWidget *ConsoleManualLayoutRadio; - GtkWidget *ConsoleLayoutTree; - GtkWidget *ConsoleLayoutAddButton; - GtkWidget *ConsoleLayoutRemoveButton; - GtkWidget *ConsoleScrollLockCheck; - GtkWidget *ConsoleManualEntry; - GtkWidget *SystemKeyboardModelCombo; - GtkWidget *SystemKeyboardOptionsCombo; - GtkWidget *SystemDefaultLayoutRadio; - GtkWidget *SystemManualLayoutRadio; - GtkWidget *SystemLayoutTree; - GtkWidget *SystemLayoutAddButton; - GtkWidget *SystemLayoutRemoveButton; - GtkWidget *SystemScrollLockCheck; - GtkWidget *SystemComposeCheck; - GtkWidget *SystemManualEntry; + GtkWidget *KeyboardModelCombo; + GtkWidget *DefaultLayoutRadio; + GtkWidget *ManualLayoutRadio; + GtkWidget *LayoutTree; + GtkWidget *LayoutAddButton; + GtkWidget *LayoutRemoveButton; + GtkWidget *LayoutChangingCombo; + GtkWidget *OptionsTree; + GtkWidget *OptionsEditButton; + GtkWidget *ScrollLockCheck; + GtkWidget *ComposeCheck; + GtkWidget *ManualEntry; GtkWidget *NumlockCombo; + GtkWidget *TTYLayoutCombo; GtkTreeModelFilter *layoutsFilter; - GtkListStore *ConsoleList; - GtkListStore *SystemList; + GtkListStore *LayoutsList; } main_window; @@ -153,4 +169,5 @@ void on_system_layouts_add(GtkWidget *, main_window *widgets); void yon_layouts_add(GtkTreeView *tree, GtkListStore *cur_list, main_window *widgets); void yon_layouts_remove(GtkTreeView *tree, GtkListStore *cur_list, main_window *widgets); void on_system_layouts_remove(GtkWidget *, main_window *widgets); -void yon_config_init(); \ No newline at end of file +void yon_config_init(); +void yon_layout_build(char *key, dictionary *value, main_window *widgets); \ No newline at end of file diff --git a/ubl-settings-keyboard-layouts.glade b/ubl-settings-keyboard-layouts.glade index f36fbe5..75ae4f3 100644 --- a/ubl-settings-keyboard-layouts.glade +++ b/ubl-settings-keyboard-layouts.glade @@ -12,16 +12,6 @@ False process-stop-symbolic - - - - - - - - - - 450 550 @@ -85,7 +75,6 @@ True True - liststore1 False 1 @@ -94,6 +83,7 @@ column + 0 diff --git a/ubl-settings-keyboard.glade b/ubl-settings-keyboard.glade index bad50e4..c0f53d3 100644 --- a/ubl-settings-keyboard.glade +++ b/ubl-settings-keyboard.glade @@ -1,5 +1,5 @@ - - - - True - False - com.ublinux.libublsettingsui-gtk3.increase-symbolic + + + + + + + + + - + True False - com.ublinux.libublsettingsui-gtk3.trash-symbolic + com.ublinux.libublsettingsui-gtk3.edit-symbolic - + True False com.ublinux.libublsettingsui-gtk3.increase-symbolic @@ -46,33 +50,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False com.ublinux.libublsettingsui-gtk3.trash-symbolic - - - - - - - - - - - - liststore1 - - - - - - - - - - - Default - - - - True False @@ -81,6 +58,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True True + never in @@ -118,18 +96,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True False vertical - 5 + 6 True False 5 - + True False - Num Lock on boot: - 0 + Keyboard model: + 1 False @@ -138,15 +116,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - + True False + LayoutsList 0 - - Default - On - Off - + 1 + + + + 0 + + True @@ -167,42 +148,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False 5 - + True False - vertical - 5 - - - Default layout - True - True - False - True - True - - - False - True - 0 - - - - - Manual - True - True - False - True - True - ConsoleDefaultLayoutRadio - - - False - True - 1 - - + start + Keyboard model: + 1 False @@ -210,26 +161,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 0 - - - True - True - in - 100 - 150 - - - True - True - - - - - True - True - 1 - - True @@ -237,14 +168,40 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. vertical 5 - + True - True - True - image5 - + False + 10 + + + Default layout + True + True + False + True + True + + + False + True + 0 + + + + + Manual + True + True + False + True + DefaultLayoutRadio + + + False + True + 1 + + False @@ -253,14 +210,111 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - + True - True - True - image4 - + False + 5 + + + True + True + in + 100 + 150 + + + True + True + LayoutsList + False + + + + + + column + 0 + + + + 0 + + + + + + + column + + + + + + + + column + + + + 1 + + + + + + + + + True + True + 0 + + + + + True + False + vertical + 5 + + + True + True + True + image2 + + + + False + True + 0 + + + + + True + True + True + image6 + + + + False + True + 1 + + + + + False + True + 1 + + False @@ -269,55 +323,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - False - True - 2 - - - - - False - True - 1 - - - - - Scroll Lock indication when switching layouts - True - True - False - True - - - False - True - 2 - - - - - True - False - 5 - - - True - False - Manual input: - - - False - True - 0 - - - - - True - True - True True @@ -328,57 +333,20 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 3 + 1 - - - - - - - True - False - Console - - - - - False - True - 0 - - - - - True - False - 0.019999999552965164 - in - - - True - False - 5 - 5 - 5 - - - True - False - vertical - 6 True False 5 - + True False - Keyboard model: - 0 + Changing the layout: + 1 False @@ -387,18 +355,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - + True False - liststore2 0 - 1 - - - - 0 - - + + Default + True @@ -410,7 +373,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 0 + 2 @@ -419,10 +382,24 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False 5 - + True False - Keyboard options: + vertical + 5 + + + True + False + Additional options: + 1 + + + False + True + 0 + + False @@ -431,13 +408,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - + True - False - 0 - - Default - + True + in + + + True + True + + + + + True @@ -445,18 +428,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 1 - - - False - True - 1 - - - - - True - False - 5 True @@ -464,13 +435,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. vertical 5 - - Default layout + True True - False - True - True + True + image1 + False @@ -478,46 +450,36 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 0 - - - Manual - True - True - False - True - ConsoleDefaultLayoutRadio - - - False - True - 1 - - False True - 0 + 2 + + + False + True + 3 + + + + + True + False + 5 - + True - True - in - 100 - 150 - - - True - True - - + False + start + 1 - True + False True - 1 + 0 @@ -527,14 +489,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. vertical 5 - + + Scroll Lock indication when switching layouts True True - True - image2 - + False + True False @@ -543,14 +503,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - + + Set Compose (Multi_Key) to the right Win key True True - True - image6 - + False + True False @@ -562,14 +520,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 2 + 1 False True - 2 + 4 @@ -578,12 +536,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False 5 - - Scroll Lock indication when switching layouts + True - True - False - True + False + Manual input: + 1 False @@ -592,15 +549,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Set Compose (Multi_Key) to the right Win key + True True - False - True - False + True True 1 @@ -609,7 +563,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 3 + 5 @@ -618,10 +572,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False 5 - + True False - Manual input: + Numlock: + 1 False @@ -630,9 +585,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - + True - True + False + 0 + + Default + True @@ -644,7 +603,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 4 + 6 @@ -662,7 +621,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True True - 1 + 0 @@ -684,10 +643,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False 5 - + True False - Numlock: + Secondary layout: + 1 False @@ -696,13 +656,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - + True False - 0 - - Default - True @@ -718,7 +674,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True False - Additional + TTY layout @@ -740,6 +696,31 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + + + + + + + + + + + + + + + + + + + + + + + liststore1 + True False