37 |
t_gui_key *last_gui_key = NULL; |
t_gui_key *last_gui_key = NULL; |
38 |
|
|
39 |
char gui_key_buffer[128]; |
char gui_key_buffer[128]; |
40 |
|
int gui_key_grab = 0; |
41 |
|
int gui_key_grab_count = 0; |
42 |
|
|
43 |
t_gui_key_function gui_key_functions[] = |
t_gui_key_function gui_key_functions[] = |
44 |
{ { "return", gui_input_return, |
{ { "return", gui_input_return, |
59 |
N_("delete previous word") }, |
N_("delete previous word") }, |
60 |
{ "delete_next_word", gui_input_delete_next_word, |
{ "delete_next_word", gui_input_delete_next_word, |
61 |
N_("delete next word") }, |
N_("delete next word") }, |
62 |
{ "clipboard_paste", gui_input_clipboard_paste, |
{ "clipboard_paste", gui_input_clipboard_paste, |
63 |
N_("paste current clipboard content") }, |
N_("paste current clipboard content") }, |
64 |
{ "transpose_chars", gui_input_transpose_chars, |
{ "transpose_chars", gui_input_transpose_chars, |
65 |
N_("transpose chars") }, |
N_("transpose chars") }, |
66 |
{ "home", gui_input_home, |
{ "home", gui_input_home, |
67 |
N_("go to beginning of line") }, |
N_("go to beginning of line") }, |
105 |
N_("jump to next server") }, |
N_("jump to next server") }, |
106 |
{ "hotlist_clear", gui_input_hotlist_clear, |
{ "hotlist_clear", gui_input_hotlist_clear, |
107 |
N_("clear hotlist") }, |
N_("clear hotlist") }, |
108 |
|
{ "grab_key", gui_input_grab_key, |
109 |
|
N_("grab a key") }, |
110 |
{ NULL, NULL, NULL } |
{ NULL, NULL, NULL } |
111 |
}; |
}; |
112 |
|
|
119 |
gui_key_init () |
gui_key_init () |
120 |
{ |
{ |
121 |
gui_key_buffer[0] = '\0'; |
gui_key_buffer[0] = '\0'; |
122 |
|
gui_key_grab = 0; |
123 |
|
gui_key_grab_count = 0; |
124 |
|
|
125 |
gui_input_default_key_bindings (); |
gui_input_default_key_bindings (); |
126 |
} |
} |
127 |
|
|
128 |
/* |
/* |
129 |
|
* gui_key_init_show: init "show mode" |
130 |
|
*/ |
131 |
|
|
132 |
|
void |
133 |
|
gui_key_init_grab () |
134 |
|
{ |
135 |
|
gui_key_grab = 1; |
136 |
|
gui_key_grab_count = 0; |
137 |
|
} |
138 |
|
|
139 |
|
/* |
140 |
* gui_key_get_internal_code: get internal code from user key name |
* gui_key_get_internal_code: get internal code from user key name |
141 |
* for example: return "^R" for "ctrl-R" |
* for example: return "^R" for "ctrl-R" |
142 |
*/ |
*/ |
204 |
strcat (result, "meta-"); |
strcat (result, "meta-"); |
205 |
key += 2; |
key += 2; |
206 |
} |
} |
207 |
else if (key[0] == '^') |
else if ((key[0] == '^') && (key[1])) |
208 |
{ |
{ |
209 |
strcat (result, "ctrl-"); |
strcat (result, "ctrl-"); |
210 |
key++; |
key++; |
483 |
int first_key; |
int first_key; |
484 |
t_gui_key *ptr_key; |
t_gui_key *ptr_key; |
485 |
|
|
486 |
|
/* add key to buffer */ |
487 |
first_key = (gui_key_buffer[0] == '\0'); |
first_key = (gui_key_buffer[0] == '\0'); |
488 |
strcat (gui_key_buffer, key_str); |
strcat (gui_key_buffer, key_str); |
489 |
|
|
490 |
|
/* if we are in "show mode", increase counter and return */ |
491 |
|
if (gui_key_grab) |
492 |
|
{ |
493 |
|
gui_key_grab_count++; |
494 |
|
return 0; |
495 |
|
} |
496 |
|
|
497 |
|
/* look for key combo in key table */ |
498 |
ptr_key = gui_key_search_part (gui_key_buffer); |
ptr_key = gui_key_search_part (gui_key_buffer); |
499 |
if (ptr_key) |
if (ptr_key) |
500 |
{ |
{ |
509 |
else |
else |
510 |
(void)(ptr_key->function)(); |
(void)(ptr_key->function)(); |
511 |
} |
} |
|
//else |
|
|
// gui_printf (gui_current_window->buffer, "partial key found\n"); |
|
512 |
return 0; |
return 0; |
513 |
} |
} |
514 |
|
|