mirror of
https://github.com/Tha14/toxic.git
synced 2024-11-22 21:23:01 +01:00
Disallow ctrl+m keybinding and revert to default settings on invalid bindings
Note: Ctrl+m uses the same control sequence as the enter key on many systems
This commit is contained in:
parent
50f227418b
commit
32442b6286
@ -90,6 +90,7 @@ sounds = {
|
|||||||
|
|
||||||
// Currently supported: Ctrl modified keys, Tab, PAGEUP and PAGEDOWN (case insensitive)
|
// Currently supported: Ctrl modified keys, Tab, PAGEUP and PAGEDOWN (case insensitive)
|
||||||
// Note: All printable keys register as input
|
// Note: All printable keys register as input
|
||||||
|
// Note2: Ctrl+M does not work
|
||||||
keys = {
|
keys = {
|
||||||
next_tab="Ctrl+P";
|
next_tab="Ctrl+P";
|
||||||
prev_tab="Ctrl+O";
|
prev_tab="Ctrl+O";
|
||||||
|
@ -230,11 +230,11 @@ static const struct sound_strings {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int key_parse(const char** bind){
|
static int key_parse(const char **bind) {
|
||||||
int len = strlen(*bind);
|
int len = strlen(*bind);
|
||||||
|
|
||||||
if (len > 5) {
|
if (len > 5) {
|
||||||
if(strncasecmp(*bind, "ctrl+", 5) == 0)
|
if(strncasecmp(*bind, "ctrl+", 5) == 0 && toupper(bind[0][5]) != 'M') /* ctrl+m cannot be used */
|
||||||
return toupper(bind[0][5]) - 'A' + 1;
|
return toupper(bind[0][5]) - 'A' + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -247,6 +247,14 @@ static int key_parse(const char** bind){
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void set_key_binding(int *key, const char **bind) {
|
||||||
|
int code = key_parse(bind);
|
||||||
|
|
||||||
|
if (code != -1) {
|
||||||
|
*key = code;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int settings_load(struct user_settings *s, const char *patharg)
|
int settings_load(struct user_settings *s, const char *patharg)
|
||||||
{
|
{
|
||||||
config_t cfg[1];
|
config_t cfg[1];
|
||||||
@ -383,27 +391,27 @@ int settings_load(struct user_settings *s, const char *patharg)
|
|||||||
if ((setting = config_lookup(cfg, key_strings.self)) != NULL) {
|
if ((setting = config_lookup(cfg, key_strings.self)) != NULL) {
|
||||||
const char* tmp = NULL;
|
const char* tmp = NULL;
|
||||||
if (config_setting_lookup_string(setting, key_strings.next_tab, &tmp))
|
if (config_setting_lookup_string(setting, key_strings.next_tab, &tmp))
|
||||||
s->key_next_tab = key_parse(&tmp);
|
set_key_binding(&s->key_next_tab, &tmp);
|
||||||
if (config_setting_lookup_string(setting, key_strings.prev_tab, &tmp))
|
if (config_setting_lookup_string(setting, key_strings.prev_tab, &tmp))
|
||||||
s->key_prev_tab = key_parse(&tmp);
|
set_key_binding(&s->key_prev_tab, &tmp);
|
||||||
if (config_setting_lookup_string(setting, key_strings.scroll_line_up, &tmp))
|
if (config_setting_lookup_string(setting, key_strings.scroll_line_up, &tmp))
|
||||||
s->key_scroll_line_up = key_parse(&tmp);
|
set_key_binding(&s->key_scroll_line_up, &tmp);
|
||||||
if (config_setting_lookup_string(setting, key_strings.scroll_line_down, &tmp))
|
if (config_setting_lookup_string(setting, key_strings.scroll_line_down, &tmp))
|
||||||
s->key_scroll_line_down= key_parse(&tmp);
|
set_key_binding(&s->key_scroll_line_down, &tmp);
|
||||||
if (config_setting_lookup_string(setting, key_strings.half_page_up, &tmp))
|
if (config_setting_lookup_string(setting, key_strings.half_page_up, &tmp))
|
||||||
s->key_half_page_up = key_parse(&tmp);
|
set_key_binding(&s->key_half_page_up, &tmp);
|
||||||
if (config_setting_lookup_string(setting, key_strings.half_page_down, &tmp))
|
if (config_setting_lookup_string(setting, key_strings.half_page_down, &tmp))
|
||||||
s->key_half_page_down = key_parse(&tmp);
|
set_key_binding(&s->key_half_page_down, &tmp);
|
||||||
if (config_setting_lookup_string(setting, key_strings.page_bottom, &tmp))
|
if (config_setting_lookup_string(setting, key_strings.page_bottom, &tmp))
|
||||||
s->key_page_bottom = key_parse(&tmp);
|
set_key_binding(&s->key_page_bottom, &tmp);
|
||||||
if (config_setting_lookup_string(setting, key_strings.peer_list_up, &tmp))
|
if (config_setting_lookup_string(setting, key_strings.peer_list_up, &tmp))
|
||||||
s->key_peer_list_up = key_parse(&tmp);
|
set_key_binding(&s->key_peer_list_up, &tmp);
|
||||||
if (config_setting_lookup_string(setting, key_strings.peer_list_down, &tmp))
|
if (config_setting_lookup_string(setting, key_strings.peer_list_down, &tmp))
|
||||||
s->key_peer_list_down = key_parse(&tmp);
|
set_key_binding(&s->key_peer_list_down, &tmp);
|
||||||
if (config_setting_lookup_string(setting, key_strings.toggle_peerlist, &tmp))
|
if (config_setting_lookup_string(setting, key_strings.toggle_peerlist, &tmp))
|
||||||
s->key_toggle_peerlist = key_parse(&tmp);
|
set_key_binding(&s->key_toggle_peerlist, &tmp);
|
||||||
if (config_setting_lookup_string(setting, key_strings.toggle_pastemode, &tmp))
|
if (config_setting_lookup_string(setting, key_strings.toggle_pastemode, &tmp))
|
||||||
s->key_toggle_pastemode = key_parse(&tmp);
|
set_key_binding(&s->key_toggle_pastemode, &tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef AUDIO
|
#ifdef AUDIO
|
||||||
|
Loading…
Reference in New Issue
Block a user