# HG changeset patch # User Mikael Berthe # Date 1175625034 -7200 # Node ID 960f34ec22a2da6daca21b09249f5b1da3b3aeb3 # Parent 334ae9f498f17494dd542ab117223174c85093f4 Add init_bindings() for default key bindings (Lego12239) diff -r 334ae9f498f1 -r 960f34ec22a2 mcabber/src/commands.c --- a/mcabber/src/commands.c Tue Apr 03 20:30:28 2007 +0200 +++ b/mcabber/src/commands.c Tue Apr 03 20:30:34 2007 +0200 @@ -42,6 +42,9 @@ #define IMSTATUS_NOTAVAILABLE "notavail" #define IMSTATUS_DONOTDISTURB "dnd" +// Return value container for the following functions +static int retval_for_cmds; + // Commands callbacks static void do_roster(char *arg); static void do_status(char *arg); @@ -96,6 +99,10 @@ // cmd_init() // Commands table initialization +// !!! +// After changing commands names and it arguments names here, you must change +// ones in init_bindings()! +// void cmd_init(void) { cmd_add("add", "Add a jabber user", COMPL_JID, 0, &do_add); @@ -413,9 +420,10 @@ while (*p && (*p == ' ')) p++; // Call command-specific function + retval_for_cmds = 0; (*curcmd->func)(p); g_free(xpline); - return 0; + return retval_for_cmds; } // process_line(line) @@ -2721,6 +2729,10 @@ free_arg_lst(paramlst); } +/* !!! + After changing the /iline arguments names here, you must change ones + in init_bindings(). +*/ static void do_iline(char *arg) { if (!strcasecmp(arg, "fword")) { @@ -2762,9 +2774,9 @@ } else if (!strcasecmp(arg, "send_multiline")) { readline_send_multiline(); } else if (!strcasecmp(arg, "iline_accept")) { - readline_accept_line(); + retval_for_cmds = readline_accept_line(); } else if (!strcasecmp(arg, "iline_accept_down_hist")) { // May be too long - readline_accept_line_down_hist(); + retval_for_cmds = readline_accept_line_down_hist(); } else if (!strcasecmp(arg, "compl_cancel")) { readline_cancel_completion(); } else if (!strcasecmp(arg, "compl_do")) { diff -r 334ae9f498f1 -r 960f34ec22a2 mcabber/src/main.c --- a/mcabber/src/main.c Tue Apr 03 20:30:28 2007 +0200 +++ b/mcabber/src/main.c Tue Apr 03 20:30:34 2007 +0200 @@ -290,6 +290,86 @@ #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; @@ -330,6 +410,9 @@ /* 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 */ diff -r 334ae9f498f1 -r 960f34ec22a2 mcabber/src/screen.c --- a/mcabber/src/screen.c Tue Apr 03 20:30:28 2007 +0200 +++ b/mcabber/src/screen.c Tue Apr 03 20:30:34 2007 +0200 @@ -3029,7 +3029,21 @@ case 0: case ERR: break; - case 8: // Ctrl-h + case 9: // Tab + readline_do_completion(); + break; + case 13: // Enter + if (readline_accept_line() == 255) return 255; + break; + case 3: // Ctrl-C + scr_handle_CtrlC(); + break; + case KEY_RESIZE: + scr_Resize(); + break; +/* case 4: // Ctrl-D + readline_send_multiline(); + break; case 127: // Backspace too case KEY_BACKSPACE: readline_backward_kill_char(); @@ -3046,15 +3060,6 @@ case 7: // Ctrl-g readline_cancel_completion(); break; - case 9: // Tab - readline_do_completion(); - break; - case 13: // Enter - if (readline_accept_line() == 255) return 255; - break; - case 15: // Ctrl-o ("accept-line-and-down-history") - if (readline_accept_line_down_hist() == 255) return 255; - break; case KEY_UP: readline_hist_prev(); break; @@ -3072,9 +3077,6 @@ case KEY_HOME: readline_iline_start(); break; - case 3: // Ctrl-C - scr_handle_CtrlC(); - break; case KEY_END: readline_iline_end(); break; @@ -3108,12 +3110,10 @@ case 12: // Ctrl-l readline_refresh_screen(); break; - case KEY_RESIZE: - scr_Resize(); - break; case 27: // ESC readline_disable_chat_mode(); break; + */ default: display_char = TRUE; } // switch