X-Git-Url: https://git.sesse.net/?p=kdenlive;a=blobdiff_plain;f=src%2Fkdenlivesettingsdialog.cpp;h=42e5813338897ecd55a89a2c52e288507b8b06d3;hp=f8eb77f24445a6353b5353410dca099d8b2ebec8;hb=937f547e26859d0ef9ddc0ac38d6986ab591b3fd;hpb=20f0cd1075b25fe1311ba3d0b4fba7f83f9c0f42 diff --git a/src/kdenlivesettingsdialog.cpp b/src/kdenlivesettingsdialog.cpp index f8eb77f2..42e58133 100644 --- a/src/kdenlivesettingsdialog.cpp +++ b/src/kdenlivesettingsdialog.cpp @@ -44,10 +44,11 @@ #include #include #include + #ifdef USE_JOGSHUTTLE -#include "jogaction.h" -#include "jogshuttleconfig.h" -#include + #include "jogaction.h" + #include "jogshuttleconfig.h" + #include #endif @@ -523,21 +524,42 @@ void KdenliveSettingsDialog::slotCheckShuttle(int state) #ifdef USE_JOGSHUTTLE m_configShuttle.config_group->setEnabled(state); if (m_configShuttle.shuttledevicelist->count() == 0) { - // parse devices - QString baseName = "/dev/input/event"; - int fd; - for (int i = 0; i < 30; ++i) { - QString filename = baseName + QString::number(i); - kDebug() << "/// CHECKING device: " << filename; - - char name[256] = "unknown"; - fd = KDE_open((char *) filename.toUtf8().data(), O_RDONLY); - if (fd >= 0 && ioctl(fd, EVIOCGNAME(sizeof(name)), name) >= 0) { - m_configShuttle.shuttledevicelist->addItem(name, filename); + QString devDirStr = "/dev/input/by-id/"; + QDir devDir(devDirStr); + if (devDir.exists()) { + QStringList fileList = devDir.entryList(QDir::Files); + foreach (const QString &fileName, fileList) { + QString devFullPath(devDirStr + fileName); + QString fileLink = JogShuttle::enumerateDevice(devFullPath); + kDebug() << QString(" [%1] ").arg(fileName); + kDebug() << QString(" [%1] ").arg(fileLink); + char name[256] = "unknown"; + int fd = KDE_open((char*)fileLink.toUtf8().data(), O_RDONLY); + if (fd >= 0 && ioctl(fd, EVIOCGNAME(sizeof(name)), name) >= 0) { + m_configShuttle.shuttledevicelist->addItem(name, devFullPath); + } + ::close(fd); + } + } else { + // parse devices + QString baseName = "/dev/input/event"; + int fd; + for (int i = 0; i < 30; ++i) { + QString filename = baseName + QString::number(i); + kDebug() << "/// CHECKING device: " << filename; + + char name[256] = "unknown"; + fd = KDE_open((char *) filename.toUtf8().data(), O_RDONLY); + if (fd >= 0 && ioctl(fd, EVIOCGNAME(sizeof(name)), name) >= 0) { + m_configShuttle.shuttledevicelist->addItem(name, filename); + } + ::close(fd); } - ::close(fd); } - if (KdenliveSettings::shuttledevice().isEmpty()) QTimer::singleShot(1500, this, SLOT(slotUpdateShuttleDevice())); + + if (KdenliveSettings::shuttledevice().isEmpty()) { + QTimer::singleShot(1500, this, SLOT(slotUpdateShuttleDevice())); + } } #endif /* USE_JOGSHUTTLE */ }