geany  1.38
About: Geany is a text editor (using GTK2) with basic features of an integrated development environment (syntax highlighting, code folding, symbol name auto-completion, ...). F: office T: editor programming GTK+ IDE
  Fossies Dox: geany-1.38.tar.bz2  ("unofficial" and yet experimental doxygen-generated source code documentation)  

keybindings.c File Reference
#include "keybindings.h"
#include "app.h"
#include "build.h"
#include "callbacks.h"
#include "documentprivate.h"
#include "filetypes.h"
#include "geanyobject.h"
#include "keybindingsprivate.h"
#include "main.h"
#include "msgwindow.h"
#include "navqueue.h"
#include "notebook.h"
#include "prefs.h"
#include "sciwrappers.h"
#include "sidebar.h"
#include "support.h"
#include "symbols.h"
#include "toolbar.h"
#include "tools.h"
#include "ui_utils.h"
#include "utils.h"
#include "vte.h"
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include <string.h>
Include dependency graph for keybindings.c:

Go to the source code of this file.

Macros

#define ADD_KB_GROUP(group_id, label, callback)
 
#define GEANY_ADD_POPUP_ACCEL(kb_id, wid)    add_menu_accel(group, kb_id, ui_lookup_widget(main_widgets.editor_menu, G_STRINGIFY(wid)))
 

Typedefs

typedef void(* KBItemCallback) (GeanyKeyGroup *group, GeanyKeyBinding *kb, gpointer user_data)
 

Functions

static gboolean on_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data)
 
static gboolean check_current_word (GeanyDocument *doc, gboolean sci_word)
 
static gboolean read_current_word (GeanyDocument *doc, gboolean sci_word)
 
static gchar * get_current_word_or_sel (GeanyDocument *doc, gboolean sci_word)
 
static gboolean cb_func_file_action (guint key_id)
 
static gboolean cb_func_project_action (guint key_id)
 
static gboolean cb_func_editor_action (guint key_id)
 
static gboolean cb_func_select_action (guint key_id)
 
static gboolean cb_func_format_action (guint key_id)
 
static gboolean cb_func_insert_action (guint key_id)
 
static gboolean cb_func_search_action (guint key_id)
 
static gboolean cb_func_goto_action (guint key_id)
 
static gboolean cb_func_switch_action (guint key_id)
 
static gboolean cb_func_clipboard_action (guint key_id)
 
static gboolean cb_func_document_action (guint key_id)
 
static gboolean cb_func_view_action (guint key_id)
 
static void cb_func_menu_help (guint key_id)
 
static void cb_func_menu_preferences (guint key_id)
 
static void cb_func_menu_fullscreen (guint key_id)
 
static void cb_func_menu_messagewindow (guint key_id)
 
static void cb_func_menu_opencolorchooser (guint key_id)
 
static void cb_func_switch_tableft (guint key_id)
 
static void cb_func_switch_tabright (guint key_id)
 
static void cb_func_switch_tablastused (guint key_id)
 
static void cb_func_move_tab (guint key_id)
 
static void add_popup_menu_accels (void)
 
GdkModifierType keybindings_get_modifiers (GdkModifierType mods)
 Gets significant modifiers from a GdkModifierType mask. More...
 
GeanyKeyBindingkeybindings_get_item (GeanyKeyGroup *group, gsize key_id)
 Looks up a keybinding item. More...
 
GeanyKeyBindingkeybindings_set_item (GeanyKeyGroup *group, gsize key_id, GeanyKeyCallback callback, guint key, GdkModifierType mod, const gchar *kf_name, const gchar *label, GtkWidget *menu_item)
  Fills a GeanyKeyBinding struct item. More...
 
GeanyKeyBindingkeybindings_set_item_full (GeanyKeyGroup *group, gsize key_id, guint key, GdkModifierType mod, const gchar *kf_name, const gchar *label, GtkWidget *menu_item, GeanyKeyBindingFunc cb, gpointer pdata, GDestroyNotify destroy_notify)
 Creates a new keybinding using a GeanyKeyBindingFunc and attaches it to a keybinding group. More...
 
static void free_key_binding (gpointer item)
 
static void add_kb_group (GeanyKeyGroup *group, const gchar *name, const gchar *label, GeanyKeyGroupCallback callback, gboolean plugin)
 
GeanyKeyGroupkeybindings_get_core_group (guint id)
 
static void add_kb (GeanyKeyGroup *group, gsize key_id, GeanyKeyCallback callback, guint key, GdkModifierType mod, const gchar *kf_name, const gchar *label, const gchar *widget_name)
 
static void init_default_kb (void)
 
static void free_key_group (gpointer item)
 
void keybindings_init (void)
 
static void keybindings_foreach (KBItemCallback cb, gpointer user_data)
 
static void load_kb (GeanyKeyGroup *group, GeanyKeyBinding *kb, gpointer user_data)
 
static void load_user_kb (void)
 
static void apply_kb_accel (GeanyKeyGroup *group, GeanyKeyBinding *kb, gpointer user_data)
 
void keybindings_load_keyfile (void)
 Reloads keybinding settings from configuration file. More...
 
static void add_menu_accel (GeanyKeyGroup *group, guint kb_id, GtkWidget *menuitem)
 
