Skip to content
  • Martin Flöser's avatar
    Split implementation of keyboard layout handling into a dedicated class · d6c0a541
    Martin Flöser authored
    Summary:
    So far the implementation of keyboard layout handling was split between
    KeyboardInputRedirection and Xkb. KeyboardInputRedirection registered
    the global shortcut and did the handling for layout switch and config
    changes. Xkb did the notification on layout change.
    
    Layout changes can nowadays be detected through an InputEventSpy. It
    can only happen after a key change or an explicit layout switch. Thus
    it does not need to be in Xkb anymore which allows to reduce Xkb to
    only care about the Xkb keymap and state tracking.
    
    This change introduces a new class KeyboardLayout which is an
    InputEventSpy and takes over the task of the layout change notification
    from Xkb and the layout management from KeyboardInputRedirection. Thus
    everything related to management of keyboard layout is together in one
    class.
    
    This allows in future to add unit test to it (requires further cleanup
    of Xkb to be able to use it and drop the InputRedirection dependency) and
    opens the possibility to also take over keyboard layout management on X11
    for the Plasma desktop.
    
    Test Plan: Manual testing
    
    Reviewers: #kwin, #plasma_on_wayland
    
    Subscribers: plasma-devel, kwin
    
    Tags: #plasma_on_wayland, #kwin
    
    Differential Revision: https://phabricator.kde.org/D4135
    d6c0a541