Skip to content
  • Martin Flöser's avatar
    Migrate Xkb::toQtKey away from KKeyServer · 5d101ce2
    Martin Flöser authored
    Summary:
    Turn Xkb into a QObject
    
    Reduced dependencies on other classes and allows to emit signal directly
    instead of emitting a signal on another class.
    
    Dependency inject KWayland::Server::SeatInterface into Xkb
    
    No need to depend on WaylandServer from within Xkb.
    
    [autotests] Add test case for Xkb::toQtKey
    
    Tests all key codes KKeyServer is able to map to Qt.
    
    Migrate Xkb::toQtKey away from KKeyServer
    
    The regression in kwindowsystem in
    32526718eae99ccb594360627586eebdf793372b showed once more that it's time
    to migrate the xkb keysym to Qt::Key mapping away from KKeyServer. The
    main problem with KKeyServer is that it's made for X11 and we don't have
    X11 here. This causes warnings printed at runtime and the code only
    works by accident at all because KKeyServer fails to initialise
    modifiers. That is normally KKeyServer would include the modifiers, but
    that is nothing we are interested in for mapping xkb keysyms to Qt::Key.
    
    So to address this, KWin now implements the mapping itself. It's based
    on the implementation in KKeyServer, but also improved by providing
    faster xkb to Qt conversion (which matters for KWin more than the other
    direction).
    
    Long term plan is to extend this so that also on X11 it can be used.
    Then it should be split out and be used in KKeyServer as a replacement
    for the current implementation which could support both X11 and Wayland.
    
    Test Plan:
    New test case added which covers all keysyms supported by
    existing KKeyserver mapping
    
    Reviewers: #kwin, #plasma
    
    Subscribers: plasma-devel, kwin
    
    Tags: #kwin
    
    Differential Revision: https://phabricator.kde.org/D7336
    5d101ce2