11#include <config-kwin.h> 
   27#if KWIN_BUILD_SCREENLOCKER 
   28#include <KScreenLocker/KsldApp> 
   31#include <KGlobalAccel> 
   43    , m_xkb(new 
Xkb(kwinApp()->followLocale1()))
 
 
   60    return m_xkb->modifiers();
 
 
   65    return m_xkb->modifiersRelevantForGlobalShortcuts();
 
 
   78        if (event->isAutoRepeat()) {
 
 
 
   99        if (event->isAutoRepeat()) {
 
  102        const Qt::KeyboardModifiers mods = 
event->modifiers();
 
  103        if (mods == m_modifiers) {
 
 
  112    Qt::KeyboardModifiers m_modifiers;
 
 
  119    const auto config = kwinApp()->kxkbConfig();
 
  120    m_xkb->setNumLockConfig(kwinApp()->inputConfig());
 
  121    m_xkb->setConfig(config);
 
  129    m_keyboardLayout->
init();
 
  141    connect(
workspace(), &QObject::destroyed, 
this, [
this] {
 
  148        disconnect(m_activeWindowSurfaceChangedConnection);
 
  149        if (
auto window = 
workspace()->activeWindow()) {
 
  152            m_activeWindowSurfaceChangedConnection = QMetaObject::Connection();
 
  156#if KWIN_BUILD_SCREENLOCKER 
 
  171        const auto config = kwinApp()->inputConfig()->group(QStringLiteral(
"Keyboard"));
 
  172        const int delay = config.readEntry(
"RepeatDelay", 660);
 
  173        const int rate = std::ceil(config.readEntry(
"RepeatRate", 25.0));
 
  174        const QString repeatMode = config.readEntry(
"KeyRepeat", 
"repeat");
 
  177        const bool enabled = repeatMode == QLatin1String(
"accent") || repeatMode == QLatin1String(
"repeat");
 
 
  193        if (!stacking.isEmpty()) {
 
  194            auto it = stacking.end();
 
  210            } 
while (it != stacking.begin());
 
  212    } 
else if (!
input()->isSelectingWindow()) {
 
  215    if (found && found->
surface()) {
 
  216        if (found->
surface() != seat->focusedKeyboardSurface()) {
 
  217            seat->setFocusedKeyboardSurface(found->
surface());
 
  220        seat->setFocusedKeyboardSurface(
nullptr);
 
 
  227    bool autoRepeat = 
false;
 
  233        type = QEvent::KeyPress;
 
  236        type = QEvent::KeyRelease;
 
  242    const quint32 previousLayout = m_xkb->currentLayout();
 
  244        m_xkb->updateKey(key, state);
 
  248    const Qt::KeyboardModifiers globalShortcutsModifiers = m_xkb->modifiersRelevantForGlobalShortcuts(key);
 
  250                   m_xkb->toQtKey(keySym, key, globalShortcutsModifiers ? Qt::ControlModifier : Qt::KeyboardModifiers()),
 
  254                   m_xkb->toString(keySym),
 
  267    m_xkb->forwardModifiers();
 
  268    if (
auto *inputmethod = kwinApp()->inputMethod()) {
 
  272    if (event.modifiersRelevantForGlobalShortcuts() == Qt::KeyboardModifier::NoModifier && 
type != QEvent::KeyRelease) {
 
 
  279#include "moc_keyboard_input.cpp" 
void setModifiersRelevantForGlobalShortcuts(const Qt::KeyboardModifiers &mods)
void keyEvent(KeyEvent *event) override
KeyStateChangedSpy(InputRedirection *input)
void setRepeatInfo(qint32 charactersPerSecond, qint32 delay)
void checkLayoutChange(uint previousLayout)
void keyRepeat(quint32 key, std::chrono::microseconds time)
void keyEvent(KeyEvent *event) override
ModifiersChangedSpy(InputRedirection *input)
void setHasKeyboard(bool has)
KeyboardInterface * keyboard() const
bool hasScreenLockerIntegration() const
SeatInterface * seat() const
SurfaceInterface * surface() const
bool readyForPainting() const
virtual bool isLockScreen() const
Window * activeWindow() const
const QList< Window * > & stackingOrder() const
void windowActivated(KWin::Window *)
static Workspace * self()
void ledsChanged(const LEDs &leds)
WaylandServer * waylandServer()
InputRedirection * input()