Skip to content
  • Jonas Ådahl's avatar
    keybindings: Only add multiple keycodes from the same level · 827d0b3f
    Jonas Ådahl authored
    The reason why multiple keycodes could be mapped to a single keysym was
    to support having both KEY_FAVORITES and KEY_BOOKMARK map to
    XF86Favorites. However, iterating through all layout levels adding all
    key codes has severe consequences on layouts with levels that map
    things like numbers and arrow. The result is that keybindings that
    should only have been added for keycodes from the first level, are
    replaced by some unexpected keycode where the same keysym was found on
    another level.
    
    An example of this is the up-arrow key and l symbol. Normally you'd find
    both the up-arrow symbol and the l symbol on the first level and be done
    with it. However, on the German Neo-2 layout, layout level 4 maps the
    KEY_E to the l symbol, while layout level 4 maps KEY_E to up-arrow.
    Which ever gets to take priority is arbitrary, but for this particular
    case KEY_E incorrectly mapped to up-arrow instead of the l symbol,
    causing the keyboard shortcut Super+l, which would normally lock the
    screen, to trigger the workspace-up (Super+up-arrow) key binding.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=789300
    827d0b3f