From 58b7e4108dc12eda007286a28c32a05085e98aa2 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Sat, 13 Jan 2007 22:08:21 +0000 Subject: Add support for screen rotation. --- 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('Tab') # For non-OLPC machines self._key_grabber.grab('f') self._key_grabber.grab('o') + self._key_grabber.grab('r') self._key_grabber.grab('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 == 's': # Power key self._shutdown() + elif key == '0xEB' or key == 'r': # Rotate key + self._rotate_screen() elif key == '0xEC': # Keyboard brightness self._hw_manager.toggle_keyboard_brightness() elif key == '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(): -- cgit v0.9.1