summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/fe-common/core/keyboard.c14
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 */