From 38169c8fddcd21bd2c4ccebfa0c32100d5356aa0 Mon Sep 17 00:00:00 2001 From: usering-around Date: Thu, 11 Sep 2025 20:42:20 +0300 Subject: input: support xkb v2 format (#11482) --- src/protocols/InputMethodV2.cpp | 10 +++++----- src/protocols/VirtualKeyboard.cpp | 2 +- src/protocols/core/Seat.cpp | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) (limited to 'src/protocols') diff --git a/src/protocols/InputMethodV2.cpp b/src/protocols/InputMethodV2.cpp index 6eb419dc..d66d1f24 100644 --- a/src/protocols/InputMethodV2.cpp +++ b/src/protocols/InputMethodV2.cpp @@ -33,22 +33,22 @@ void CInputMethodKeyboardGrabV2::sendKeyboardData(SP keyboard) { m_lastKeyboard = keyboard; - auto keymapFD = allocateSHMFile(keyboard->m_xkbKeymapString.length() + 1); + auto keymapFD = allocateSHMFile(keyboard->m_xkbKeymapV1String.length() + 1); if UNLIKELY (!keymapFD.isValid()) { LOGM(ERR, "Failed to create a keymap file for keyboard grab"); return; } - void* data = mmap(nullptr, keyboard->m_xkbKeymapString.length() + 1, PROT_READ | PROT_WRITE, MAP_SHARED, keymapFD.get(), 0); + void* data = mmap(nullptr, keyboard->m_xkbKeymapV1String.length() + 1, PROT_READ | PROT_WRITE, MAP_SHARED, keymapFD.get(), 0); if UNLIKELY (data == MAP_FAILED) { LOGM(ERR, "Failed to mmap a keymap file for keyboard grab"); return; } - memcpy(data, keyboard->m_xkbKeymapString.c_str(), keyboard->m_xkbKeymapString.length()); - munmap(data, keyboard->m_xkbKeymapString.length() + 1); + memcpy(data, keyboard->m_xkbKeymapV1String.c_str(), keyboard->m_xkbKeymapV1String.length()); + munmap(data, keyboard->m_xkbKeymapV1String.length() + 1); - m_resource->sendKeymap(WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1, keymapFD.get(), keyboard->m_xkbKeymapString.length() + 1); + m_resource->sendKeymap(WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1, keymapFD.get(), keyboard->m_xkbKeymapV1String.length() + 1); sendMods(keyboard->m_modifiersState.depressed, keyboard->m_modifiersState.latched, keyboard->m_modifiersState.locked, keyboard->m_modifiersState.group); diff --git a/src/protocols/VirtualKeyboard.cpp b/src/protocols/VirtualKeyboard.cpp index 6fe3eed5..2acc2298 100644 --- a/src/protocols/VirtualKeyboard.cpp +++ b/src/protocols/VirtualKeyboard.cpp @@ -88,7 +88,7 @@ CVirtualKeyboardV1Resource::CVirtualKeyboardV1Resource(SP return; } - auto xkbKeymap = xkb_keymap_new_from_string(xkbContext, sc(keymapData), XKB_KEYMAP_FORMAT_TEXT_V1, XKB_KEYMAP_COMPILE_NO_FLAGS); + auto xkbKeymap = xkb_keymap_new_from_string(xkbContext, sc(keymapData), XKB_KEYMAP_FORMAT_TEXT_V2, XKB_KEYMAP_COMPILE_NO_FLAGS); munmap(keymapData, len); if UNLIKELY (!xkbKeymap) { diff --git a/src/protocols/core/Seat.cpp b/src/protocols/core/Seat.cpp index 0b356c6f..7e1ff53b 100644 --- a/src/protocols/core/Seat.cpp +++ b/src/protocols/core/Seat.cpp @@ -333,9 +333,9 @@ void CWLKeyboardResource::sendKeymap(SP keyboard) { if (!(PROTO::seat->m_currentCaps & eHIDCapabilityType::HID_INPUT_CAPABILITY_KEYBOARD)) return; - std::string_view keymap = keyboard->m_xkbKeymapString; - Hyprutils::OS::CFileDescriptor& fd = keyboard->m_xkbKeymapFD; - uint32_t size = keyboard->m_xkbKeymapString.length() + 1; + std::string_view keymap = keyboard->m_xkbKeymapV1String; + Hyprutils::OS::CFileDescriptor& fd = keyboard->m_xkbKeymapV1FD; + uint32_t size = keyboard->m_xkbKeymapV1String.length() + 1; if (keymap == m_lastKeymap) return; -- cgit v1.2.3