static void set_keyfile_kb (GeanyKeyGroup *group, GeanyKeyBinding *kb, gpointer user_data)
 
void keybindings_write_to_file (void)
 
void keybindings_free (void)
 
gchar * keybindings_get_label (GeanyKeyBinding *kb)
 
static void fill_shortcut_labels_treeview (GtkWidget *tree)
 
static GtkWidget * create_dialog (void)
 
static void key_dialog_show_prefs (void)
 
void keybindings_dialog_show_prefs_scroll (const gchar *name)
 
static void on_dialog_response (GtkWidget *dialog, gint response, gpointer user_data)
 
void keybindings_show_shortcuts (void)
 
static gboolean check_fixed_kb (guint keyval, guint state)
 
static gboolean check_snippet_completion (GeanyDocument *doc)
 
static void trigger_button_event (GtkWidget *widget, guint32 event_time)
 
static gboolean check_menu_key (GeanyDocument *doc, guint keyval, guint state, guint32 event_time)
 
static guint key_kp_translate (guint key_in)
 
gboolean keybindings_check_event (GdkEventKey *ev, GeanyKeyBinding *kb)
 
static gboolean run_kb (GeanyKeyBinding *kb, GeanyKeyGroup *group)
 
GeanyKeyBindingkeybindings_lookup_item (guint group_id, guint key_id)
 
void keybindings_send_command (guint group_id, guint key_id)
 Mimics a (built-in only) keybinding action. More...
 
static void cb_func_menu_help (G_GNUC_UNUSED guint key_id)
 
static void cb_func_menu_opencolorchooser (G_GNUC_UNUSED guint key_id)
 
static void cb_func_menu_fullscreen (G_GNUC_UNUSED guint key_id)
 
static void cb_func_menu_messagewindow (G_GNUC_UNUSED guint key_id)
 
static void focus_sidebar (void)
 
static GtkWidget * find_focus_widget (GtkWidget *widget)
 
static void focus_msgwindow (void)
 
static void switch_notebook_page (gint direction)
 
static void cb_func_switch_tableft (G_GNUC_UNUSED guint key_id)
 
static void cb_func_switch_tabright (G_GNUC_UNUSED guint key_id)
 
static void cb_func_switch_tablastused (G_GNUC_UNUSED guint key_id)
 
static void goto_matching_brace (GeanyDocument *doc)
 
static void goto_tag (GeanyDocument *doc, gboolean definition)
 
static void duplicate_lines (GeanyEditor *editor)
 
static void delete_lines (GeanyEditor *editor)
 
static void join_lines (GeanyEditor *editor)
 
static gint get_reflow_column (GeanyEditor *editor)
 
static gint split_line (GeanyEditor *editor, gint column)
 
static void reflow_lines (GeanyEditor *editor, gint column)
 
static void sci_deselect_last_newline (ScintillaObject *sci)
 
static void reflow_paragraph (GeanyEditor *editor)
 
static void join_paragraph (GeanyEditor *editor)
 
static void insert_line_after (GeanyEditor *editor)
 
static void insert_line_before (GeanyEditor *editor)
 
void keybindings_update_combo (GeanyKeyBinding *kb, guint key, GdkModifierType mods)
 
GeanyKeyGroupkeybindings_set_group (GeanyKeyGroup *group, const gchar *section_name, const gchar *label, gsize count, GeanyKeyGroupCallback callback)
 
void keybindings_free_group (GeanyKeyGroup *group)
 

Variables

GPtrArray * keybinding_groups
 
static const gchar keybindings_keyfile_group_name [] = "Bindings"
 
static GeanyKeyBinding binding_ids [GEANY_KEYS_COUNT]
 
static GtkAccelGroup * kb_accel_group = NULL
 
static const gboolean swap_alt_tab_order = FALSE
 
static GtkWidget * key_dialog = NULL
 

Macro Definition Documentation

◆ ADD_KB_GROUP

#define ADD_KB_GROUP (   group_id,
  label,
  callback 
)
Value:
const gchar * label
Definition: build.c:2676
static const gchar keybindings_keyfile_group_name[]
Definition: keybindings.c:65
GeanyKeyGroup * keybindings_get_core_group(guint id)
Definition: keybindings.c:278
static void add_kb_group(GeanyKeyGroup *group, const gchar *name, const gchar *label, GeanyKeyGroupCallback callback, gboolean plugin)
Definition: keybindings.c:261

Definition at line 300 of file keybindings.c.

◆ GEANY_ADD_POPUP_ACCEL

#define GEANY_ADD_POPUP_ACCEL (   kb_id,
  wid 
)     add_menu_accel(group, kb_id, ui_lookup_widget(main_widgets.editor_menu, G_STRINGIFY(wid)))

Definition at line 862 of file keybindings.c.

Typedef Documentation

◆ KBItemCallback

typedef void(* KBItemCallback) (GeanyKeyGroup *group, GeanyKeyBinding *kb, gpointer user_data)

Definition at line 756 of file keybindings.c.

Function Documentation

◆ add_kb()

