mirror of
https://github.com/weechat/weechat.git
synced 2026-07-09 03:03:12 +02:00
core: force ctrl keys to lower case when they are added (closes #1875)
This commit is contained in:
@@ -8406,7 +8406,7 @@ command_init ()
|
||||
" restore default binding for key alt-r:\n"
|
||||
" /key reset meta-r\n"
|
||||
" key \"tab\" to stop search in buffer:\n"
|
||||
" /key bindctxt search ctrl-I /input search_stop\n"
|
||||
" /key bindctxt search ctrl-i /input search_stop\n"
|
||||
" middle button of mouse on a nick to retrieve info on nick:\n"
|
||||
" /key bindctxt mouse @item(buffer_nicklist):button3 "
|
||||
"/msg nickserv info ${nick}"),
|
||||
|
||||
@@ -60,7 +60,7 @@ secure_config_get_passphrase_from_user (const char *error)
|
||||
"by WeeChat:");
|
||||
prompt[1] = _("(enter just one space to skip the passphrase, but this "
|
||||
"will DISABLE all secured data!)");
|
||||
prompt[2] = _("(press ctrl-C to exit WeeChat now)");
|
||||
prompt[2] = _("(press ctrl-c to exit WeeChat now)");
|
||||
prompt[3] = error;
|
||||
prompt[4] = NULL;
|
||||
|
||||
@@ -83,7 +83,7 @@ secure_config_get_passphrase_from_user (const char *error)
|
||||
}
|
||||
else if (strcmp (passphrase, "\x03") == 0)
|
||||
{
|
||||
/* ctrl-C pressed, just exit now */
|
||||
/* ctrl-c pressed, just exit now */
|
||||
exit (1);
|
||||
}
|
||||
else
|
||||
|
||||
+1
-1
@@ -391,7 +391,7 @@ weechat_startup_message ()
|
||||
{
|
||||
string_fprintf (stdout,
|
||||
_("WeeChat is running in headless mode "
|
||||
"(Ctrl-C to quit)."));
|
||||
"(ctrl-c to quit)."));
|
||||
string_fprintf (stdout, "\n");
|
||||
}
|
||||
|
||||
|
||||
+102
-101
@@ -81,42 +81,42 @@ gui_key_default_bindings (int context)
|
||||
|
||||
if (context == GUI_KEY_CONTEXT_DEFAULT)
|
||||
{
|
||||
BIND(/* <enter> */ "ctrl-M", "/input return");
|
||||
BIND(/* <enter> */ "ctrl-J", "/input return");
|
||||
BIND(/* m-<enter> */ "meta-ctrl-M", "/input insert \\n");
|
||||
BIND(/* <tab> */ "ctrl-I", "/input complete_next");
|
||||
BIND(/* <enter> */ "ctrl-m", "/input return");
|
||||
BIND(/* <enter> */ "ctrl-j", "/input return");
|
||||
BIND(/* m-<enter> */ "meta-ctrl-m", "/input insert \\n");
|
||||
BIND(/* <tab> */ "ctrl-i", "/input complete_next");
|
||||
BIND(/* s-<tab> */ "meta2-Z", "/input complete_previous");
|
||||
BIND(/* ^R */ "ctrl-R", "/input search_text_here");
|
||||
BIND(/* <backspace> */ "ctrl-H", "/input delete_previous_char");
|
||||
BIND(/* ^r */ "ctrl-r", "/input search_text_here");
|
||||
BIND(/* <backspace> */ "ctrl-h", "/input delete_previous_char");
|
||||
BIND(/* <backspace> */ "ctrl-?", "/input delete_previous_char");
|
||||
BIND(/* ^_ */ "ctrl-_", "/input undo");
|
||||
BIND(/* m-_ */ "meta-_", "/input redo");
|
||||
BIND(/* <del> */ "meta2-3~", "/input delete_next_char");
|
||||
BIND(/* ^D */ "ctrl-D", "/input delete_next_char");
|
||||
BIND(/* ^W */ "ctrl-W", "/input delete_previous_word_whitespace");
|
||||
BIND(/* ^d */ "ctrl-d", "/input delete_next_char");
|
||||
BIND(/* ^w */ "ctrl-w", "/input delete_previous_word_whitespace");
|
||||
BIND(/* m-<backspace> */ "meta-ctrl-?", "/input delete_previous_word");
|
||||
BIND(/* ^X */ "ctrl-X", "/buffer switch");
|
||||
BIND(/* ^x */ "ctrl-x", "/buffer switch");
|
||||
BIND(/* m-x */ "meta-x", "/buffer zoom");
|
||||
BIND(/* m-d */ "meta-d", "/input delete_next_word");
|
||||
BIND(/* ^K */ "ctrl-K", "/input delete_end_of_line");
|
||||
BIND(/* ^k */ "ctrl-k", "/input delete_end_of_line");
|
||||
BIND(/* m-r */ "meta-r", "/input delete_line");
|
||||
BIND(/* ^T */ "ctrl-T", "/input transpose_chars");
|
||||
BIND(/* ^U */ "ctrl-U", "/input delete_beginning_of_line");
|
||||
BIND(/* ^Y */ "ctrl-Y", "/input clipboard_paste");
|
||||
BIND(/* ^t */ "ctrl-t", "/input transpose_chars");
|
||||
BIND(/* ^u */ "ctrl-u", "/input delete_beginning_of_line");
|
||||
BIND(/* ^y */ "ctrl-y", "/input clipboard_paste");
|
||||
BIND(/* <home> */ "meta2-1~", "/input move_beginning_of_line");
|
||||
BIND(/* <home> */ "meta2-H", "/input move_beginning_of_line");
|
||||
BIND(/* <home> */ "meta2-7~", "/input move_beginning_of_line");
|
||||
BIND(/* <home> */ "meta-OH", "/input move_beginning_of_line");
|
||||
BIND(/* ^A */ "ctrl-A", "/input move_beginning_of_line");
|
||||
BIND(/* ^a */ "ctrl-a", "/input move_beginning_of_line");
|
||||
BIND(/* <end> */ "meta2-4~", "/input move_end_of_line");
|
||||
BIND(/* <end> */ "meta2-F", "/input move_end_of_line");
|
||||
BIND(/* <end> */ "meta2-8~", "/input move_end_of_line");
|
||||
BIND(/* <end> */ "meta-OF", "/input move_end_of_line");
|
||||
BIND(/* ^E */ "ctrl-E", "/input move_end_of_line");
|
||||
BIND(/* ^e */ "ctrl-e", "/input move_end_of_line");
|
||||
BIND(/* <left> */ "meta2-D", "/input move_previous_char");
|
||||
BIND(/* ^B */ "ctrl-B", "/input move_previous_char");
|
||||
BIND(/* ^b */ "ctrl-b", "/input move_previous_char");
|
||||
BIND(/* <right> */ "meta2-C", "/input move_next_char");
|
||||
BIND(/* ^F */ "ctrl-F", "/input move_next_char");
|
||||
BIND(/* ^f */ "ctrl-f", "/input move_next_char");
|
||||
BIND(/* m-b */ "meta-b", "/input move_previous_word");
|
||||
BIND(/* ^<left> */ "meta-Od", "/input move_previous_word");
|
||||
BIND(/* ^<left> */ "meta-OD", "/input move_previous_word");
|
||||
@@ -145,26 +145,26 @@ gui_key_default_bindings (int context)
|
||||
BIND(/* m-k */ "meta-k", "/input grab_key_command");
|
||||
BIND(/* m-s */ "meta-s", "/mute spell toggle");
|
||||
BIND(/* m-u */ "meta-u", "/window scroll_unread");
|
||||
BIND(/* ^S^U */ "ctrl-Sctrl-U", "/allbuf /buffer set unread");
|
||||
BIND(/* ^Cb */ "ctrl-Cb", "/input insert \\x02");
|
||||
BIND(/* ^Cc */ "ctrl-Cc", "/input insert \\x03");
|
||||
BIND(/* ^Ci */ "ctrl-Ci", "/input insert \\x1D");
|
||||
BIND(/* ^Co */ "ctrl-Co", "/input insert \\x0F");
|
||||
BIND(/* ^Cv */ "ctrl-Cv", "/input insert \\x16");
|
||||
BIND(/* ^C_ */ "ctrl-C_", "/input insert \\x1F");
|
||||
BIND(/* ^s^u */ "ctrl-sctrl-u", "/allbuf /buffer set unread");
|
||||
BIND(/* ^cb */ "ctrl-cb", "/input insert \\x02");
|
||||
BIND(/* ^cc */ "ctrl-cc", "/input insert \\x03");
|
||||
BIND(/* ^ci */ "ctrl-ci", "/input insert \\x1D");
|
||||
BIND(/* ^co */ "ctrl-co", "/input insert \\x0F");
|
||||
BIND(/* ^cv */ "ctrl-cv", "/input insert \\x16");
|
||||
BIND(/* ^c_ */ "ctrl-c_", "/input insert \\x1F");
|
||||
BIND(/* m-<right> */ "meta-meta2-C", "/buffer +1");
|
||||
BIND(/* m-<right> */ "meta2-1;3C", "/buffer +1");
|
||||
BIND(/* m-<down> */ "meta-meta2-B", "/buffer +1");
|
||||
BIND(/* m-<down> */ "meta2-1;3B", "/buffer +1");
|
||||
BIND(/* <f6> */ "meta2-17~", "/buffer +1");
|
||||
BIND(/* ^N */ "ctrl-N", "/buffer +1");
|
||||
BIND(/* ^n */ "ctrl-n", "/buffer +1");
|
||||
BIND(/* m-<left> */ "meta-meta2-D", "/buffer -1");
|
||||
BIND(/* m-<left> */ "meta2-1;3D", "/buffer -1");
|
||||
BIND(/* m-<up> */ "meta-meta2-A", "/buffer -1");
|
||||
BIND(/* m-<up> */ "meta2-1;3A", "/buffer -1");
|
||||
BIND(/* <f5> */ "meta2-15~", "/buffer -1");
|
||||
BIND(/* <f5> */ "meta2-[E", "/buffer -1");
|
||||
BIND(/* ^P */ "ctrl-P", "/buffer -1");
|
||||
BIND(/* ^p */ "ctrl-p", "/buffer -1");
|
||||
BIND(/* <pgup> */ "meta2-5~", "/window page_up");
|
||||
BIND(/* <pgup> */ "meta2-I", "/window page_up");
|
||||
BIND(/* <pgdn> */ "meta2-6~", "/window page_down");
|
||||
@@ -194,7 +194,7 @@ gui_key_default_bindings (int context)
|
||||
BIND(/* m-<f11> */ "meta-meta2-23~", "/bar scroll nicklist * b");
|
||||
BIND(/* m-<f12> */ "meta2-24;3~", "/bar scroll nicklist * e");
|
||||
BIND(/* m-<f12> */ "meta-meta2-24~", "/bar scroll nicklist * e");
|
||||
BIND(/* ^L */ "ctrl-L", "/window refresh");
|
||||
BIND(/* ^l */ "ctrl-l", "/window refresh");
|
||||
BIND(/* <f7> */ "meta2-18~", "/window -1");
|
||||
BIND(/* <f8> */ "meta2-19~", "/window +1");
|
||||
BIND(/* m-w,m-<up> */ "meta-wmeta-meta2-A", "/window up");
|
||||
@@ -238,20 +238,20 @@ gui_key_default_bindings (int context)
|
||||
}
|
||||
else if (context == GUI_KEY_CONTEXT_SEARCH)
|
||||
{
|
||||
BIND(/* <enter> */ "ctrl-M", "/input search_stop_here");
|
||||
BIND(/* <enter> */ "ctrl-J", "/input search_stop_here");
|
||||
BIND(/* ^Q */ "ctrl-Q", "/input search_stop");
|
||||
BIND(/* <enter> */ "ctrl-m", "/input search_stop_here");
|
||||
BIND(/* <enter> */ "ctrl-j", "/input search_stop_here");
|
||||
BIND(/* ^q */ "ctrl-q", "/input search_stop");
|
||||
BIND(/* m-c */ "meta-c", "/input search_switch_case");
|
||||
BIND(/* ^R */ "ctrl-R", "/input search_switch_regex");
|
||||
BIND(/* <tab> */ "ctrl-I", "/input search_switch_where");
|
||||
BIND(/* ^r */ "ctrl-r", "/input search_switch_regex");
|
||||
BIND(/* <tab> */ "ctrl-i", "/input search_switch_where");
|
||||
BIND(/* <up> */ "meta2-A", "/input search_previous");
|
||||
BIND(/* <down> */ "meta2-B", "/input search_next");
|
||||
}
|
||||
else if (context == GUI_KEY_CONTEXT_CURSOR)
|
||||
{
|
||||
/* general & move */
|
||||
BIND(/* <enter> */ "ctrl-M", "/cursor stop");
|
||||
BIND(/* <enter> */ "ctrl-J", "/cursor stop");
|
||||
BIND(/* <enter> */ "ctrl-m", "/cursor stop");
|
||||
BIND(/* <enter> */ "ctrl-j", "/cursor stop");
|
||||
BIND(/* <up> */ "meta2-A", "/cursor move up");
|
||||
BIND(/* <down> */ "meta2-B", "/cursor move down");
|
||||
BIND(/* <left> */ "meta2-D", "/cursor move left");
|
||||
@@ -343,77 +343,78 @@ gui_key_flush (int paste)
|
||||
insert_ok = 1;
|
||||
utf_partial_char[0] = '\0';
|
||||
|
||||
if (gui_mouse_event_pending || (key < 32) || (key == 127))
|
||||
if (gui_mouse_event_pending)
|
||||
{
|
||||
if (gui_mouse_event_pending)
|
||||
insert_ok = 0;
|
||||
key_str[0] = (char)key;
|
||||
key_str[1] = '\0';
|
||||
length_key_str = 1;
|
||||
}
|
||||
else if (key < 32)
|
||||
{
|
||||
insert_ok = 0;
|
||||
key_str[0] = '\x01';
|
||||
key_str[1] = (char)key + '@';
|
||||
/*
|
||||
* note: the terminal makes no difference between ctrl-x and
|
||||
* ctrl-shift-x, so for now WeeChat uses lower case letters for
|
||||
* ctrl keys
|
||||
*/
|
||||
if ((key_str[1] >= 'A') && (key_str[1] <= 'Z'))
|
||||
key_str[1] += 'a' - 'A';
|
||||
key_str[2] = '\0';
|
||||
length_key_str = 2;
|
||||
}
|
||||
else if (key == 127)
|
||||
{
|
||||
key_str[0] = '\x01';
|
||||
key_str[1] = '?';
|
||||
key_str[2] = '\0';
|
||||
length_key_str = 2;
|
||||
}
|
||||
else if (local_utf8)
|
||||
{
|
||||
key_str[length_key_str] = (char)key;
|
||||
key_str[length_key_str + 1] = '\0';
|
||||
length_key_str++;
|
||||
|
||||
/*
|
||||
* replace invalid chars by "?", but NOT last char of
|
||||
* string, if it is incomplete UTF-8 char (another char
|
||||
* will be added to the string on next iteration)
|
||||
*/
|
||||
ptr_char = key_str;
|
||||
while (ptr_char && ptr_char[0])
|
||||
{
|
||||
insert_ok = 0;
|
||||
key_str[0] = (char)key;
|
||||
key_str[1] = '\0';
|
||||
length_key_str = 1;
|
||||
}
|
||||
else if (key < 32)
|
||||
{
|
||||
insert_ok = 0;
|
||||
key_str[0] = '\x01';
|
||||
key_str[1] = (char)key + '@';
|
||||
key_str[2] = '\0';
|
||||
length_key_str = 2;
|
||||
}
|
||||
else if (key == 127)
|
||||
{
|
||||
key_str[0] = '\x01';
|
||||
key_str[1] = '?';
|
||||
key_str[2] = '\0';
|
||||
length_key_str = 2;
|
||||
(void) utf8_is_valid (ptr_char, -1, &ptr_error);
|
||||
if (!ptr_error)
|
||||
break;
|
||||
next_char = (char *)utf8_next_char (ptr_error);
|
||||
if (next_char && next_char[0])
|
||||
{
|
||||
ptr_char = ptr_error;
|
||||
while (ptr_char < next_char)
|
||||
{
|
||||
ptr_char[0] = '?';
|
||||
ptr_char++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy (utf_partial_char, ptr_char);
|
||||
ptr_char[0] = '\0';
|
||||
break;
|
||||
}
|
||||
ptr_char = next_char;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (local_utf8)
|
||||
{
|
||||
key_str[length_key_str] = (char)key;
|
||||
key_str[length_key_str + 1] = '\0';
|
||||
length_key_str++;
|
||||
|
||||
/*
|
||||
* replace invalid chars by "?", but NOT last char of
|
||||
* string, if it is incomplete UTF-8 char (another char
|
||||
* will be added to the string on next iteration)
|
||||
*/
|
||||
ptr_char = key_str;
|
||||
while (ptr_char && ptr_char[0])
|
||||
{
|
||||
(void) utf8_is_valid (ptr_char, -1, &ptr_error);
|
||||
if (!ptr_error)
|
||||
break;
|
||||
next_char = (char *)utf8_next_char (ptr_error);
|
||||
if (next_char && next_char[0])
|
||||
{
|
||||
ptr_char = ptr_error;
|
||||
while (ptr_char < next_char)
|
||||
{
|
||||
ptr_char[0] = '?';
|
||||
ptr_char++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy (utf_partial_char, ptr_char);
|
||||
ptr_char[0] = '\0';
|
||||
break;
|
||||
}
|
||||
ptr_char = next_char;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* convert input to UTF-8 */
|
||||
key_temp[0] = (char)key;
|
||||
key_temp[1] = '\0';
|
||||
key_utf = string_iconv_to_internal (NULL, key_temp);
|
||||
strcat (key_str, key_utf);
|
||||
}
|
||||
/* convert input to UTF-8 */
|
||||
key_temp[0] = (char)key;
|
||||
key_temp[1] = '\0';
|
||||
key_utf = string_iconv_to_internal (NULL, key_temp);
|
||||
strcat (key_str, key_utf);
|
||||
}
|
||||
|
||||
if (key_str[0])
|
||||
@@ -553,12 +554,12 @@ gui_key_read_cb (const void *pointer, void *data, int fd)
|
||||
{
|
||||
if (gui_key_paste_pending && (buffer[i] == 25))
|
||||
{
|
||||
/* ctrl-Y: accept paste */
|
||||
/* ctrl-y: accept paste */
|
||||
accept_paste = 1;
|
||||
}
|
||||
else if (gui_key_paste_pending && (buffer[i] == 14))
|
||||
{
|
||||
/* ctrl-N: cancel paste */
|
||||
/* ctrl-n: cancel paste */
|
||||
cancel_paste = 1;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -111,7 +111,7 @@ gui_main_get_password (const char **prompt, char *password, int size)
|
||||
/* enter */
|
||||
if (ch == '\n')
|
||||
break;
|
||||
/* terminal lost or ctrl-C */
|
||||
/* terminal lost or ctrl-c */
|
||||
if ((ch == ERR) || (ch == 3))
|
||||
{
|
||||
password[0] = 3;
|
||||
@@ -164,7 +164,7 @@ gui_main_init ()
|
||||
struct t_gui_bar_window *ptr_bar_win;
|
||||
char title[256];
|
||||
|
||||
/* allow Ctrl-C to quit WeeChat in headless mode */
|
||||
/* allow ctrl-c to quit WeeChat in headless mode */
|
||||
if (weechat_headless)
|
||||
signal_catch (SIGINT, &gui_main_signal_sigint);
|
||||
|
||||
|
||||
@@ -2461,7 +2461,8 @@ gui_window_swap (struct t_gui_window *window, int direction)
|
||||
/*
|
||||
* Called when terminal size is modified.
|
||||
*
|
||||
* Argument full_refresh == 1 when Ctrl+L is pressed, or if terminal is resized.
|
||||
* Argument full_refresh == 1 when ctrl-l is pressed, or if terminal is
|
||||
* resized.
|
||||
*/
|
||||
|
||||
void
|
||||
|
||||
@@ -759,8 +759,8 @@ gui_bar_item_input_paste_cb (const void *pointer, void *data,
|
||||
|
||||
lines = gui_key_get_paste_lines ();
|
||||
snprintf (str_paste, sizeof (str_paste),
|
||||
NG_("%sPaste %d line? [ctrl-Y] Yes [ctrl-N] No",
|
||||
"%sPaste %d lines? [ctrl-Y] Yes [ctrl-N] No",
|
||||
NG_("%sPaste %d line? [ctrl-y] Yes [ctrl-n] No",
|
||||
"%sPaste %d lines? [ctrl-y] Yes [ctrl-n] No",
|
||||
lines),
|
||||
gui_color_get_custom (gui_color_get_name (CONFIG_COLOR(config_color_input_actions))),
|
||||
lines);
|
||||
|
||||
+8
-8
@@ -300,7 +300,7 @@ gui_input_clipboard_copy (const char *buffer, int size)
|
||||
|
||||
/*
|
||||
* Pastes the internal clipboard at cursor pos in input line
|
||||
* (default key: ctrl-Y).
|
||||
* (default key: ctrl-y).
|
||||
*/
|
||||
|
||||
void
|
||||
@@ -490,7 +490,7 @@ gui_input_complete_previous (struct t_gui_buffer *buffer)
|
||||
}
|
||||
|
||||
/*
|
||||
* Searches for text in buffer at current position (default key: ctrl-R).
|
||||
* Searches for text in buffer at current position (default key: ctrl-r).
|
||||
*/
|
||||
|
||||
void
|
||||
@@ -578,7 +578,7 @@ gui_input_search_switch_case (struct t_gui_buffer *buffer)
|
||||
}
|
||||
|
||||
/*
|
||||
* Switches string/regex for search in buffer (default key: ctrl-R during
|
||||
* Switches string/regex for search in buffer (default key: ctrl-r during
|
||||
* search).
|
||||
*/
|
||||
|
||||
@@ -675,7 +675,7 @@ gui_input_search_stop_here (struct t_gui_buffer *buffer)
|
||||
}
|
||||
|
||||
/*
|
||||
* Stops text search (default key: ctrl-Q during search).
|
||||
* Stops text search (default key: ctrl-q during search).
|
||||
*/
|
||||
|
||||
void
|
||||
@@ -828,7 +828,7 @@ gui_input_delete_previous_word (struct t_gui_buffer *buffer)
|
||||
}
|
||||
|
||||
/*
|
||||
* Deletes previous word until whitespace (default key: ctrl-W).
|
||||
* Deletes previous word until whitespace (default key: ctrl-w).
|
||||
*/
|
||||
|
||||
void
|
||||
@@ -914,7 +914,7 @@ gui_input_delete_next_word (struct t_gui_buffer *buffer)
|
||||
}
|
||||
|
||||
/*
|
||||
* Deletes all from cursor pos to beginning of line (default key: ctrl-U).
|
||||
* Deletes all from cursor pos to beginning of line (default key: ctrl-u).
|
||||
*/
|
||||
|
||||
void
|
||||
@@ -950,7 +950,7 @@ gui_input_delete_beginning_of_line (struct t_gui_buffer *buffer)
|
||||
}
|
||||
|
||||
/*
|
||||
* Deletes all from cursor pos to end of line (default key: ctrl-K).
|
||||
* Deletes all from cursor pos to end of line (default key: ctrl-k).
|
||||
*/
|
||||
|
||||
void
|
||||
@@ -998,7 +998,7 @@ gui_input_delete_line (struct t_gui_buffer *buffer)
|
||||
}
|
||||
|
||||
/*
|
||||
* Transposes chars at cursor pos (default key: ctrl-T).
|
||||
* Transposes chars at cursor pos (default key: ctrl-t).
|
||||
*/
|
||||
|
||||
void
|
||||
|
||||
+22
-3
@@ -268,7 +268,11 @@ gui_key_grab_end_timer_cb (const void *pointer, void *data,
|
||||
/*
|
||||
* Gets internal code from user key name.
|
||||
*
|
||||
* For example: returns '\x01'+'R' for "ctrl-R"
|
||||
* Examples:
|
||||
* "meta-a" => "\x01[a"
|
||||
* "meta-A" => "\x01[A"
|
||||
* "ctrl-R" => "\x01" + "r" (lower case enforced for ctrl keys)
|
||||
* "ctrl-r" => "\x01" + "r"
|
||||
*
|
||||
* Note: result must be freed after use.
|
||||
*/
|
||||
@@ -276,7 +280,7 @@ gui_key_grab_end_timer_cb (const void *pointer, void *data,
|
||||
char *
|
||||
gui_key_get_internal_code (const char *key)
|
||||
{
|
||||
char **result;
|
||||
char **result, str_key[2];
|
||||
|
||||
if (!key)
|
||||
return NULL;
|
||||
@@ -307,6 +311,21 @@ gui_key_get_internal_code (const char *key)
|
||||
if (key[5])
|
||||
string_dyn_concat (result, "\x01", -1);
|
||||
key += 5;
|
||||
if (key[0])
|
||||
{
|
||||
/*
|
||||
* note: the terminal makes no difference between ctrl-x and
|
||||
* ctrl-shift-x, so for now WeeChat automatically converts any
|
||||
* ctrl-letter key to lower case: when the user tries to bind
|
||||
* "ctrl-A", the key "ctrl-a" is actually added
|
||||
* (lower case is forced for ctrl keys)
|
||||
*/
|
||||
str_key[0] = ((key[0] >= 'A') && (key[0] <= 'Z')) ?
|
||||
key[0] + ('a' - 'A') : key[0];
|
||||
str_key[1] = '\0';
|
||||
string_dyn_concat (result, str_key, -1);
|
||||
key++;
|
||||
}
|
||||
}
|
||||
else if (strncmp (key, "space", 5) == 0)
|
||||
{
|
||||
@@ -1760,7 +1779,7 @@ gui_key_get_paste_lines ()
|
||||
|
||||
/*
|
||||
* Checks pasted lines: if more than N lines, then enables paste mode and ask
|
||||
* confirmation to user (ctrl-Y=paste, ctrl-N=cancel) (N is option
|
||||
* confirmation to user (ctrl-y=paste, ctrl-n=cancel) (N is option
|
||||
* weechat.look.paste_max_lines).
|
||||
*
|
||||
* Returns:
|
||||
|
||||
@@ -141,7 +141,7 @@ buflist_buffer_get_irc_pointers (struct t_gui_buffer *buffer,
|
||||
* Buffers are sorted so that the active buffer and buffers immediately after
|
||||
* this one are first in list, followed by the buffers before the active one.
|
||||
* This sort respects the order of next active buffers that can be selected
|
||||
* with ctrl-X.
|
||||
* with ctrl-x.
|
||||
*
|
||||
* For example with such list of merged buffers:
|
||||
*
|
||||
|
||||
@@ -83,7 +83,7 @@ fset_buffer_set_title ()
|
||||
"(u)=unmark matching options, "
|
||||
"alt+p(p)=toggle plugins desc, "
|
||||
"alt+v(v)=toggle help bar, "
|
||||
"ctrl+X(x)=switch format, "
|
||||
"ctrl+x(x)=switch format, "
|
||||
"(q)=close buffer"),
|
||||
weechat_color (weechat_config_string (fset_config_color_title_current_option)),
|
||||
(num_options > 0) ? fset_buffer_selected_line + 1 : 0,
|
||||
@@ -1363,17 +1363,17 @@ fset_buffer_set_keys ()
|
||||
{ "meta-+", "/fset -add 1" },
|
||||
{ "meta-fmeta-r", "/fset -reset" },
|
||||
{ "meta-fmeta-u", "/fset -unset" },
|
||||
{ "meta-ctrl-J", "/fset -set" },
|
||||
{ "meta-ctrl-M", "/fset -set" },
|
||||
{ "meta-ctrl-j", "/fset -set" },
|
||||
{ "meta-ctrl-m", "/fset -set" },
|
||||
{ "meta-fmeta-n", "/fset -setnew" },
|
||||
{ "meta-fmeta-a", "/fset -append" },
|
||||
{ "meta-,", "/fset -mark" },
|
||||
{ "meta2-a", "/fset -up; /fset -mark" },
|
||||
{ "meta2-b", "/fset -mark; /fset -down" },
|
||||
{ "ctrl-L", "/fset -refresh" },
|
||||
{ "ctrl-l", "/fset -refresh" },
|
||||
{ "meta-p", "/mute /set fset.look.show_plugins_desc toggle" },
|
||||
{ "meta-v", "/bar toggle " FSET_BAR_NAME },
|
||||
{ "ctrl-X", "/fset -format" },
|
||||
{ "ctrl-x", "/fset -format" },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
char str_key[64];
|
||||
|
||||
@@ -745,7 +745,7 @@ fset_command_init ()
|
||||
"see filters above)\n"
|
||||
"\n"
|
||||
"Other keys and input on fset buffer:\n"
|
||||
" ctrl+L refresh options and whole screen "
|
||||
" ctrl+l refresh options and whole screen "
|
||||
"(command: /fset -refresh)\n"
|
||||
" $ refresh options (keep marked options)\n"
|
||||
" $$ refresh options (unmark all options)\n"
|
||||
@@ -759,7 +759,7 @@ fset_command_init ()
|
||||
" w:xxx export options in file \"xxx\"\n"
|
||||
" w-:xxx export options in file \"xxx\" without help\n"
|
||||
" w+:xxx export options in file \"xxx\" with help\n"
|
||||
" ctrl+X x switch the format used to display options\n"
|
||||
" ctrl+x x switch the format used to display options\n"
|
||||
" q close fset buffer\n"
|
||||
"\n"
|
||||
"Mouse actions on fset buffer:\n"
|
||||
|
||||
@@ -433,7 +433,7 @@ fset_config_init ()
|
||||
fset_config_file, ptr_section,
|
||||
"format_number", "integer",
|
||||
N_("number of format used to display options; this is dynamically "
|
||||
"changed by the key ctrl-X on the fset buffer"),
|
||||
"changed by the key ctrl-x on the fset buffer"),
|
||||
NULL, 1, 2, "1", NULL, 0,
|
||||
NULL, NULL, NULL,
|
||||
&fset_config_change_format_number_cb, NULL, NULL,
|
||||
@@ -566,7 +566,7 @@ fset_config_init ()
|
||||
"an empty string uses the default format "
|
||||
"(\"${marked} ${name} ${type} ${value2}\"), which is without "
|
||||
"evaluation of string and then much faster; "
|
||||
"formats can be switched with key ctrl+X"),
|
||||
"formats can be switched with key ctrl-x"),
|
||||
NULL, 0, 0,
|
||||
"",
|
||||
NULL, 0,
|
||||
@@ -582,7 +582,7 @@ fset_config_init ()
|
||||
"an empty string uses the default format "
|
||||
"(\"${marked} ${name} ${type} ${value2}\"), which is without "
|
||||
"evaluation of string and then much faster; "
|
||||
"formats can be switched with key ctrl+X"),
|
||||
"formats can be switched with key ctrl-x"),
|
||||
NULL, 0, 0,
|
||||
"${marked} ${name} ${type} ${value2}${newline}"
|
||||
" ${empty_name} ${_default_value}${color:darkgray} -- "
|
||||
|
||||
Reference in New Issue
Block a user