Forward keymap and modifier change to input method keyboard grab when changed.

This commit is contained in:
Weng Xuetian 2023-03-08 19:31:03 -08:00 committed by Xuetian Weng
parent bd91f77212
commit a03b6fa08f

View file

@ -8,8 +8,10 @@
*/ */
#include "xkb.h" #include "xkb.h"
#include "dbusproperties_interface.h" #include "dbusproperties_interface.h"
#include "inputmethod.h"
#include "utils/c_ptr.h" #include "utils/c_ptr.h"
#include "utils/common.h" #include "utils/common.h"
#include "wayland/inputmethod_v1_interface.h"
#include "wayland/keyboard_interface.h" #include "wayland/keyboard_interface.h"
#include "wayland/seat_interface.h" #include "wayland/seat_interface.h"
// frameworks // frameworks
@ -328,6 +330,9 @@ void Xkb::updateKeymap(xkb_keymap *keymap)
createKeymapFile(); createKeymapFile();
forwardModifiers(); forwardModifiers();
if (auto *inputmethod = kwinApp()->inputMethod()) {
inputmethod->forwardModifiers(InputMethod::Force);
}
updateModifiers(); updateModifiers();
} }
@ -338,6 +343,13 @@ void Xkb::createKeymapFile()
return; return;
} }
m_seat->keyboard()->setKeymap(currentKeymap); m_seat->keyboard()->setKeymap(currentKeymap);
auto *inputmethod = kwinApp()->inputMethod();
if (!inputmethod) {
return;
}
if (auto *keyboardGrab = inputmethod->keyboardGrab()) {
keyboardGrab->sendKeymap(currentKeymap);
}
} }
QByteArray Xkb::keymapContents() const QByteArray Xkb::keymapContents() const