static void add_kb ( GeanyKeyGroup group,
gsize  key_id,
GeanyKeyCallback  callback,
guint  key,
GdkModifierType  mod,
const gchar *  kf_name,
const gchar *  label,
const gchar *  widget_name 
)
static

◆ add_kb_group()

static void add_kb_group ( GeanyKeyGroup group,
const gchar *  name,
const gchar *  label,
GeanyKeyGroupCallback  callback,
gboolean  plugin 
)
static

Definition at line 261 of file keybindings.c.

References free_key_binding(), group, keybinding_groups, label, name, StashGroup::name, and NULL.

Referenced by keybindings_set_group().

◆ add_menu_accel()

static void add_menu_accel ( GeanyKeyGroup group,
guint  kb_id,
GtkWidget *  menuitem 
)
static

◆ add_popup_menu_accels()

◆ apply_kb_accel()

static void apply_kb_accel ( GeanyKeyGroup group,
GeanyKeyBinding kb,
gpointer  user_data 
)
static

◆ cb_func_clipboard_action()

◆ cb_func_document_action()

◆ cb_func_editor_action()

static gboolean cb_func_editor_action ( guint  key_id)
static

◆ cb_func_file_action()

◆ cb_func_format_action()

◆ cb_func_goto_action()

◆ cb_func_insert_action()

◆ cb_func_menu_fullscreen() [1/2]

static void cb_func_menu_fullscreen ( G_GNUC_UNUSED guint  key_id)
static

Definition at line 1641 of file keybindings.c.

References main_widgets, ui_lookup_widget(), and GeanyMainWidgets::window.

◆ cb_func_menu_fullscreen() [2/2]

static void cb_func_menu_fullscreen ( guint  key_id)
static

Referenced by init_default_kb().

◆ cb_func_menu_help() [1/2]

static void cb_func_menu_help ( G_GNUC_UNUSED guint  key_id)
static

Definition at line 1535 of file keybindings.c.

References NULL, and on_help1_activate().

◆ cb_func_menu_help() [2/2]

static void cb_func_menu_help ( guint  key_id)
static

Referenced by init_default_kb().

◆ cb_func_menu_messagewindow() [1/2]

static void cb_func_menu_messagewindow ( G_GNUC_UNUSED guint  key_id)
static

Definition at line 1650 of file keybindings.c.

References main_widgets, ui_lookup_widget(), and GeanyMainWidgets::window.

◆ cb_func_menu_messagewindow() [2/2]

static void cb_func_menu_messagewindow ( guint  key_id)
static

Referenced by init_default_kb().

◆ cb_func_menu_opencolorchooser() [1/2]

static void cb_func_menu_opencolorchooser ( G_GNUC_UNUSED guint  key_id)
static

Definition at line 1609 of file keybindings.c.

References NULL, and on_show_color_chooser1_activate().

◆ cb_func_menu_opencolorchooser() [2/2]

static void cb_func_menu_opencolorchooser ( guint  key_id)
static

Referenced by init_default_kb().

◆ cb_func_menu_preferences()

static void cb_func_menu_preferences ( guint  key_id)
static

◆ cb_func_move_tab()

◆ cb_func_project_action()

◆ cb_func_search_action()

◆ cb_func_select_action()

◆ cb_func_switch_action()

◆ cb_func_switch_tablastused() [1/2]

static void cb_func_switch_tablastused ( G_GNUC_UNUSED guint  key_id)
static

Definition at line 1875 of file keybindings.c.

References notebook_switch_tablastused().

◆ cb_func_switch_tablastused() [2/2]

static void cb_func_switch_tablastused ( guint  key_id)
static

Referenced by init_default_kb().

◆ cb_func_switch_tableft() [1/2]

static void cb_func_switch_tableft ( G_GNUC_UNUSED guint  key_id)
static

Definition at line 1863 of file keybindings.c.

References switch_notebook_page().

◆ cb_func_switch_tableft() [2/2]

static void cb_func_switch_tableft ( guint  key_id)
static

Referenced by init_default_kb().

◆ cb_func_switch_tabright() [1/2]

static void cb_func_switch_tabright ( G_GNUC_UNUSED guint  key_id)
static

Definition at line 1869 of file keybindings.c.

References switch_notebook_page().

◆ cb_func_switch_tabright() [2/2]

static void cb_func_switch_tabright ( guint  key_id)
static

Referenced by init_default_kb().

◆ cb_func_view_action()

◆ check_current_word()

static gboolean check_current_word ( GeanyDocument doc,
gboolean  sci_word 
)
static

Definition at line 1678 of file keybindings.c.

References read_current_word(), and utils_beep().

Referenced by cb_func_editor_action().

◆ check_fixed_kb()

static gboolean check_fixed_kb ( guint  keyval,
guint  state 
)
static

◆ check_menu_key()

static gboolean check_menu_key ( GeanyDocument doc,
guint  keyval,
guint  state,
guint32  event_time 
)
static

◆ check_snippet_completion()

◆ create_dialog()

static GtkWidget * create_dialog ( void  )
static

◆ delete_lines()

static void delete_lines ( GeanyEditor editor)
static

Definition at line 2095 of file keybindings.c.

References editor_select_lines(), GeanyEditor::sci, and sci_clear().

