55 static QString configFile = qEnvironmentVariable(
"QT_QPA_EGLFS_KMS_CONFIG");
56 if (configFile.isEmpty())
59 QFile file(configFile);
60 if (!file.open(QFile::ReadOnly)) {
61 qWarning(
"touch input support: Failed to open %ls", qUtf16Printable(configFile));
65 const QJsonDocument doc = QJsonDocument::fromJson(file.readAll());
66 if (!doc.isObject()) {
67 qWarning(
"touch input support: Failed to parse %ls", qUtf16Printable(configFile));
73 const QJsonArray outputs = doc.object().value(
"outputs"_L1).toArray();
74 for (
int i = 0; i < outputs.size(); ++i) {
75 const QVariantMap output = outputs.at(i).toObject().toVariantMap();
76 if (!output.contains(QStringLiteral(
"touchDevice")))
78 if (!output.contains(QStringLiteral(
"name"))) {
79 qWarning(
"evdevtouch: Output %d specifies touchDevice but not name, this is wrong", i);
82 QFileInfo deviceNode(output.value(QStringLiteral(
"touchDevice")).toString());
83 const QString &screenName = output.value(QStringLiteral(
"name")).toString();
86 QString key = deviceNode.canonicalFilePath();
88 qWarning(
"touch input support: Cannot resolve touchDevice %ls of output %ls",
89 qUtf16Printable(deviceNode.filePath()), qUtf16Printable(screenName));
90 key = deviceNode.filePath();
92 m_screenTable.insert(key, screenName);