diff --git a/deepin-devicemanager/src/DeviceManager/DeviceInput.cpp b/deepin-devicemanager/src/DeviceManager/DeviceInput.cpp index 11f3e221..532bd0d4 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceInput.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceInput.cpp @@ -437,12 +437,12 @@ EnableDeviceStatus DeviceInput::setEnable(bool e) } if(e){ //鼠标启用时,唤醒能力打开 - DBusWakeupInterface::getInstance()->setWakeupMachine(wakeupID(), sysPath(), true, name(), m_HardwareClass); + DBusWakeupInterface::getInstance()->setWakeupMachine(wakeupID(), sysPath(), true, name(), m_HardwareClass, m_Interface); m_wakeupChanged = true; } else if (m_wakeupChanged) { //鼠标禁用时,唤醒能力关闭 m_wakeupChanged = false; - DBusWakeupInterface::getInstance()->setWakeupMachine(wakeupID(), sysPath(), false, name(), m_HardwareClass); + DBusWakeupInterface::getInstance()->setWakeupMachine(wakeupID(), sysPath(), false, name(), m_HardwareClass, m_Interface); } bool res = DBusEnableInterface::getInstance()->enable(m_HardwareClass, m_Name, m_SysPath, m_UniqueID, e, m_Driver); if (res) { @@ -505,7 +505,7 @@ QString DeviceInput::wakeupPath() return ""; } - if (m_Name.contains("PS/2")) { + if (m_Name.contains("PS/2") || m_Interface.contains("PS/2")) { return "/proc/acpi/wakeup"; } else { return QString("/sys") + m_SysPath.left(index) + QString("/power/wakeup"); diff --git a/deepin-devicemanager/src/Page/PageMultiInfo.cpp b/deepin-devicemanager/src/Page/PageMultiInfo.cpp index 04f03d58..7ae1d2b9 100644 --- a/deepin-devicemanager/src/Page/PageMultiInfo.cpp +++ b/deepin-devicemanager/src/Page/PageMultiInfo.cpp @@ -325,7 +325,7 @@ void PageMultiInfo::getTableListInfo(const QList &lst, QListcanWakeupMachine() ? "true" : "false"); menuControl.append(input->wakeupPath()); - if (info->name().contains("PS/2")) { + if (info->name().contains("PS/2") || input->getInterface().contains("PS/2")) { menuControl.append(input->getBusInfo()); menuControl.append(input->name()); menuControl.append(input->hardwareClass()); diff --git a/deepin-devicemanager/src/Page/PageSingleInfo.cpp b/deepin-devicemanager/src/Page/PageSingleInfo.cpp index c54402e7..54b8f0fb 100644 --- a/deepin-devicemanager/src/Page/PageSingleInfo.cpp +++ b/deepin-devicemanager/src/Page/PageSingleInfo.cpp @@ -359,8 +359,9 @@ void PageSingleInfo::slotWakeupMachine() DBusWakeupInterface::getInstance()->setWakeupMachine(input->wakeupID(), input->sysPath(), mp_WakeupMachine->isChecked(), - input->getInterface(), - input->hardwareClass()); + input->name(), + input->hardwareClass(), + input->getInterface()); } // 网卡的远程唤醒 diff --git a/deepin-devicemanager/src/WakeupControl/DBusWakeupInterface.cpp b/deepin-devicemanager/src/WakeupControl/DBusWakeupInterface.cpp index 4d6c902b..93b1d356 100644 --- a/deepin-devicemanager/src/WakeupControl/DBusWakeupInterface.cpp +++ b/deepin-devicemanager/src/WakeupControl/DBusWakeupInterface.cpp @@ -39,14 +39,15 @@ bool DBusWakeupInterface::setWakeupMachine(const QString &unique_id, const QString &path, bool wakeup, const QString &name, - const QString &hardwareclass) + const QString &hardwareclass, + const QString &interfaceType) { if (nullptr != mp_InputIface && mp_InputIface->isValid()) { QStringList pathList = path.split("/", QString::SkipEmptyParts); if (pathList.size() < 3) return false; - if (name.contains("PS/2")) { + if (name.contains("PS/2") || interfaceType.contains("PS/2")) { // ps2设备无法通过/sys/devices/platform/i8042/serio1/power/wakeup控制,只能通过acpi的接口进行控制 QDBusInterface interface(INPUT_SERVICE_NAME, INPUT_WAKEUP_SERVICE_PATH, INPUT_WAKEUP_PROPERTIES_INTERFACE, QDBusConnection::systemBus()); if (interface.isValid()) { diff --git a/deepin-devicemanager/src/WakeupControl/DBusWakeupInterface.h b/deepin-devicemanager/src/WakeupControl/DBusWakeupInterface.h index d475c8f5..363b524c 100644 --- a/deepin-devicemanager/src/WakeupControl/DBusWakeupInterface.h +++ b/deepin-devicemanager/src/WakeupControl/DBusWakeupInterface.h @@ -38,13 +38,17 @@ class DBusWakeupInterface * @param unique_id 设备的唯一标识 * @param path 设备节点路径 * @param wakeup 可唤醒 不可唤醒 + * @param name 设备名称 + * @param hardwareclass 硬件类型(mouse/keyboard) + * @param interfaceType 接口类型(PS/2/USB/Bluetooth等) * @return */ bool setWakeupMachine(const QString &unique_id, const QString &path, bool wakeup, const QString &name, - const QString &hardwareclass); + const QString &hardwareclass, + const QString &interfaceType); /** * @brief canWakeupMachine 获取input是否支持唤醒 diff --git a/deepin-devicemanager/src/Widget/TextBrowser.cpp b/deepin-devicemanager/src/Widget/TextBrowser.cpp index 3e316eb7..8278f426 100644 --- a/deepin-devicemanager/src/Widget/TextBrowser.cpp +++ b/deepin-devicemanager/src/Widget/TextBrowser.cpp @@ -111,7 +111,7 @@ void TextBrowser::setWakeupMachine(bool wakeup) // 键盘鼠标唤醒机器 DeviceInput *input = qobject_cast(mp_Info); if(input && !input->wakeupID().isEmpty() && !input->sysPath().isEmpty()){ - DBusWakeupInterface::getInstance()->setWakeupMachine(input->wakeupID(),input->sysPath(),wakeup, input->name(), input->hardwareClass()); + DBusWakeupInterface::getInstance()->setWakeupMachine(input->wakeupID(),input->sysPath(),wakeup, input->name(), input->hardwareClass(), input->getInterface()); } // 网卡的远程唤醒