Referenced by cb_func_editor_action().

◆ duplicate_lines()

static void duplicate_lines ( GeanyEditor editor)
static

◆ fill_shortcut_labels_treeview()

static void fill_shortcut_labels_treeview ( GtkWidget *  tree)
static

◆ find_focus_widget()

static GtkWidget * find_focus_widget ( GtkWidget *  widget)
static

Definition at line 1713 of file keybindings.c.

References find_focus_widget(), and NULL.

Referenced by find_focus_widget(), and focus_msgwindow().

◆ focus_msgwindow()

static void focus_msgwindow ( void  )
static

Definition at line 1738 of file keybindings.c.

References find_focus_widget(), msgwindow, ui_prefs, and utils_beep().

Referenced by cb_func_switch_action().

◆ focus_sidebar()

static void focus_sidebar ( void  )
static

Definition at line 1700 of file keybindings.c.

References main_widgets, GeanyMainWidgets::sidebar_notebook, and ui_prefs.

Referenced by cb_func_switch_action().

◆ free_key_binding()

static void free_key_binding ( gpointer  item)
static

◆ free_key_group()

static void free_key_group ( gpointer  item)
static

Definition at line 723 of file keybindings.c.

References group, and StashGroup::name.

Referenced by keybindings_init().

◆ get_current_word_or_sel()

static gchar * get_current_word_or_sel ( GeanyDocument doc,
gboolean  sci_word 
)
static

◆ get_reflow_column()

◆ goto_matching_brace()

◆ goto_tag()

static void goto_tag ( GeanyDocument doc,
gboolean  definition 
)
static

Definition at line 1966 of file keybindings.c.

References get_current_word_or_sel(), symbols_goto_tag(), text, and utils_beep().

Referenced by cb_func_goto_action().

◆ init_default_kb()

static void init_default_kb ( void  )
static

Definition at line 304 of file keybindings.c.

