Move init_bindings() to screen.c, with a few updates
- Move the function init_bindings() to screen.c scr_init_bindings()
- Get rid of the malloc/free
- Add two key bindings: Meta-a, Meta-b
- Put the comments on the same line when it is possible, in order to save
some space.
--- a/mcabber/src/main.c Tue Apr 03 20:33:28 2007 +0200
+++ b/mcabber/src/main.c Wed Apr 04 22:03:49 2007 +0200
@@ -290,86 +290,6 @@
#endif /* HAVE_GPGME */
}
-// Create default bindings
-// Return 0 if error and 1 if none
-int init_bindings(void)
-{
- char *tmp;
-
- if ( !(tmp = (char*)malloc(10)) ) {
- scr_LogPrint(LPRINT_LOGNORM, "Not enough memory!");
- fprintf(stderr, "Not enough memory!");
- return 0;
- }
-
- // Ctrl-h
- settings_set(SETTINGS_TYPE_BINDING, "8", "iline char_bdel");
- settings_set(SETTINGS_TYPE_BINDING, "127", "iline char_bdel");
- sprintf(tmp, "%d", KEY_BACKSPACE);
- settings_set(SETTINGS_TYPE_BINDING, tmp, "iline char_bdel");
- sprintf(tmp, "%d", KEY_DC);
- settings_set(SETTINGS_TYPE_BINDING, tmp, "iline char_fdel");
- sprintf(tmp, "%d", KEY_LEFT);
- settings_set(SETTINGS_TYPE_BINDING, tmp, "iline bchar");
- sprintf(tmp, "%d", KEY_RIGHT);
- settings_set(SETTINGS_TYPE_BINDING, tmp, "iline fchar");
- // Ctrl-g
- settings_set(SETTINGS_TYPE_BINDING, "7", "iline compl_cancel");
- sprintf(tmp, "%d", KEY_UP);
- settings_set(SETTINGS_TYPE_BINDING, tmp, "iline hist_prev");
- sprintf(tmp, "%d", KEY_DOWN);
- settings_set(SETTINGS_TYPE_BINDING, tmp, "iline hist_next");
- sprintf(tmp, "%d", KEY_PPAGE);
- settings_set(SETTINGS_TYPE_BINDING, tmp, "roster up");
- sprintf(tmp, "%d", KEY_NPAGE);
- settings_set(SETTINGS_TYPE_BINDING, tmp, "roster down");
- sprintf(tmp, "%d", KEY_HOME);
- settings_set(SETTINGS_TYPE_BINDING, tmp, "iline iline_start");
- // Ctrl-a
- settings_set(SETTINGS_TYPE_BINDING, "1", "iline iline_start");
- sprintf(tmp, "%d", KEY_END);
- settings_set(SETTINGS_TYPE_BINDING, tmp, "iline iline_end");
- // Ctrl-e
- settings_set(SETTINGS_TYPE_BINDING, "5", "iline iline_end");
- // Ctrl-o
- settings_set(SETTINGS_TYPE_BINDING, "15", "iline iline_accept_down_hist");
- // Ctrl-u
- settings_set(SETTINGS_TYPE_BINDING, "21", "iline iline_bdel");
- sprintf(tmp, "%d", KEY_EOL);
- settings_set(SETTINGS_TYPE_BINDING, tmp, "iline iline_fdel");
- // Ctrl-k
- settings_set(SETTINGS_TYPE_BINDING, "11", "iline iline_fdel");
- // Ctrl-p
- settings_set(SETTINGS_TYPE_BINDING, "16", "buffer up");
- // Ctrl-n
- settings_set(SETTINGS_TYPE_BINDING, "14", "buffer down");
- // Ctrl-t
- settings_set(SETTINGS_TYPE_BINDING, "20", "iline char_swap");
- // Ctrl-w
- settings_set(SETTINGS_TYPE_BINDING, "23", "iline word_bdel");
- // Ctrl-Left (2 codes)
- settings_set(SETTINGS_TYPE_BINDING, "515", "iline bword");
- settings_set(SETTINGS_TYPE_BINDING, "516", "iline bword");
- // Ctrl-Right (2 codes)
- settings_set(SETTINGS_TYPE_BINDING, "517", "iline fword");
- settings_set(SETTINGS_TYPE_BINDING, "518", "iline fword");
- // Ctrl-l
- settings_set(SETTINGS_TYPE_BINDING, "12", "screen_repaint");
- // Esc
- settings_set(SETTINGS_TYPE_BINDING, "27", "chat_disable");
- // Ctrl-d
- settings_set(SETTINGS_TYPE_BINDING, "4", "iline send_multiline");
- // Meta-u
- settings_set(SETTINGS_TYPE_BINDING, "M117", "iline word_upcase");
- // Meta-l
- settings_set(SETTINGS_TYPE_BINDING, "M108", "iline word_downcase");
- // Meta-c
- settings_set(SETTINGS_TYPE_BINDING, "M99", "iline word_capit");
-
- free(tmp);
- return 1;
-}
-
int main(int argc, char **argv)
{
char *configFile = NULL;
@@ -403,16 +323,14 @@
}
}
- /* Initialize commands system and roster */
+ /* Initialize command system, roster and default key bindings */
cmd_init();
roster_init();
settings_init();
+ scr_init_bindings();
/* Initialize charset */
scr_InitLocaleCharSet();
- /* Creating default bindings */
- if (!init_bindings()) exit(EXIT_FAILURE);
-
/* Parsing config file... */
ret = cfg_read_file(configFile);
/* free() configFile if it has been allocated during options parsing */
--- a/mcabber/src/screen.c Tue Apr 03 20:33:28 2007 +0200
+++ b/mcabber/src/screen.c Wed Apr 04 22:03:49 2007 +0200
@@ -307,6 +307,67 @@
add_keyseq("[4~", MKEY_EQUIV, KEY_END); // End
}
+// scr_init_bindings()
+// Create default key bindings
+// Return 0 if error and 1 if none
+void scr_init_bindings(void)
+{
+ GString *sbuf = g_string_new("");
+
+ // Common backspace key codes: 8, 127
+ settings_set(SETTINGS_TYPE_BINDING, "8", "iline char_bdel"); // Ctrl-h
+ settings_set(SETTINGS_TYPE_BINDING, "127", "iline char_bdel");
+ g_string_printf(sbuf, "%d", KEY_BACKSPACE);
+ settings_set(SETTINGS_TYPE_BINDING, sbuf->str, "iline char_bdel");
+ g_string_printf(sbuf, "%d", KEY_DC);
+ settings_set(SETTINGS_TYPE_BINDING, sbuf->str, "iline char_fdel");
+ g_string_printf(sbuf, "%d", KEY_LEFT);
+ settings_set(SETTINGS_TYPE_BINDING, sbuf->str, "iline bchar");
+ g_string_printf(sbuf, "%d", KEY_RIGHT);
+ settings_set(SETTINGS_TYPE_BINDING, sbuf->str, "iline fchar");
+ settings_set(SETTINGS_TYPE_BINDING, "7", "iline compl_cancel"); // Ctrl-g
+ g_string_printf(sbuf, "%d", KEY_UP);
+ settings_set(SETTINGS_TYPE_BINDING, sbuf->str, "iline hist_prev");
+ g_string_printf(sbuf, "%d", KEY_DOWN);
+ settings_set(SETTINGS_TYPE_BINDING, sbuf->str, "iline hist_next");
+ g_string_printf(sbuf, "%d", KEY_PPAGE);
+ settings_set(SETTINGS_TYPE_BINDING, sbuf->str, "roster up");
+ g_string_printf(sbuf, "%d", KEY_NPAGE);
+ settings_set(SETTINGS_TYPE_BINDING, sbuf->str, "roster down");
+ g_string_printf(sbuf, "%d", KEY_HOME);
+ settings_set(SETTINGS_TYPE_BINDING, sbuf->str, "iline iline_start");
+ settings_set(SETTINGS_TYPE_BINDING, "1", "iline iline_start"); // Ctrl-a
+ g_string_printf(sbuf, "%d", KEY_END);
+ settings_set(SETTINGS_TYPE_BINDING, sbuf->str, "iline iline_end");
+ settings_set(SETTINGS_TYPE_BINDING, "5", "iline iline_end"); // Ctrl-e
+ // Ctrl-o (accept-line-and-down-history):
+ settings_set(SETTINGS_TYPE_BINDING, "15", "iline iline_accept_down_hist");
+ settings_set(SETTINGS_TYPE_BINDING, "21", "iline iline_bdel"); // Ctrl-u
+ g_string_printf(sbuf, "%d", KEY_EOL);
+ settings_set(SETTINGS_TYPE_BINDING, sbuf->str, "iline iline_fdel");
+ settings_set(SETTINGS_TYPE_BINDING, "11", "iline iline_fdel"); // Ctrl-k
+ settings_set(SETTINGS_TYPE_BINDING, "16", "buffer up"); // Ctrl-p
+ settings_set(SETTINGS_TYPE_BINDING, "14", "buffer down"); // Ctrl-n
+ settings_set(SETTINGS_TYPE_BINDING, "20", "iline char_swap"); // Ctrl-t
+ settings_set(SETTINGS_TYPE_BINDING, "23", "iline word_bdel"); // Ctrl-w
+ settings_set(SETTINGS_TYPE_BINDING, "M98", "iline bword"); // Meta-b
+ settings_set(SETTINGS_TYPE_BINDING, "M102", "iline fword"); // Meta-f
+ // Ctrl-Left (2 codes):
+ settings_set(SETTINGS_TYPE_BINDING, "515", "iline bword");
+ settings_set(SETTINGS_TYPE_BINDING, "516", "iline bword");
+ // Ctrl-Right (2 codes):
+ settings_set(SETTINGS_TYPE_BINDING, "517", "iline fword");
+ settings_set(SETTINGS_TYPE_BINDING, "518", "iline fword");
+ settings_set(SETTINGS_TYPE_BINDING, "12", "screen_refresh"); // Ctrl-l
+ settings_set(SETTINGS_TYPE_BINDING, "27", "chat_disable"); // Esc
+ settings_set(SETTINGS_TYPE_BINDING, "4", "iline send_multiline"); // Ctrl-d
+ settings_set(SETTINGS_TYPE_BINDING, "M117", "iline word_upcase"); // Meta-u
+ settings_set(SETTINGS_TYPE_BINDING, "M108", "iline word_downcase"); // Meta-l
+ settings_set(SETTINGS_TYPE_BINDING, "M99", "iline word_capit"); // Meta-c
+
+ g_string_free(sbuf, TRUE);
+}
+
void scr_InitLocaleCharSet(void)
{
setlocale(LC_CTYPE, "");
--- a/mcabber/src/screen.h Tue Apr 03 20:33:28 2007 +0200
+++ b/mcabber/src/screen.h Wed Apr 04 22:03:49 2007 +0200
@@ -67,6 +67,8 @@
} mcode;
} keycode;
+void scr_init_bindings(void);
+
void scr_Getch(keycode *kcode);
int process_key(keycode kcode);