If a keybind contained a 1 this was only checked if it where uppercase, and
the shift mask was added to the keybinding. Indeed the 1 is uppercase and
lowercase together, so we ignore such cases where the char is available in
both cases.
/* set the shift mask for uppercase keys like 'G' */
guint32 ukval = gdk_keyval_to_unicode(keybind->keyval);
- if (g_unichar_isgraph(ukval) && gdk_keyval_is_upper(keybind->keyval)) {
+ if (g_unichar_isgraph(ukval)
+ /* ignore SHIFT if key is not subject to case */
+ && (gdk_keyval_is_upper(keybind->keyval) && !gdk_keyval_is_lower(keybind->keyval))
+ ) {
keybind->modmask = GDK_SHIFT_MASK;
}