Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2007-01-13 22:08:21 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2007-01-13 22:08:21 (GMT)
commit58b7e4108dc12eda007286a28c32a05085e98aa2 (patch)
tree5c5fa04449c10797acdc7f738ad9d7bac4093aea
parentf530f5e276b6c7fed946d38fd0e53876429c71d2 (diff)
Add support for screen rotation.
-rw-r--r--README1
-rw-r--r--shell/view/Shell.py15
2 files changed, 16 insertions, 0 deletions
diff --git a/README b/README
index 844e7e7..1a709f0 100644
--- a/README
+++ b/README
@@ -24,6 +24,7 @@ F3 Home zoom level
F4 Activity zoom level
Alt+f Show the frame
+Alt+r Rotate the screen
Alt+o Toggle overlay visibility
Alt+= Open the developer console
Alt+0 Open the developer console
diff --git a/shell/view/Shell.py b/shell/view/Shell.py
index b652cf1..768fd24 100644
--- a/shell/view/Shell.py
+++ b/shell/view/Shell.py
@@ -44,6 +44,7 @@ class Shell(gobject.GObject):
self._hosts = {}
self._screen = wnck.screen_get_default()
self._current_host = None
+ self._screen_rotation = 0
style.load_stylesheet(view.stylesheet)
@@ -103,12 +104,14 @@ 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('0xEB') # Rotate key
self._key_grabber.grab('0xEC') # Keyboard brightness
self._key_grabber.grab('<alt>Tab')
# For non-OLPC machines
self._key_grabber.grab('<alt>f')
self._key_grabber.grab('<alt>o')
+ self._key_grabber.grab('<alt>r')
self._key_grabber.grab('<alt><shift>s')
def _key_pressed_cb(self, grabber, key):
@@ -156,6 +159,8 @@ class Shell(gobject.GObject):
self._frame.notify_key_press()
elif key == '0x7C' or key == '<alt><shift>s': # Power key
self._shutdown()
+ elif key == '0xEB' or key == '<alt>r': # Rotate key
+ self._rotate_screen()
elif key == '0xEC': # Keyboard brightness
self._hw_manager.toggle_keyboard_brightness()
elif key == '<alt>Tab':
@@ -170,6 +175,16 @@ class Shell(gobject.GObject):
console = dbus.Interface(proxy, 'org.laptop.sugar.Console')
console.toggle_visibility()
+ def _rotate_screen(self):
+ states = [ 'normal', 'left', 'inverted', 'right']
+
+ self._screen_rotation += 1
+ if self._screen_rotation == len(states):
+ self._screen_rotation = 0
+
+ gobject.spawn_async(['xrandr', '-o', states[self._screen_rotation]],
+ flags=gobject.SPAWN_SEARCH_PATH)
+
def _shutdown(self):
self._model.props.state = ShellModel.STATE_SHUTDOWN
if not env.is_emulator():