From 30f7846e4c106957709cc4039068f1d57f1587d7 Mon Sep 17 00:00:00 2001 From: Dave Davenport Date: Sun, 15 Jan 2017 21:14:43 +0100 Subject: Give error when multiple (non-modifier) keys are hit. --- source/x11-helper.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/source/x11-helper.c b/source/x11-helper.c index 3723e883..2411d3ec 100644 --- a/source/x11-helper.c +++ b/source/x11-helper.c @@ -678,7 +678,10 @@ gboolean x11_parse_key ( const char *combo, unsigned int *mod, xkb_keysym_t *key error_msg = g_strdup ( "X11 configured keyboard has no Alt key.\n" ); } } - else if ( g_utf8_collate ( entry_lowered, "super" ) == 0 ) { + else if ( g_utf8_collate ( entry_lowered, "super" ) == 0 || + g_utf8_collate ( entry_lowered, "super_l" ) == 0 || + g_utf8_collate ( entry_lowered, "super_r" ) == 0 + ) { modmask |= x11_mod_masks[X11MOD_SUPER]; if ( x11_mod_masks[X11MOD_SUPER] == 0 ) { error_msg = g_strdup ( "X11 configured keyboard has no Super key.\n" ); @@ -697,6 +700,9 @@ gboolean x11_parse_key ( const char *combo, unsigned int *mod, xkb_keysym_t *key } } else { + if ( sym != XKB_KEY_NoSymbol ) { + error_msg = g_markup_printf_escaped ( "Only one (non modifier) key can be bound per binding: %s is invalid.\n", entry); + } sym = xkb_keysym_from_name ( entry, XKB_KEYSYM_NO_FLAGS ); if ( sym == XKB_KEY_NoSymbol ) { error_msg = g_markup_printf_escaped ( "∙ Key %s is not understood\n", entry ); -- cgit v1.2.3