References _, add_kb(), ADD_KB_GROUP, build_keybinding(), cb_func_clipboard_action(), cb_func_document_action(), cb_func_editor_action(), cb_func_file_action(), cb_func_format_action(), cb_func_goto_action(), cb_func_insert_action(), cb_func_menu_fullscreen(), cb_func_menu_help(), cb_func_menu_messagewindow(), cb_func_menu_opencolorchooser(), cb_func_menu_preferences(), cb_func_move_tab(), cb_func_project_action(), cb_func_search_action(), cb_func_select_action(), cb_func_switch_action(), cb_func_switch_tablastused(), cb_func_switch_tableft(), cb_func_switch_tabright(), cb_func_view_action(), GEANY_KEY_GROUP_BUILD, GEANY_KEY_GROUP_CLIPBOARD, GEANY_KEY_GROUP_DOCUMENT, GEANY_KEY_GROUP_EDITOR, GEANY_KEY_GROUP_FILE, GEANY_KEY_GROUP_FOCUS, GEANY_KEY_GROUP_FORMAT, GEANY_KEY_GROUP_GOTO, GEANY_KEY_GROUP_HELP, GEANY_KEY_GROUP_INSERT, GEANY_KEY_GROUP_NOTEBOOK, GEANY_KEY_GROUP_PROJECT, GEANY_KEY_GROUP_SEARCH, GEANY_KEY_GROUP_SELECT, GEANY_KEY_GROUP_SETTINGS, GEANY_KEY_GROUP_TOOLS, GEANY_KEY_GROUP_VIEW, GEANY_KEYS_BUILD_COMPILE, GEANY_KEYS_BUILD_LINK, GEANY_KEYS_BUILD_MAKE, GEANY_KEYS_BUILD_MAKEOBJECT, GEANY_KEYS_BUILD_MAKEOWNTARGET, GEANY_KEYS_BUILD_NEXTERROR, GEANY_KEYS_BUILD_OPTIONS, GEANY_KEYS_BUILD_PREVIOUSERROR, GEANY_KEYS_BUILD_RUN, GEANY_KEYS_CLIPBOARD_COPY, GEANY_KEYS_CLIPBOARD_COPYLINE, GEANY_KEYS_CLIPBOARD_CUT, GEANY_KEYS_CLIPBOARD_CUTLINE, GEANY_KEYS_CLIPBOARD_PASTE, GEANY_KEYS_DOCUMENT_CLONE, GEANY_KEYS_DOCUMENT_FOLDALL, GEANY_KEYS_DOCUMENT_LINEBREAK, GEANY_KEYS_DOCUMENT_LINEWRAP, GEANY_KEYS_DOCUMENT_RELOADTAGLIST, GEANY_KEYS_DOCUMENT_REMOVE_ERROR_INDICATORS, GEANY_KEYS_DOCUMENT_REMOVE_MARKERS, GEANY_KEYS_DOCUMENT_REMOVE_MARKERS_INDICATORS, GEANY_KEYS_DOCUMENT_REPLACESPACES, GEANY_KEYS_DOCUMENT_REPLACETABS, GEANY_KEYS_DOCUMENT_STRIPTRAILINGSPACES, GEANY_KEYS_DOCUMENT_TOGGLEFOLD, GEANY_KEYS_DOCUMENT_UNFOLDALL, GEANY_KEYS_EDITOR_AUTOCOMPLETE, GEANY_KEYS_EDITOR_CALLTIP, GEANY_KEYS_EDITOR_COMPLETESNIPPET, GEANY_KEYS_EDITOR_CONTEXTACTION, GEANY_KEYS_EDITOR_DELETELINE, GEANY_KEYS_EDITOR_DELETELINETOBEGINNING, GEANY_KEYS_EDITOR_DELETELINETOEND, GEANY_KEYS_EDITOR_DUPLICATELINE, GEANY_KEYS_EDITOR_MOVELINEDOWN, GEANY_KEYS_EDITOR_MOVELINEUP, GEANY_KEYS_EDITOR_REDO, GEANY_KEYS_EDITOR_SCROLLLINEDOWN, GEANY_KEYS_EDITOR_SCROLLLINEUP, GEANY_KEYS_EDITOR_SCROLLTOLINE, GEANY_KEYS_EDITOR_SNIPPETNEXTCURSOR, GEANY_KEYS_EDITOR_SUPPRESSSNIPPETCOMPLETION, GEANY_KEYS_EDITOR_TRANSPOSELINE, GEANY_KEYS_EDITOR_UNDO, GEANY_KEYS_EDITOR_WORDPARTCOMPLETION, GEANY_KEYS_FILE_CLOSE, GEANY_KEYS_FILE_CLOSEALL, GEANY_KEYS_FILE_NEW, GEANY_KEYS_FILE_OPEN, GEANY_KEYS_FILE_OPENLASTTAB, GEANY_KEYS_FILE_OPENSELECTED, GEANY_KEYS_FILE_PRINT, GEANY_KEYS_FILE_PROPERTIES, GEANY_KEYS_FILE_QUIT, GEANY_KEYS_FILE_RELOAD, GEANY_KEYS_FILE_RELOAD_ALL, GEANY_KEYS_FILE_SAVE, GEANY_KEYS_FILE_SAVEALL, GEANY_KEYS_FILE_SAVEAS, GEANY_KEYS_FOCUS_COMPILER, GEANY_KEYS_FOCUS_EDITOR, GEANY_KEYS_FOCUS_MESSAGE_WINDOW, GEANY_KEYS_FOCUS_MESSAGES, GEANY_KEYS_FOCUS_SCRIBBLE, GEANY_KEYS_FOCUS_SEARCHBAR, GEANY_KEYS_FOCUS_SIDEBAR, GEANY_KEYS_FOCUS_SIDEBAR_DOCUMENT_LIST, GEANY_KEYS_FOCUS_SIDEBAR_SYMBOL_LIST, GEANY_KEYS_FOCUS_VTE, GEANY_KEYS_FORMAT_AUTOINDENT, GEANY_KEYS_FORMAT_COMMENTLINE, GEANY_KEYS_FORMAT_COMMENTLINETOGGLE, GEANY_KEYS_FORMAT_DECREASEINDENT, GEANY_KEYS_FORMAT_DECREASEINDENTBYSPACE, GEANY_KEYS_FORMAT_INCREASEINDENT, GEANY_KEYS_FORMAT_INCREASEINDENTBYSPACE, GEANY_KEYS_FORMAT_JOINLINES, GEANY_KEYS_FORMAT_REFLOWPARAGRAPH, GEANY_KEYS_FORMAT_SENDTOCMD1, GEANY_KEYS_FORMAT_SENDTOCMD2, GEANY_KEYS_FORMAT_SENDTOCMD3, GEANY_KEYS_FORMAT_SENDTOCMD4, GEANY_KEYS_FORMAT_SENDTOCMD5, GEANY_KEYS_FORMAT_SENDTOCMD6, GEANY_KEYS_FORMAT_SENDTOCMD7, GEANY_KEYS_FORMAT_SENDTOCMD8, GEANY_KEYS_FORMAT_SENDTOCMD9, GEANY_KEYS_FORMAT_SENDTOVTE, GEANY_KEYS_FORMAT_TOGGLECASE, GEANY_KEYS_FORMAT_UNCOMMENTLINE, GEANY_KEYS_GOTO_BACK, GEANY_KEYS_GOTO_FORWARD, GEANY_KEYS_GOTO_LINE, GEANY_KEYS_GOTO_LINEEND, GEANY_KEYS_GOTO_LINEENDVISUAL, GEANY_KEYS_GOTO_LINESTART, GEANY_KEYS_GOTO_LINESTARTVISUAL, GEANY_KEYS_GOTO_MATCHINGBRACE, GEANY_KEYS_GOTO_NEXTMARKER, GEANY_KEYS_GOTO_NEXTWORDPART, GEANY_KEYS_GOTO_PREVIOUSMARKER, GEANY_KEYS_GOTO_PREVWORDPART, GEANY_KEYS_GOTO_TAGDECLARATION, GEANY_KEYS_GOTO_TAGDEFINITION, GEANY_KEYS_GOTO_TOGGLEMARKER, GEANY_KEYS_HELP_HELP, GEANY_KEYS_INSERT_ALTWHITESPACE, GEANY_KEYS_INSERT_DATE, GEANY_KEYS_INSERT_LINEAFTER, GEANY_KEYS_INSERT_LINEBEFORE, GEANY_KEYS_NOTEBOOK_MOVETABFIRST, GEANY_KEYS_NOTEBOOK_MOVETABLAST, GEANY_KEYS_NOTEBOOK_MOVETABLEFT, GEANY_KEYS_NOTEBOOK_MOVETABRIGHT, GEANY_KEYS_NOTEBOOK_SWITCHTABLASTUSED, GEANY_KEYS_NOTEBOOK_SWITCHTABLEFT, GEANY_KEYS_NOTEBOOK_SWITCHTABRIGHT, GEANY_KEYS_PROJECT_CLOSE, GEANY_KEYS_PROJECT_NEW, GEANY_KEYS_PROJECT_OPEN, GEANY_KEYS_PROJECT_PROPERTIES, GEANY_KEYS_SEARCH_FIND, GEANY_KEYS_SEARCH_FINDDOCUMENTUSAGE, GEANY_KEYS_SEARCH_FINDINFILES, GEANY_KEYS_SEARCH_FINDNEXT, GEANY_KEYS_SEARCH_FINDNEXTSEL, GEANY_KEYS_SEARCH_FINDPREVIOUS, GEANY_KEYS_SEARCH_FINDPREVSEL, GEANY_KEYS_SEARCH_FINDUSAGE, GEANY_KEYS_SEARCH_MARKALL, GEANY_KEYS_SEARCH_NEXTMESSAGE, GEANY_KEYS_SEARCH_PREVIOUSMESSAGE, GEANY_KEYS_SEARCH_REPLACE, GEANY_KEYS_SELECT_ALL, GEANY_KEYS_SELECT_LINE, GEANY_KEYS_SELECT_PARAGRAPH, GEANY_KEYS_SELECT_WORD, GEANY_KEYS_SELECT_WORDPARTLEFT, GEANY_KEYS_SELECT_WORDPARTRIGHT, GEANY_KEYS_SETTINGS_PLUGINPREFERENCES, GEANY_KEYS_SETTINGS_PREFERENCES, GEANY_KEYS_TOOLS_OPENCOLORCHOOSER, GEANY_KEYS_VIEW_FULLSCREEN, GEANY_KEYS_VIEW_MESSAGEWINDOW, GEANY_KEYS_VIEW_SIDEBAR, GEANY_KEYS_VIEW_TOGGLEALL, GEANY_KEYS_VIEW_ZOOMIN, GEANY_KEYS_VIEW_ZOOMOUT, GEANY_KEYS_VIEW_ZOOMRESET, GEANY_PRIMARY_MOD_MASK, group, keybindings_get_core_group(), keybindings_set_item(), NULL, and ui_lookup_stock_label().

