From 41cdfb7420be3a8473c46f28d74cdada4c0f2258 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Wed, 21 Dec 2022 15:11:39 +0000 Subject: allow binding tablets to outputs --- src/managers/input/InputManager.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/managers/input/InputManager.cpp') diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp index db883fea..43fc66cf 100644 --- a/src/managers/input/InputManager.cpp +++ b/src/managers/input/InputManager.cpp @@ -1147,10 +1147,10 @@ void CInputManager::setTouchDeviceConfigs() { const auto LIBINPUTDEV = (libinput_device*)wlr_libinput_get_device_handle(m.pWlrDevice); const int ROTATION = - std::clamp(HASCONFIG ? g_pConfigManager->getDeviceInt(PTOUCHDEV->name, "touch_transform") : g_pConfigManager->getInt("input:touchdevice:transform"), 0, 7); + std::clamp(HASCONFIG ? g_pConfigManager->getDeviceInt(PTOUCHDEV->name, "transform") : g_pConfigManager->getInt("input:touchdevice:transform"), 0, 7); libinput_device_config_calibration_set_matrix(LIBINPUTDEV, MATRICES[ROTATION]); - const auto OUTPUT = HASCONFIG ? g_pConfigManager->getDeviceString(PTOUCHDEV->name, "touch_output") : g_pConfigManager->getString("input:touchdevice:output"); + const auto OUTPUT = HASCONFIG ? g_pConfigManager->getDeviceString(PTOUCHDEV->name, "output") : g_pConfigManager->getString("input:touchdevice:output"); if (!OUTPUT.empty() && OUTPUT != STRVAL_EMPTY) PTOUCHDEV->boundOutput = OUTPUT; else @@ -1159,6 +1159,22 @@ void CInputManager::setTouchDeviceConfigs() { } } +void CInputManager::setTabletConfigs() { + for (auto& t : m_lTablets) { + const auto HASCONFIG = g_pConfigManager->deviceConfigExists(t.name); + + if (HASCONFIG) { + const auto OUTPUT = g_pConfigManager->getDeviceString(t.name, "output"); + const auto PMONITOR = g_pCompositor->getMonitorFromString(OUTPUT); + + if (PMONITOR) { + wlr_cursor_map_input_to_output(g_pCompositor->m_sWLRCursor, t.wlrDevice, PMONITOR->output); + wlr_cursor_map_input_to_region(g_pCompositor->m_sWLRCursor, t.wlrDevice, nullptr); + } + } + } +} + void CInputManager::destroyTouchDevice(STouchDevice* pDevice) { Debug::log(LOG, "Touch device at %x removed", pDevice); -- cgit v1.2.3