Hi,
I'm working with the support of tablet switch in a small netbook and I want
it to be supported in solid. I made this patch to be reviewed by solid team,
but it only will be tested during the next weeks.
I'm not sure if this is related to Solid::Control::PowerManager, I just
follow the references to LidButton to implement this.
regards,
Daniel O Nascimento
--- a/kdebase/workspace/solid/hal/halpower.cpp 2009-05-01 22:32:56.000000000 -0300
+++ b/kdebase/workspace/solid/hal/halpower.cpp 2009-05-01 22:42:34.000000000 -0300
@@ -555,6 +555,16 @@
emit buttonPressed(Solid::Control::PowerManager::LidOpen);
}
break;
+ case Solid::Button::TabletButton:
+ if (button->stateValue())
+ {
+ emit buttonPressed(Solid::Control::PowerManager::TabletNormal);
+ }
+ else
+ {
+ emit buttonPressed(Solid::Control::PowerManager::TabletRotate);
+ }
+ break;
default:
//kWarning() << "Unknown button type";
break;
--- a/kdebase/workspace/libs/solid/control/powermanager.h 2009-05-01 22:46:29.000000000 -0300
+++ b/kdebase/workspace/libs/solid/control/powermanager.h 2009-05-01 22:49:49.000000000 -0300
@@ -73,8 +73,10 @@
* - SleepButton: A sleep button pressed event, generally used to make the system asleep
* - LidOpen: A laptop lid open event
* - LidClose: A laptop lid close event
+ * - TabletNormal: A laptop state event
+ * - TabletRotate: A tablet state event
*/
- enum ButtonType{ UnknownButtonType, PowerButton, SleepButton, LidOpen, LidClose };
+ enum ButtonType{ UnknownButtonType, PowerButton, SleepButton, LidOpen, LidClose, TabletNormal, TabletRotate };
/**
* This enum type defines the different suspend methods.
--- a/kdelibs/solid/solid/backends/fakehw/fakebutton.cpp 2009-05-01 22:32:56.000000000 -0300
+++ b/kdelibs/solid/solid/backends/fakehw/fakebutton.cpp 2009-05-01 22:38:08.000000000 -0300
@@ -48,6 +48,10 @@
{
return Solid::Button::SleepButton;
}
+ else if (buttontype=="TabletButton")
+ {
+ return Solid::Button::TabletButton;
+ }
else
{
return Solid::Button::UnknownButtonType;
--- a/kdelibs/solid/solid/backends/fakehw/fakecomputer.xml 2009-05-01 22:32:56.000000000 -0300
+++ b/kdelibs/solid/solid/backends/fakehw/fakecomputer.xml 2009-05-01 22:36:26.000000000 -0300
@@ -67,6 +67,15 @@
<property key="hasState">true</property>
<property key="stateValue">false</property>
</device>
+ <device udi="/org/kde/solid/fakehw/acpi_TAB0">
+ <property key="name">Tablet Switch</property>
+ <property key="interfaces">Button</property>
+ <property key="parent">/org/kde/solid/fakehw/computer</property>
+
+ <property key="type">TabletButton</property>
+ <property key="hasState">true</property>
+ <property key="stateValue">false</property>
+ </device>
--- a/kdelibs/solid/solid/backends/hal/halbutton.cpp 2009-05-01 22:32:56.000000000 -0300
+++ b/kdelibs/solid/solid/backends/hal/halbutton.cpp 2009-05-01 22:34:22.000000000 -0300
@@ -49,6 +49,10 @@
{
return Solid::Button::SleepButton;
}
+ else if (buttontype=="tablet_mode")
+ {
+ return Solid::Button::TabletButton;
+ }
else
{
return Solid::Button::UnknownButtonType;
--- a/kdelibs/solid/solid/button.h 2009-05-01 22:32:56.000000000 -0300
+++ b/kdelibs/solid/solid/button.h 2009-05-01 22:50:30.000000000 -0300
@@ -55,9 +55,10 @@
* - LidButton : The switch on a laptop that senses whether the lid is open or closed.
* - PowerButton : The main power button on the computer.
* - SleepButton : The sleep button on a computer capable of putting the computer into a suspend state.
+ * - TabletButton : The tablet switch on a laptop that senses if the monitor is rotated or not.
* - UnknownButtonType : The type of the button is unknow.
*/
- enum ButtonType{ LidButton, PowerButton, SleepButton, UnknownButtonType };
+ enum ButtonType{ LidButton, PowerButton, SleepButton, TabletButton, UnknownButtonType };
private:
_______________________________________________
Kde-hardware-devel mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/kde-hardware-devel