Referenced by keybindings_init().

◆ insert_line_after()

static void insert_line_after ( GeanyEditor editor)
static

Definition at line 2592 of file keybindings.c.

References sci, GeanyEditor::sci, SCI_LINEEND, SCI_NEWLINE, and sci_send_command().

Referenced by cb_func_insert_action().

◆ insert_line_before()

static void insert_line_before ( GeanyEditor editor)
static

◆ join_lines()

◆ join_paragraph()

◆ key_dialog_show_prefs()

static void key_dialog_show_prefs ( void  )
static

◆ key_kp_translate()

static guint key_kp_translate ( guint  key_in)
static

Definition at line 1271 of file keybindings.c.

Referenced by keybindings_check_event(), and on_key_press_event().

◆ keybindings_check_event()

gboolean keybindings_check_event ( GdkEventKey *  ev,
GeanyKeyBinding kb 
)

◆ keybindings_dialog_show_prefs_scroll()

void keybindings_dialog_show_prefs_scroll ( const gchar *  name)

Definition at line 1059 of file keybindings.c.

References key_dialog_show_prefs(), name, and prefs_kb_search_name().

Referenced by pm_on_plugin_button_clicked().

◆ keybindings_foreach()

static void keybindings_foreach ( KBItemCallback  cb,
gpointer  user_data 
)
static

◆ keybindings_free()

void keybindings_free ( void  )

Definition at line 934 of file keybindings.c.

References foreach_ptr_array, group, keybinding_groups, and keybindings_free_group().

Referenced by do_main_quit().

◆ keybindings_free_group()

void keybindings_free_group ( GeanyKeyGroup group)

Definition at line 2685 of file keybindings.c.

References group, and keybinding_groups.

Referenced by keybindings_free(), and plugin_cleanup().

◆ keybindings_get_core_group()

GeanyKeyGroup * keybindings_get_core_group ( guint  id)

◆ keybindings_get_item()

GeanyKeyBinding * keybindings_get_item ( GeanyKeyGroup group,
gsize  key_id 
)

Looks up a keybinding item.

Parameters
groupGroup.
key_idKeybinding index for the group.
Returns
(transfer: none) The keybinding.
Since
0.19.

Definition at line 140 of file keybindings.c.

References binding_ids, GEANY_KEYS_COUNT, and group.

Referenced by add_menu_accel(), kb_index(), keybindings_lookup_item(), and keybindings_set_item().

◆ keybindings_get_label()

