From edb0581f3426731bb8247d61f3676d6ce00506f1 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sat, 24 Aug 2013 19:48:44 -0500 Subject: [PATCH] Fix human readable display of ACPI buttons --- tdecore/tdehw/tdeeventdevice.cpp | 6 ++++++ tdecore/tdehw/tdeeventdevice.h | 4 +++- tdecore/tdehw/tdegenericdevice.cpp | 26 ++++++++++++++++++++++---- tdecore/tdehw/tdehardwaredevices.cpp | 10 ++++++++++ 4 files changed, 41 insertions(+), 5 deletions(-) diff --git a/tdecore/tdehw/tdeeventdevice.cpp b/tdecore/tdehw/tdeeventdevice.cpp index a98bc78c3..3a45cf5d1 100644 --- a/tdecore/tdehw/tdeeventdevice.cpp +++ b/tdecore/tdehw/tdeeventdevice.cpp @@ -114,6 +114,12 @@ TQStringList TDEEventDevice::friendlySwitchList(TDESwitchType::TDESwitchType swi if (switches & TDESwitchType::LineInInsert) { ret.append(i18n("Line In Inserted")); } + if (switches & TDESwitchType::PowerButton) { + ret.append(i18n("Power Button")); + } + if (switches & TDESwitchType::SleepButton) { + ret.append(i18n("Sleep Button")); + } return ret; } diff --git a/tdecore/tdehw/tdeeventdevice.h b/tdecore/tdehw/tdeeventdevice.h index 50aea54ef..52dc6ee73 100644 --- a/tdecore/tdehw/tdeeventdevice.h +++ b/tdecore/tdehw/tdeeventdevice.h @@ -52,7 +52,9 @@ enum TDESwitchType { KeypadSlide = 0x00000800, FrontProximity = 0x00001000, RotateLock = 0x00002000, - LineInInsert = 0x00004000 + LineInInsert = 0x00004000, + PowerButton = 0x00008000, + SleepButton = 0x00010000 }; inline TDESwitchType operator|(TDESwitchType a, TDESwitchType b) diff --git a/tdecore/tdehw/tdegenericdevice.cpp b/tdecore/tdehw/tdegenericdevice.cpp index 5f51a8b61..4e67ed6d6 100644 --- a/tdecore/tdehw/tdegenericdevice.cpp +++ b/tdecore/tdehw/tdegenericdevice.cpp @@ -273,8 +273,17 @@ TQString TDEGenericDevice::friendlyName() { m_friendlyName = name(); } else if (type() == TDEGenericDeviceType::Event) { - // Use parent node name - if (m_parentDevice) { + if (m_systemPath.contains("PNP0C0D")) { + m_friendlyName = i18n("ACPI Lid Switch"); + } + else if (m_systemPath.contains("PNP0C0E") || m_systemPath.contains("/LNXSLPBN")) { + m_friendlyName = i18n("ACPI Sleep Button"); + } + else if (m_systemPath.contains("PNP0C0C") || m_systemPath.contains("/LNXPWRBN")) { + m_friendlyName = i18n("ACPI Power Button"); + } + else if (m_parentDevice) { + // Use parent node name return m_parentDevice->friendlyName(); } else { @@ -282,8 +291,17 @@ TQString TDEGenericDevice::friendlyName() { } } else if (type() == TDEGenericDeviceType::Input) { - // Use parent node name - if (m_parentDevice) { + if (m_systemPath.contains("PNP0C0D")) { + m_friendlyName = i18n("ACPI Lid Switch"); + } + else if (m_systemPath.contains("PNP0C0E") || m_systemPath.contains("/LNXSLPBN")) { + m_friendlyName = i18n("ACPI Sleep Button"); + } + else if (m_systemPath.contains("PNP0C0C") || m_systemPath.contains("/LNXPWRBN")) { + m_friendlyName = i18n("ACPI Power Button"); + } + else if (m_parentDevice) { + // Use parent node name return m_parentDevice->friendlyName(); } else { diff --git a/tdecore/tdehw/tdehardwaredevices.cpp b/tdecore/tdehw/tdehardwaredevices.cpp index 250cd11b6..2922ec4d8 100644 --- a/tdecore/tdehw/tdehardwaredevices.cpp +++ b/tdecore/tdehw/tdehardwaredevices.cpp @@ -3135,6 +3135,16 @@ void TDEHardwareDevices::updateExistingDeviceInformation(TDEGenericDevice* exist supportedSwitches = supportedSwitches | TDESwitchType::LineInInsert; } #endif + // Keep in sync with ACPI Event/Input identification routines above + if (edevice->systemPath().contains("PNP0C0D")) { + supportedSwitches = supportedSwitches | TDESwitchType::Lid; + } + if (edevice->systemPath().contains("PNP0C0E") || edevice->systemPath().contains("/LNXSLPBN")) { + supportedSwitches = supportedSwitches | TDESwitchType::SleepButton; + } + if (edevice->systemPath().contains("PNP0C0C") || edevice->systemPath().contains("/LNXPWRBN")) { + supportedSwitches = supportedSwitches | TDESwitchType::PowerButton; + } } edevice->internalSetProvidedSwitches(supportedSwitches);