diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-12-05 14:28:27 +0000 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-12-05 14:28:27 +0000 |
| commit | ac0e675f3b0bcd9f5c01f43b050d1da6d1215be0 (patch) | |
| tree | bc5bd1281736cdb6d293ab778379b86dff8d66e2 /src/managers/input/InputManager.cpp | |
| parent | f71f04db9e13950af4a97ae6c8cd31311f8cb6bd (diff) | |
better capability handling
Diffstat (limited to 'src/managers/input/InputManager.cpp')
| -rw-r--r-- | src/managers/input/InputManager.cpp | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp index 228d64ad..b6fa3996 100644 --- a/src/managers/input/InputManager.cpp +++ b/src/managers/input/InputManager.cpp @@ -1014,24 +1014,20 @@ void Events::listener_commitConstraint(void* owner, void* data) { //g_pInputManager->recheckConstraint((SMouse*)owner); } -void CInputManager::updateCapabilities(wlr_input_device* pDev) { - // TODO: this is dumb - - switch (pDev->type) { - case WLR_INPUT_DEVICE_KEYBOARD: - m_uiCapabilities |= WL_SEAT_CAPABILITY_KEYBOARD; - break; - case WLR_INPUT_DEVICE_POINTER: - m_uiCapabilities |= WL_SEAT_CAPABILITY_POINTER; - break; - case WLR_INPUT_DEVICE_TOUCH: - m_uiCapabilities |= WL_SEAT_CAPABILITY_TOUCH; - break; - default: - break; - } - - wlr_seat_set_capabilities(g_pCompositor->m_sSeat.seat, m_uiCapabilities); +void CInputManager::updateCapabilities() { + uint32_t caps = 0; + + if (!m_lKeyboards.empty()) + caps |= WL_SEAT_CAPABILITY_KEYBOARD; + if (!m_lMice.empty()) + caps |= WL_SEAT_CAPABILITY_POINTER; + if (!m_lTouchDevices.empty()) + caps |= WL_SEAT_CAPABILITY_TOUCH; + if (!m_lTabletTools.empty()) + caps |= WL_SEAT_CAPABILITY_POINTER; + + wlr_seat_set_capabilities(g_pCompositor->m_sSeat.seat, caps); + m_uiCapabilities = caps; } uint32_t CInputManager::accumulateModsFromAllKBs() { |