gchar * keybindings_get_label ( GeanyKeyBinding kb)

Definition at line 946 of file keybindings.c.

References GeanyKeyBinding::label, and utils_str_remove_chars().

Referenced by fill_shortcut_labels_treeview(), and kb_init().

◆ keybindings_get_modifiers()

GdkModifierType keybindings_get_modifiers ( GdkModifierType  mods)

Gets significant modifiers from a GdkModifierType mask.

The set of significant modifiers corresponds to the default modifier mask as returned by gtk_accelerator_get_default_mod_mask(). In addition, it improves the Command key handling on OS X by adding GEANY_PRIMARY_MOD_MASK when needed. For this reason it is preferred to use this function instead of gtk_accelerator_set_default_mod_mask().

Parameters
modsGdkModifierType mask.
Returns
Significant modifiers from the mask.
Since
1.25.

Definition at line 121 of file keybindings.c.

References GEANY_PRIMARY_MOD_MASK.

Referenced by kb_grab_key_dialog_key_press_cb(), keybindings_check_event(), notebook_tab_click(), on_editor_button_press_event(), on_escape_key_press_event(), on_key_press_event(), and taglist_go_to_selection().

◆ keybindings_init()

◆ keybindings_load_keyfile()

void keybindings_load_keyfile ( void  )

Reloads keybinding settings from configuration file.

Normally plugins do not need to call this function as it is called automatically when a the plugin is activated. However, plugins which need to create keybindings dynamically and reload them when needed should call this function after all keybindings have been updated with plugin_set_key_group() and keybindings_set_item() calls - this makes sure that the corresponding user keybinding shortcuts are applied.

Since
1.32 (API 233)

Definition at line 842 of file keybindings.c.

References add_popup_menu_accels(), apply_kb_accel(), keybindings_foreach(), load_user_kb(), and NULL.

Referenced by main_lib(), and pm_plugin_toggled().

◆ keybindings_lookup_item()

◆ keybindings_send_command()

void keybindings_send_command ( guint  group_id,
guint  key_id 
)

Mimics a (built-in only) keybinding action.

Example:

void keybindings_send_command(guint group_id, guint key_id)
Mimics a (built-in only) keybinding action.
Definition: keybindings.c:1426
@ GEANY_KEY_GROUP_FILE
Group.
Definition: keybindings.h:102
@ GEANY_KEYS_FILE_OPEN
Keybinding.
Definition: keybindings.h:216
Parameters
group_idGeanyKeyGroupID keybinding group index that contains the key_id keybinding.
key_idGeanyKeyBindingID keybinding index.

Definition at line 1426 of file keybindings.c.

References group, keybindings_get_core_group(), keybindings_lookup_item(), and run_kb().

Referenced by goto_tag(), msgwin_show_hide(), notebook_tab_click(), on_config_file_clicked(), on_copy_current_lines1_activate(), on_cut_current_lines1_activate(), on_delete_current_lines1_activate(), on_duplicate_line_or_selection1_activate(), on_editor_button_press_event(), on_escape_key_press_event(), on_go_to_next_marker1_activate(), on_go_to_previous_marker1_activate(), on_hide_sidebar(), on_insert_alternative_white_space1_activate(), on_mark_all1_activate(), on_menu_show_sidebar1_toggled(), on_move_lines_down1_activate(), on_move_lines_up1_activate(), on_reflow_lines_block1_activate(), on_select_current_lines1_activate(), on_select_current_paragraph1_activate(), on_smart_line_indent1_activate(), on_toggle_case1_activate(), on_toolbutton_compile_clicked(), on_toolbutton_goto_entry_activate(), on_toolbutton_run_clicked(), and open_selected_files().

◆ keybindings_set_group()

GeanyKeyGroup * keybindings_set_group ( GeanyKeyGroup group,
const gchar *  section_name,
const gchar *  label,
gsize  count,
GeanyKeyGroupCallback  callback 
)

Definition at line 2661 of file keybindings.c.

References add_kb_group(), count, group, keybindings_keyfile_group_name, label, and NULL.

Referenced by plugin_set_key_group().

◆ keybindings_set_item()

GeanyKeyBinding * keybindings_set_item ( GeanyKeyGroup group,
gsize  key_id,
GeanyKeyCallback  callback,
guint  key,
GdkModifierType  mod,
const gchar *  kf_name,
const gchar *  label,
GtkWidget *  menu_item 
)

Fills a GeanyKeyBinding struct item.

Note
Always set key and mod to 0, otherwise you will likely cause conflicts with the user's custom, other plugin's keybindings or future default keybindings.
Parameters
groupGroup.
key_idKeybinding index for the group.
callback Function to call when activated, or NULL to use the group callback. Usually it's better to use the group callback instead - see plugin_set_key_group().
keyDefault key, e.g. GDK_KEY_j (must be lower case), but usually 0 for unset.
modDefault modifier, e.g. GDK_CONTROL_MASK, but usually 0 for unset.
kf_nameKey name used for this item in the keybindings configuration file, i.e. "menu_new".
labelLabel used in the preferences dialog keybindings tab. May contain underscores - these won't be displayed.
menu_item Optional widget to set an accelerator for, or NULL.
Returns
The keybinding - normally this is ignored.

