25 QString spec = QString::fromLocal8Bit(qgetenv(
"QT_QPA_VXEVDEV_KEYBOARD_PARAMETERS"));
30 auto parsed = QEvdevUtil::parseSpecification(spec);
31 m_spec = std::move(parsed.spec);
34 for (
const QString &device : std::as_const(parsed.devices))
37 if (parsed.devices.isEmpty()) {
38 qCDebug(qLcVxKey,
"vxkeyboard: Using device discovery");
39 if (
auto deviceDiscovery = QDeviceDiscovery::create(QDeviceDiscovery::Device_Keyboard,
this)) {
41 const QStringList devices = deviceDiscovery->scanConnectedDevices();
42 for (
const QString &device : devices)
45 connect(deviceDiscovery, &QDeviceDiscovery::deviceDetected,
46 this, &QVxKeyboardManager::addKeyboard);
47 connect(deviceDiscovery, &QDeviceDiscovery::deviceRemoved,
48 this, &QVxKeyboardManager::removeKeyboard);
59 qCDebug(qLcVxKey,
"Adding keyboard at %ls", qUtf16Printable(deviceNode));
60 auto keyboard = QVxKeyboardHandler::create(deviceNode, m_spec, m_defaultKeymapFile);
62 m_keyboards.add(deviceNode, std::move(keyboard));
65 qWarning(
"Failed to open keyboard device %ls", qUtf16Printable(deviceNode));
85 m_defaultKeymapFile = file;
90 QString keymapFromSpec;
91 const auto specs = QStringView{m_spec}.split(u':');
92 for (
const auto &arg : specs) {
93 if (arg.startsWith(
"keymap="_L1))
94 keymapFromSpec = arg.mid(7).toString();
96 for (
const auto &keyboard : m_keyboards) {
97 if (keymapFromSpec.isEmpty())
98 keyboard.handler->unloadKeymap();
100 keyboard.handler->loadKeymap(keymapFromSpec);
103 for (
const auto &keyboard : m_keyboards)
104 keyboard.handler->loadKeymap(file);