diff options
-rw-r--r-- | src/fe-common/core/keyboard.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/fe-common/core/keyboard.c b/src/fe-common/core/keyboard.c index c5870aee..8b764fce 100644 --- a/src/fe-common/core/keyboard.c +++ b/src/fe-common/core/keyboard.c @@ -193,7 +193,7 @@ static int expand_combo(const char *start, const char *end, GSList **out) KEY_REC *rec; KEYINFO_REC *info; GSList *tmp, *tmp2, *list, *copy, *newout; - char *str; + char *str, *p; if (start == end) { /* single key */ @@ -214,10 +214,16 @@ static int expand_combo(const char *start, const char *end, GSList **out) if (strcmp(rec->data, str) == 0) list = g_slist_append(list, rec); } - g_free(str); - if (list == NULL) - return FALSE; + if (list == NULL) { + /* unknown keycombo - add it as-is, maybe the GUI will + feed it to us as such */ + for (p = str; *p != '\0'; p++) + expand_out_char(*out, *p); + g_free(str); + return TRUE; + } + g_free(str); if (list->next == NULL) { /* only one way to generate the combo, good */ |