From 843a761304c0838cdeea1436a1976d17ffd671dc Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 10 Nov 2025 13:15:46 +0600 Subject: [PATCH] Improvements, fixes --- source/ubl-settings-keyboard-layouts.c | 50 +++++++++++- source/ubl-settings-keyboard-options.c | 107 ++++++++++--------------- source/ubl-settings-keyboard.c | 51 +++++++++++- source/ubl-settings-keyboard.h | 13 ++- ubl-settings-keyboard-options.glade | 39 +++++++++ ubl-settings-keyboard.glade | 106 +++++++++++++----------- 6 files changed, 248 insertions(+), 118 deletions(-) diff --git a/source/ubl-settings-keyboard-layouts.c b/source/ubl-settings-keyboard-layouts.c index e165df1..0fa9e99 100644 --- a/source/ubl-settings-keyboard-layouts.c +++ b/source/ubl-settings-keyboard-layouts.c @@ -185,4 +185,52 @@ void yon_layout_build(layouts_window *window){ } yon_char_parsed_free(layouts,size); -} \ No newline at end of file +} + +void on_layout_move_up(GtkWidget *, main_window *widgets){ + GtkTreeModel *model; + GtkTreeIter iter,*previter; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LayoutTree)),&model,&iter)){ + previter = gtk_tree_iter_copy(&iter); + if (!gtk_tree_model_iter_previous(model,previter)) return; + char *a, *b; + gtk_tree_model_get(model,&iter,0,&a,-1); + gtk_tree_model_get(model,previter,0,&b,-1); + char *layouts = config(keyboard_layout_parameter); + char *temp = yon_char_swap_element(layouts,a,b,","); + yon_config_register(keyboard_layout_parameter,keyboard_layout_parameter_command,temp); + free(temp); + gtk_list_store_swap(widgets->LayoutsList,&iter,previter); + gtk_tree_iter_free(previter); + } +} + +void on_layout_move_down(GtkWidget *, main_window *widgets){ + GtkTreeModel *model; + GtkTreeIter iter,*nextiter; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LayoutTree)),&model,&iter)){ + nextiter = gtk_tree_iter_copy(&iter); + if (!gtk_tree_model_iter_next(model,nextiter)) return; + char *a, *b; + gtk_tree_model_get(model,&iter,0,&a,-1); + gtk_tree_model_get(model,nextiter,0,&b,-1); + char *layouts = config(keyboard_layout_parameter); + char *temp = yon_char_swap_element(layouts,a,b,","); + yon_config_register(keyboard_layout_parameter,keyboard_layout_parameter_command,temp); + free(temp); + gtk_list_store_swap(widgets->LayoutsList,&iter,nextiter); + gtk_tree_iter_free(nextiter); + } +} + +// void on_layout_dnd_inserted(GtkTreeModel *, GtkTreePath* , GtkTreeIter* iter, main_window *widgets){ +// char *target; +// gtk_tree_model_get(GTK_TREE_MODEL(widgets->LayoutsList),iter,0,&target,-1); +// } + +// void on_layout_dnd_deleted(GtkTreeModel *, GtkTreePath* , GtkTreeIter* iter, main_window *widgets){ + +// char *target; +// gtk_tree_model_get(GTK_TREE_MODEL(widgets->LayoutsList),iter,0,&target,-1); +// printf("%s\n",target); +// } \ No newline at end of file diff --git a/source/ubl-settings-keyboard-options.c b/source/ubl-settings-keyboard-options.c index d436677..08e4261 100644 --- a/source/ubl-settings-keyboard-options.c +++ b/source/ubl-settings-keyboard-options.c @@ -1,63 +1,25 @@ #include "ubl-settings-keyboard.h" - - -// void on_options_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*); -// GtkTreeModel *model = GTK_TREE_MODEL(window->list); -// GtkTreeIter iter; -// 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->OptionsEntry),name); -// yon_config_register(options_parameter,options_parameter_command,id); - -// } -// on_subwindow_close(self); -// } - -// void on_options_open(GtkWidget *, main_window *widgets){ -// GtkBuilder *builder = gtk_builder_new_from_resource(glade_layouts_path); -// layouts_window *window = malloc(sizeof(layouts_window)); -// window->Window = yon_gtk_builder_get_widget(builder,"Window"); -// window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); -// window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); -// window->MainTree = yon_gtk_builder_get_widget(builder,"LayoutsTree"); -// window->list = main_config.options_list; -// gtk_tree_view_set_model(GTK_TREE_VIEW(window->MainTree),GTK_TREE_MODEL(window->list)); -// dictionary *dict = NULL; -// gtk_tree_view_remove_column(GTK_TREE_VIEW(window->MainTree),gtk_tree_view_get_column(GTK_TREE_VIEW(window->MainTree),0)); -// yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); -// yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); -// g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); -// g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_options_accept),dict); -// } - -// GList *yon_get_all_selected(GtkTreeView *tree, int column){ -// GtkTreeIter iter; -// GList *list = NULL; -// GtkTreeModel *model = gtk_tree_view_get_model(tree); -// for_iter(model,&iter){ -// int status; -// gtk_tree_model_get(model,&iter,column,&status,-1); -// if (status){ -// GtkTreePath *path = gtk_tree_model_get_path(model,&iter); -// list = g_list_append(list,path); -// } -// } -// return list; -// } - - void on_option_chosen(GtkCellRenderer *, gchar *path, layouts_window *window){ GtkTreeIter iter; GtkTreeIter itar; gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->OptionsFilter),&iter,path); gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(window->OptionsFilter),&itar,&iter); int chosen; - gtk_tree_model_get(GTK_TREE_MODEL(window->OptionsList),&itar,2,&chosen,-1); + char *target; + gtk_tree_model_get(GTK_TREE_MODEL(window->OptionsList),&itar,0,&target,2,&chosen,-1); gtk_list_store_set(GTK_LIST_STORE(window->OptionsList),&itar,2,!chosen,-1); + + char *options_string = yon_char_new(gtk_entry_get_text(GTK_ENTRY(window->OptionsEntry))); + if (!chosen){ + char *temp = yon_char_append_element(options_string,target,","); + gtk_entry_set_text(GTK_ENTRY(window->OptionsEntry),temp); + free(temp); + } else { + char *temp = yon_char_remove_element(options_string,target,","); + gtk_entry_set_text(GTK_ENTRY(window->OptionsEntry),temp); + free(temp); + } } gboolean yon_filter_refilter(GtkTreeModel *model, GtkTreeIter *iter, layouts_window *window){ @@ -106,13 +68,15 @@ void yon_options_setup(layouts_window *window){ int filter_size; config_str filter = NULL; + + char *config_options = config(options_parameter); for (int i=0;iOptionsList,&iter); - gtk_list_store_set(window->OptionsList,&iter,0,parsed[0],1,parsed[1],-1); + gtk_list_store_set(window->OptionsList,&iter,0,parsed[0],1,parsed[1],2,yon_char_check_element(config_options,parsed[0],","),-1); char *str = yon_char_new(parsed[0]); char *type = yon_char_divide_search(str,":",-1); if (yon_char_parsed_check_exist(filter,filter_size,type)==-1){ @@ -134,19 +98,31 @@ void on_options_filter_changed(GtkWidget *, layouts_window *window){ void on_options_accept(GtkWidget *self, layouts_window *window){ main_window *widgets = g_object_get_data(G_OBJECT(window->Window),"widgets"); - GtkTreeModel *model = GTK_TREE_MODEL(window->OptionsList); - GtkTreeIter iter, itar; - char *name, *id; - int status; - for_iter(model,&iter){ - gtk_tree_model_get(model,&iter,0,&id,1,&name,2,&status,-1); - if (status){ - gtk_list_store_append(widgets->OptionsList,&itar); - gtk_list_store_set(widgets->OptionsList,&itar,0,id,1,_(name),-1); - } + // char *main_option = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->LayoutChangingCombo)); + char *options = (char*)gtk_entry_get_text(GTK_ENTRY(window->OptionsEntry)); + if (!yon_char_is_empty(options)){ + // char *full_options = yon_char_unite(!yon_char_is_empty(main_option)?main_option:"",",",options,NULL); + yon_config_register(options_parameter,options_parameter_command,options); + // free(full_options); + // } else if (!yon_char_is_empty(main_option)){ + // yon_config_register(options_parameter,options_parameter_command,main_option); + } else { + yon_config_remove_by_key(options_parameter); } + // GtkTreeModel *model = GTK_TREE_MODEL(window->OptionsList); + // GtkTreeIter iter, itar; + // char *name, *id; + // int status; + // for_iter(model,&iter){ + // gtk_tree_model_get(model,&iter,0,&id,1,&name,2,&status,-1); + // if (status){ + // gtk_list_store_append(widgets->OptionsList,&itar); + // gtk_list_store_set(widgets->OptionsList,&itar,0,id,1,_(name),-1); + // } + // } on_subwindow_close(self); - on_options_save(NULL, widgets); + yon_interface_update(widgets); + // on_options_save(NULL, widgets); } void on_options_save(GtkWidget *,main_window *widgets){ @@ -164,11 +140,9 @@ void on_options_save(GtkWidget *,main_window *widgets){ yon_char_parsed_free(parameter_parsed,parameter_parsed_size); if (!yon_char_is_empty(final_parameter)){ yon_config_register(options_parameter,options_parameter_command,final_parameter); - gtk_entry_set_text(GTK_ENTRY(widgets->ManualEntry),final_parameter); free(final_parameter); } else { yon_config_remove_by_key(options_parameter); - gtk_entry_set_text(GTK_ENTRY(widgets->ManualEntry),""); } } @@ -181,6 +155,7 @@ layouts_window *yon_options_window_new(){ window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); window->MainTree = yon_gtk_builder_get_widget(builder,"OptionsTree"); window->OptionsFilterCombo = yon_gtk_builder_get_widget(builder,"OptionsFilterCombo"); + window->OptionsEntry = yon_gtk_builder_get_widget(builder,"OptionsEntry"); window->OptionsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"OptionsList")); window->OptionsFilter = GTK_TREE_MODEL(gtk_builder_get_object(builder,"OptionsFilter")); window->ChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ChosenCell")); @@ -191,6 +166,8 @@ layouts_window *yon_options_window_new(){ gtk_tree_view_set_model(GTK_TREE_VIEW(window->MainTree),GTK_TREE_MODEL(window->OptionsFilter)); gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(window->OptionsFilter),(GtkTreeModelFilterVisibleFunc)yon_filter_refilter,window,NULL); yon_options_setup(window); + char *parameter_options = config(options_parameter); + gtk_entry_set_text(GTK_ENTRY(window->OptionsEntry),parameter_options); return window; } diff --git a/source/ubl-settings-keyboard.c b/source/ubl-settings-keyboard.c index 78382b5..36a8454 100644 --- a/source/ubl-settings-keyboard.c +++ b/source/ubl-settings-keyboard.c @@ -8,6 +8,7 @@ gboolean yon_interface_update(main_window *widgets){ g_signal_handlers_block_by_func(G_OBJECT(widgets->OptionsEditButton),G_CALLBACK(on_options_open),widgets); g_signal_handlers_block_by_func(G_OBJECT(widgets->NumLockCombo),G_CALLBACK(on_num_lock_changed),widgets); g_signal_handlers_block_by_func(G_OBJECT(widgets->LayoutChangingCombo),G_CALLBACK(on_options_save),widgets); + g_signal_handlers_block_by_func(G_OBJECT(widgets->TTYLayoutCombo),G_CALLBACK(on_tty_changed),widgets); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardModelCombo),0); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NumLockCombo),0); @@ -27,12 +28,35 @@ gboolean yon_interface_update(main_window *widgets){ for(int i=0;iDefaultLayoutsSwitch),1); + } else { + gtk_switch_set_active(GTK_SWITCH(widgets->DefaultLayoutsSwitch),0); + } + + if (yon_char_is_empty(layouts)){ + char *element = yon_char_parsed_check_exist_begins_with(main_config.layouts_list,main_config.layouts_size,"us|"); + if (element){ + int parsed_size; + config_str parsed = yon_char_parse(element,&parsed_size,"|"); + GtkTreeIter iter; + gtk_list_store_append(widgets->LayoutsList,&iter); + gtk_list_store_set(widgets->LayoutsList,&iter,0,parsed[0],2,_(parsed[1]),-1); + yon_char_parsed_free(parsed,parsed_size); + } + } + + char *tty_keymap = config(console_keymap_parameter); + if (!yon_char_is_empty(tty_keymap)){ + gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->TTYLayoutCombo),tty_keymap); + } else { + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->TTYLayoutCombo),0); + } } { gtk_list_store_clear(widgets->OptionsList); char *options = config(options_parameter); if (!yon_char_is_empty(options)){ - gtk_entry_set_text(GTK_ENTRY(widgets->ManualEntry),options); GtkTreeIter iter; int size; config_str parsed = yon_char_parse(options,&size,","); @@ -48,8 +72,6 @@ gboolean yon_interface_update(main_window *widgets){ yon_char_parsed_free(option_parsed,option_parsed_size); } yon_char_parsed_free(parsed,size); - } else { - gtk_entry_set_text(GTK_ENTRY(widgets->ManualEntry),""); } } { @@ -64,6 +86,7 @@ gboolean yon_interface_update(main_window *widgets){ g_signal_handlers_unblock_by_func(G_OBJECT(widgets->OptionsEditButton),G_CALLBACK(on_options_open),widgets); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->NumLockCombo),G_CALLBACK(on_num_lock_changed),widgets); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->LayoutChangingCombo),G_CALLBACK(on_options_save),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->TTYLayoutCombo),G_CALLBACK(on_tty_changed),widgets); return G_SOURCE_REMOVE; } @@ -135,6 +158,7 @@ void yon_config_init(){ int options_size; config_str options = yon_config_load(command_full,&options_size); for(int i=0;iTTYLayoutCombo)); + if (!yon_char_is_empty(tty_layout)){ + yon_config_register(console_keymap_parameter,console_keymap_parameter_command,tty_layout); + } else { + yon_config_remove_by_key(console_keymap_parameter); + } +} + void yon_main_window_complete(main_window *widgets){ widgets = yon_remalloc(widgets,sizeof(main_window)); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path); @@ -193,13 +227,14 @@ void yon_main_window_complete(main_window *widgets){ 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->LayoutMoveUpButton = yon_gtk_builder_get_widget(builder,"LayoutMoveUpButton"); + widgets->LayoutMoveDownButton = yon_gtk_builder_get_widget(builder,"LayoutMoveDownButton"); 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->OptionsRemoveButton = yon_gtk_builder_get_widget(builder,"OptionsRemoveButton"); widgets->ComposeSwitch = yon_gtk_builder_get_widget(builder,"ComposeSwitch"); widgets->ScrollLockSwitch = yon_gtk_builder_get_widget(builder,"ScrollLockSwitch"); - widgets->ManualEntry = yon_gtk_builder_get_widget(builder,"ManualEntry"); widgets->NumLockCombo = yon_gtk_builder_get_widget(builder,"NumLockCombo"); widgets->TTYLayoutCombo = yon_gtk_builder_get_widget(builder,"TTYLayoutCombo"); widgets->LayoutsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"LayoutsList")); @@ -212,6 +247,7 @@ void yon_main_window_complete(main_window *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->TTYLayoutCombo),"changed",G_CALLBACK(on_tty_changed),widgets); g_signal_connect(G_OBJECT(widgets->KeyboardModelCombo),"changed",G_CALLBACK(on_model_changed),widgets); g_signal_connect(G_OBJECT(widgets->OptionsEditButton),"clicked",G_CALLBACK(on_options_open),widgets); g_signal_connect(G_OBJECT(widgets->OptionsRemoveButton),"clicked",G_CALLBACK(on_option_remove),widgets); @@ -219,10 +255,17 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->LayoutChangingCombo),"changed",G_CALLBACK(on_options_save),widgets); g_signal_connect(G_OBJECT(widgets->ComposeSwitch),"state-set",G_CALLBACK(on_compose_switch),widgets); g_signal_connect(G_OBJECT(widgets->ScrollLockSwitch),"state-set",G_CALLBACK(on_scroll_lock_switch),widgets); + // g_signal_connect(G_OBJECT(widgets->LayoutsList),"row-inserted",G_CALLBACK(on_layout_dnd_inserted),widgets); + // g_signal_connect(G_OBJECT(widgets->LayoutsList),"row-deleted",G_CALLBACK(on_layout_dnd_deleted),widgets); g_signal_connect(G_OBJECT(widgets->DefaultLayoutsSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->LayoutTree); g_signal_connect(G_OBJECT(widgets->DefaultLayoutsSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->LayoutAddButton); g_signal_connect(G_OBJECT(widgets->DefaultLayoutsSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->LayoutRemoveButton); + g_signal_connect(G_OBJECT(widgets->DefaultLayoutsSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->LayoutMoveUpButton); + g_signal_connect(G_OBJECT(widgets->DefaultLayoutsSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->LayoutMoveDownButton); + + g_signal_connect(G_OBJECT(widgets->LayoutMoveUpButton),"clicked",G_CALLBACK(on_layout_move_up),widgets); + g_signal_connect(G_OBJECT(widgets->LayoutMoveDownButton),"clicked",G_CALLBACK(on_layout_move_down),widgets); g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets); g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets); diff --git a/source/ubl-settings-keyboard.h b/source/ubl-settings-keyboard.h index a4663e6..fbe1dd3 100644 --- a/source/ubl-settings-keyboard.h +++ b/source/ubl-settings-keyboard.h @@ -36,6 +36,8 @@ #define options_parameter_command "ubconfig --source global get keyboard XKBOPTIONS" #define num_lock_boot_parameter "NUMLOCK" #define num_lock_boot_parameter_command "ubconfig --source global get keyboard NUMLOCK" +#define console_keymap_parameter "CONSOLE_KEYMAP" +#define console_keymap_parameter_command "ubconfig --source global get keyboard CONSOLE_KEYMAP" #define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," get keyboard XKBMODEL XKBLAYOUT XKBOPTIONS NUMLOCK",NULL) #define config_get_local_command "ubconfig --source system get keyboard XKBMODEL XKBLAYOUT XKBOPTIONS NUMLOCK" @@ -143,13 +145,14 @@ typedef struct { GtkWidget *LayoutTree; GtkWidget *LayoutAddButton; GtkWidget *LayoutRemoveButton; + GtkWidget *LayoutMoveUpButton; + GtkWidget *LayoutMoveDownButton; GtkWidget *LayoutChangingCombo; GtkWidget *OptionsTree; GtkWidget *OptionsEditButton; GtkWidget *OptionsRemoveButton; GtkWidget *ComposeSwitch; GtkWidget *ScrollLockSwitch; - GtkWidget *ManualEntry; GtkWidget *NumLockCombo; GtkWidget *TTYLayoutCombo; GtkListStore *LayoutsList; @@ -175,6 +178,7 @@ typedef struct { GtkWidget *CancelButton; GtkWidget *AcceptButton; GtkWidget *OptionsFilterCombo; + GtkWidget *OptionsEntry; GtkCellRenderer *ChosenCell; GtkTreeStore *list; GtkListStore *OptionsList; @@ -232,4 +236,9 @@ void on_option_chosen(GtkCellRenderer *, gchar *path, layouts_window *window); void on_options_save(GtkWidget *,main_window *widgets); void on_compose_switch(GtkWidget *,int status,main_window *widgets); void on_scroll_lock_switch(GtkWidget *,int status,main_window *widgets); -void on_option_remove(GtkWidget*, main_window *widgets); \ No newline at end of file +void on_option_remove(GtkWidget*, main_window *widgets); +void on_layout_move_down(GtkWidget *, main_window *widgets); +void on_layout_move_up(GtkWidget *, main_window *widgets); +void on_layout_dnd_inserted(GtkTreeModel *, GtkTreePath* path, GtkTreeIter* iter, main_window *widgets); +void on_layout_dnd_deleted(GtkTreeModel *, GtkTreePath* path, GtkTreeIter* iter, main_window *widgets); +void on_tty_changed(GtkWidget *, main_window *widgets); \ No newline at end of file diff --git a/ubl-settings-keyboard-options.glade b/ubl-settings-keyboard-options.glade index 0b04912..f0e5d48 100644 --- a/ubl-settings-keyboard-options.glade +++ b/ubl-settings-keyboard-options.glade @@ -84,6 +84,9 @@ True True OptionsList + + + @@ -128,6 +131,42 @@ 1 + + + True + False + 5 + + + True + False + Options: + + + False + True + 0 + + + + + True + True + grp:lalt_lshift_toggle,grp_led:scroll,compose:rwin + + + True + True + 1 + + + + + False + True + 2 + + True diff --git a/ubl-settings-keyboard.glade b/ubl-settings-keyboard.glade index c3f410d..0b0b231 100644 --- a/ubl-settings-keyboard.glade +++ b/ubl-settings-keyboard.glade @@ -58,6 +58,16 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False com.ublinux.libublsettingsui-gtk3.trash-symbolic + + True + False + com.ublinux.libublsettingsui-gtk3.up-symbolic + + + True + False + com.ublinux.libublsettingsui-gtk3.down-symbolic + True False @@ -227,7 +237,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True LayoutsList False - True both @@ -280,6 +289,40 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False vertical 5 + + + True + False + True + True + image4 + + + + False + True + 0 + + + + + True + False + True + True + image5 + + + + False + True + 1 + + True @@ -294,7 +337,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 0 + 2 @@ -311,7 +354,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 1 + 3 @@ -616,43 +659,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 4 - - - True - False - 5 - - - True - False - Manual input: - 1 - - - False - True - 0 - - - - - True - True - grp:lalt_lshift_toggle,grp_led:scroll,compose:rwin - - - True - True - 1 - - - - - False - True - 5 - - True @@ -745,9 +751,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - + True False + LayoutsList + 0 + 0 + + + + 2 + + True @@ -787,14 +802,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - - - - + + + +