diff --git a/shell/Makefile.am b/shell/Makefile.am index 38b0443d..8b1b2c2f 100644 --- a/shell/Makefile.am +++ b/shell/Makefile.am @@ -9,6 +9,7 @@ bin_SCRIPTS = \ sugardir = $(pkgdatadir)/shell sugar_PYTHON = \ - __init__.py + __init__.py \ + hardwaremanager.py EXTRA_DIST = $(bin_SCRIPTS) diff --git a/shell/view/dconmanager.py b/shell/hardwaremanager.py similarity index 52% rename from shell/view/dconmanager.py rename to shell/hardwaremanager.py index 48fba730..c305f145 100644 --- a/shell/view/dconmanager.py +++ b/shell/hardwaremanager.py @@ -16,21 +16,28 @@ import dbus -DCON_MANAGER_INTERFACE = 'org.laptop.DCONManager' -DCON_MANAGER_SERVICE = 'org.laptop.DCONManager' -DCON_MANAGER_OBJECT_PATH = '/org/laptop/DCONManager' +HARDWARE_MANAGER_INTERFACE = 'org.laptop.HardwareManager' +HARDWARE_MANAGER_SERVICE = 'org.laptop.HardwareManager' +HARDWARE_MANAGER_OBJECT_PATH = '/org/laptop/HardwareManager' -class DCONManager(object): +class HardwareManager(object): COLOR_MODE = 0 - BLACK_AND_WHITE_MODE = 1 + B_AND_W_MODE = 1 def __init__(self): bus = dbus.SystemBus() - proxy = bus.get_object(DCON_MANAGER_SERVICE, DCON_MANAGER_OBJECT_PATH) - self._service = dbus.Interface(proxy, DCON_MANAGER_INTERFACE) + proxy = bus.get_object(HARDWARE_MANAGER_SERVICE, + HARDWARE_MANAGER_OBJECT_PATH) + self._service = dbus.Interface(proxy, HARDWARE_MANAGER_INTERFACE) - def set_mode(self, mode): + def set_display_mode(self, mode): self._service.set_mode(mode) - def set_brightness(self, level): - self._service.set_backlight_level(level) + def set_display_brightness(self, level): + self._service.set_display_brightness(level) + + def toggle_keyboard_brightness(self): + if self._service.get_keyboard_brightness(): + self._service.set_keyboard_brightness(False) + else + self._service.set_keyboard_brightness(True) diff --git a/shell/view/Makefile.am b/shell/view/Makefile.am index 0f9573a3..d7ab5f56 100644 --- a/shell/view/Makefile.am +++ b/shell/view/Makefile.am @@ -11,5 +11,4 @@ sugar_PYTHON = \ clipboardmenu.py \ OverlayWindow.py \ Shell.py \ - dconmanager.py \ stylesheet.py diff --git a/shell/view/Shell.py b/shell/view/Shell.py index 03a3badc..24e62a1a 100644 --- a/shell/view/Shell.py +++ b/shell/view/Shell.py @@ -29,7 +29,7 @@ from view.ActivityHost import ActivityHost from sugar.activity import ActivityFactory from sugar.activity import Activity from view.frame.Frame import Frame -from view.dconmanager import DCONManager +from hardwaremanager import HardwareManager from _sugar import KeyGrabber from _sugar import AudioManager import sugar @@ -45,7 +45,7 @@ class Shell(gobject.GObject): style.load_stylesheet(view.stylesheet) - self._dcon_manager = DCONManager() + self._hw_manager = HardwareManager() self._audio_manager = AudioManager() self._key_grabber = KeyGrabber() @@ -99,6 +99,7 @@ class Shell(gobject.GObject): self._key_grabber.grab('0xE0') # Overlay key self._key_grabber.grab('0x93') # Frame key self._key_grabber.grab('0x7C') # Power key + self._key_grabber.grab('0x86') # Keyboard brightness self._key_grabber.grab('Tab') # For non-OLPC machines @@ -115,13 +116,13 @@ class Shell(gobject.GObject): elif key == 'F4': self.set_zoom_level(sugar.ZOOM_ACTIVITY) elif key == 'F5': - self._dcon_manager.set_brightness(0) + self._hw_manager.set_display_brightness(0) elif key == 'F6': - self._dcon_manager.set_brightness(5) + self._hw_manager.set_display_brightness(5) elif key == 'F7': - self._dcon_manager.set_brightness(9) + self._hw_manager.set_display_brightness(9) elif key == 'F8': - self._dcon_manager.set_brightness(15) + self._hw_manager.set_display_brightness(15) elif key == 'F9': self._audio_manager.set_volume(0) elif key == 'F10': @@ -131,9 +132,9 @@ class Shell(gobject.GObject): elif key == 'F12': self._audio_manager.set_volume(100) elif key == 'F5': - self._dcon_manager.set_mode(DCONManager.COLOR_MODE) + self._hw_manager.set_display_mode(HardwareManager.COLOR_MODE) elif key == 'F8': - self._dcon_manager.set_mode(DCONManager.BLACK_AND_WHITE_MODE) + self._hw_manager.set_display_mode(HardwareManager.B_AND_W_MODE) elif key == 'F9': self._frame.notify_key_press() elif key == 'F10': @@ -146,6 +147,8 @@ class Shell(gobject.GObject): self._frame.notify_key_press() elif key == '0x7C': # Power key self._shutdown() + elif key == '0x86': # Keyboard brightness + self._hw_manager.toggle_keyboard_brightness() elif key == 'Tab': self.set_zoom_level(sugar.ZOOM_HOME) box = self._home_window.get_home_box() diff --git a/shell/view/hardwaremanager.py b/shell/view/hardwaremanager.py new file mode 100644 index 00000000..47c50bf8 --- /dev/null +++ b/shell/view/hardwaremanager.py @@ -0,0 +1,43 @@ +# Copyright (C) 2006, Red Hat, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +import dbus + +HARDWARE_MANAGER_INTERFACE = 'org.laptop.HardwareManager' +HARDWARE_MANAGER_SERVICE = 'org.laptop.HardwareManager' +HARDWARE_MANAGER_OBJECT_PATH = '/org/laptop/HardwareManager' + +class HardwareManager(object): + COLOR_MODE = 0 + B_AND_W_MODE = 1 + + def __init__(self): + bus = dbus.SystemBus() + proxy = bus.get_object(HARDWARE_MANAGER_SERVICE, + HARDWARE_MANAGER_OBJECT_PATH) + self._service = dbus.Interface(proxy, HARDWARE_MANAGER_INTERFACE) + + def set_display_mode(self, mode): + self._service.set_mode(mode) + + def set_display_brightness(self, level): + self._service.set_display_brightness(level) + + def toggle_keyboard_brightness(self): + if self._service.get_keyboard_brightness(): + self._service.set_keyboard_brightness(False) + else: + self._service.set_keyboard_brightness(True)