From 2d7a0ab21fd951f6adacfe98442d849490c147da Mon Sep 17 00:00:00 2001 From: Harenayo <123649644+harenayo@users.noreply.github.com> Date: Fri, 28 Jun 2024 18:15:20 +0900 Subject: [PATCH] Fix #6279: prevent sending keymap or repeat info events by keyboards without keyboard capability --- src/protocols/core/Seat.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/protocols/core/Seat.cpp b/src/protocols/core/Seat.cpp index f578292a..507a9c4a 100644 --- a/src/protocols/core/Seat.cpp +++ b/src/protocols/core/Seat.cpp @@ -2,6 +2,7 @@ #include "Compositor.hpp" #include "DataDevice.hpp" #include "../../devices/IKeyboard.hpp" +#include "../../devices/IHID.hpp" #include "../../managers/SeatManager.hpp" #include "../../config/ConfigValue.hpp" #include @@ -451,12 +452,20 @@ void CWLSeatProtocol::updateCapabilities(uint32_t caps) { } void CWLSeatProtocol::updateKeymap() { + if (!(currentCaps & eHIDCapabilityType::HID_INPUT_CAPABILITY_KEYBOARD)) { + return; + } + for (auto& k : m_vKeyboards) { k->sendKeymap(g_pSeatManager->keyboard.lock()); } } void CWLSeatProtocol::updateRepeatInfo(uint32_t rate, uint32_t delayMs) { + if (!(currentCaps & eHIDCapabilityType::HID_INPUT_CAPABILITY_KEYBOARD)) { + return; + } + for (auto& k : m_vKeyboards) { k->repeatInfo(rate, delayMs); }