Definition at line 171 of file keybindings.c.

References GeanyKeyBinding::callback, GeanyKeyBinding::cb_data, GeanyKeyBinding::cb_func, GeanyKeyBinding::default_key, GeanyKeyBinding::default_mods, group, GeanyKeyBinding::id, GeanyKeyBinding::key, keybindings_get_item(), label, GeanyKeyBinding::label, GeanyKeyBinding::menu_item, GeanyKeyBinding::mods, GeanyKeyBinding::name, StashGroup::name, NULL, and SETPTR.

Referenced by add_kb(), init_default_kb(), keybindings_set_item_full(), and plugin_init().

◆ keybindings_set_item_full()

GeanyKeyBinding * keybindings_set_item_full ( GeanyKeyGroup group,
gsize  key_id,
guint  key,
GdkModifierType  mod,
const gchar *  kf_name,
const gchar *  label,
GtkWidget *  menu_item,
GeanyKeyBindingFunc  cb,
gpointer  pdata,
GDestroyNotify  destroy_notify 
)

Creates a new keybinding using a GeanyKeyBindingFunc and attaches it to a keybinding group.

If given the callback should return TRUE if the keybinding was handled, otherwise FALSE to allow other callbacks to be run. This allows for multiplexing keybindings on the same keys, depending on the focused widget (or context). If the callback is NULL the group's callback will be invoked, but the same rule applies.

Parameters
groupGroup.
key_idKeybinding index for the group.
keyDefault key, e.g. GDK_KEY_j (must be lower case), but usually 0 for unset.
modDefault modifier, e.g. GDK_CONTROL_MASK, but usually 0 for unset.
kf_nameKey name used for this item in the keybindings configuration file, i.e. "menu_new".
labelLabel used in the preferences dialog keybindings tab. May contain underscores - these won't be displayed.
menu_item Optional widget to set an accelerator for, or NULL.
cb New-style callback to be called when activated, or NULL to use the group callback.
pdataPlugin-specific data passed back to the callback cb.
destroy_notifyFunction that is invoked to free the plugin data when not needed anymore.
Returns
(transfer: none) The keybinding - normally this is ignored.
Since
1.26 (API 226)
See also
See plugin_set_key_group_full

Definition at line 231 of file keybindings.c.

References GeanyKeyBinding::cb_data, GeanyKeyBinding::cb_data_destroy, GeanyKeyBinding::cb_func, group, keybindings_set_item(), label, and NULL.

◆ keybindings_show_shortcuts()

void keybindings_show_shortcuts ( void  )

◆ keybindings_update_combo()

void keybindings_update_combo ( GeanyKeyBinding kb,
guint  key,
GdkModifierType  mods 
)

◆ keybindings_write_to_file()

void keybindings_write_to_file ( void  )

◆ load_kb()

static void load_kb ( GeanyKeyGroup group,
GeanyKeyBinding kb,
gpointer  user_data 
)
static

◆ load_user_kb()

static void load_user_kb ( void  )
static

◆ on_dialog_response()

static void on_dialog_response ( GtkWidget *  dialog,
gint  response,
gpointer  user_data 
)
static

Definition at line 1069 of file keybindings.c.

References dialog, key_dialog, key_dialog_show_prefs(), and NULL.

Referenced by keybindings_show_shortcuts().

◆ on_key_press_event()

static gboolean on_key_press_event ( GtkWidget *  widget,
GdkEventKey *  event,
gpointer  user_data 
)
static

◆ read_current_word()

static gboolean read_current_word ( GeanyDocument doc,
gboolean  sci_word 
)
static

◆ reflow_lines()

◆ reflow_paragraph()

◆ run_kb()

◆ sci_deselect_last_newline()

static void sci_deselect_last_newline ( ScintillaObject *  sci)
static

◆ set_keyfile_kb()

static void set_keyfile_kb ( GeanyKeyGroup group,
GeanyKeyBinding kb,
gpointer  user_data 
)
static

◆ split_line()

◆ switch_notebook_page()

static void switch_notebook_page ( gint  direction)
static

◆ trigger_button_event()

static void trigger_button_event ( GtkWidget *  widget,
guint32  event_time 
)
static

Definition at line 1146 of file keybindings.c.

Referenced by check_menu_key().

Variable Documentation

◆ binding_ids

GeanyKeyBinding binding_ids[GEANY_KEYS_COUNT]
static

Definition at line 68 of file keybindings.c.

Referenced by keybindings_get_item(), and keybindings_init().

◆ kb_accel_group

GtkAccelGroup* kb_accel_group = NULL
static

◆ key_dialog

GtkWidget* key_dialog = NULL
static

Definition at line 1067 of file keybindings.c.

Referenced by keybindings_show_shortcuts(), and on_dialog_response().

◆ keybinding_groups

◆ keybindings_keyfile_group_name

const gchar keybindings_keyfile_group_name[] = "Bindings"
static

Definition at line 65 of file keybindings.c.

Referenced by keybindings_set_group().

◆ swap_alt_tab_order

const gboolean swap_alt_tab_order = FALSE
static

Definition at line 71 of file keybindings.c.

Referenced by check_fixed_kb().