[Dextrose] [PATCH] Globalkey for touchpad device icon

Anish Mangal anishmangal2002 at gmail.com
Mon Feb 14 22:36:27 EST 2011


On Thu, Jan 13, 2011 at 18:57, Anish Mangal <anishmangal2002 at gmail.com> wrote:
> 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
>

Related bug report opened: http://bugs.sugarlabs.org/ticket/2618

-- 
Anish


More information about the Dextrose mailing list