[Dextrose] [PATCH] Globalkey for touchpad device icon

Anish Mangal anishmangal2002 at gmail.com
Thu Jan 13 16:57:12 EST 2011


There's a small bug in this...
The hotkey doesn't work until the frame has been invoked and the
touchpad icon clicked 'once'.
After clicking the touchpad icon, the global hotkey works everytime.

On Wed, Nov 3, 2010 at 6:27 PM, Martin Abente
<martin.abente.lahaye at gmail.com> wrote:
> Add a new keyboard shortcut as a globalkey, this will
> toggle the touchpad mode when <Alt + m> is pressed.
>
> Also change DeviceView.palette indentifier for
> DeviceView._palette. Palette was not showing
> because of that.
>
> Dextrose version
>
> ---
>  extensions/deviceicon/touchpad.py |   14 +++++++++-----
>  extensions/globalkey/Makefile.am  |    1 +
>  extensions/globalkey/touchpad.py  |   33 +++++++++++++++++++++++++++++++++
>  3 files changed, 43 insertions(+), 5 deletions(-)
>  create mode 100644 extensions/globalkey/touchpad.py
>
> diff --git a/extensions/deviceicon/touchpad.py b/extensions/deviceicon/touchpad.py
> index 7f3ecb5..357bdd6 100644
> --- a/extensions/deviceicon/touchpad.py
> +++ b/extensions/deviceicon/touchpad.py
> @@ -37,6 +37,8 @@ FLAG_PATH = '/home/olpc/.olpc-pentablet-mode'
>  # NODE_PATH is used to communicate with the touchpad device.
>  NODE_PATH = '/sys/devices/platform/i8042/serio1/ptmode'
>
> +_view = None
> +
>  class DeviceView(TrayIcon):
>     """ Manage the touchpad mode from the device palette on the Frame. """
>
> @@ -55,13 +57,13 @@ class DeviceView(TrayIcon):
>
>     def create_palette(self):
>         """ On create, set the current mode. """
> -        self.palette = ResourcePalette(_('My touchpad'), self.icon)
> -        self.palette.set_group_id('frame')
> -        return self.palette
> +        self._palette = ResourcePalette(_('My touchpad'), self.icon)
> +        self._palette.set_group_id('frame')
> +        return self._palette
>
>     def __button_release_event_cb(self, widget, event):
>         """ On button release, switch modes. """
> -        self.palette.toggle_mode()
> +        self._palette.toggle_mode()
>         return True
>
>
> @@ -100,8 +102,10 @@ class ResourcePalette(Palette):
>
>  def setup(tray):
>     """ Touchpad palette only appears when the device exisits. """
> +    global _view
>     if os.path.exists(NODE_PATH):
> -        tray.add_device(DeviceView())
> +        _view = DeviceView()
> +        tray.add_device(_view)
>
>
>  def read_touchpad_mode():
> diff --git a/extensions/globalkey/Makefile.am b/extensions/globalkey/Makefile.am
> index b44626e..e3aaa8a 100644
> --- a/extensions/globalkey/Makefile.am
> +++ b/extensions/globalkey/Makefile.am
> @@ -4,5 +4,6 @@ sugar_PYTHON =          \
>        __init__.py     \
>        magnifier.py    \
>        screenshot.py   \
> +       touchpad.py     \
>        viewsource.py   \
>        virtualkeyboard.py
> diff --git a/extensions/globalkey/touchpad.py b/extensions/globalkey/touchpad.py
> new file mode 100644
> index 0000000..e36cf80
> --- /dev/null
> +++ b/extensions/globalkey/touchpad.py
> @@ -0,0 +1,33 @@
> +# Copyright (C) 2010, Martin Abente
> +#
> +# 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 logging
> +
> +BOUND_KEYS = ['<alt>m']
> +touchpad = None
> +
> +def handle_key_press(key):
> +    global touchpad
> +    if touchpad is None:
> +        try:
> +            touchpad = __import__('deviceicon.touchpad', globals(),
> +                                   locals(), ['touchpad'])
> +        except Exception:
> +            logging.error('Could not import touchpad module.')
> +            return
> +
> +    if touchpad._view is not None:
> +        touchpad._view._palette.toggle_mode()
> --
> 1.7.1
>
> _______________________________________________
> Dextrose mailing list
> Dextrose at lists.sugarlabs.org
> http://lists.sugarlabs.org/listinfo/dextrose
>



-- 
Anish


More information about the Dextrose mailing list