Jameson Quinn | 1 May 2009 04:03
Picon

Keyboard shortcuts

I am interested in making our keyboard shortcuts discoverable, ubiquitous, and consistent. This is especially important because of the approximately half a million demon-possessed trackpads that OLPC has shipped (not blaming; I thought that the resistive pad was a cool idea too, in fact, it's still a cool idea and the XO had a pretty good batting average with its attempted miracles).

The overall plan is outlined at http://wiki.sugarlabs.org/go/Design_Team/Vision/Proposals/Keyboard_Action . I've posted it here before, but since I combined it with another idea about the home view, it didn't get discussed much. I'm starting to code it, so I want to get some more consensus before I go too far. I'll start with vision, then talk about implementation.

The vision is to provide software support for three desirable qualities.

Discoverable. Without discoverability, shortcuts are useless. And we have pre-literate kids as a part of our user base, so including "ctrl-x" in our popdowns isn't going to cut it. My basic idea is that when the user presses/holds ctrl, the shortcuts show up as translucent letters in front of the toolbar buttons. Some open questions:

Delay? My instinct is yes, so that fast typers aren't slowed down by UI candy, but a pretty small one - around 300-700 ms. I'd rather not make this configurable.

Non-"ctrl" shortcuts: My idea is to have two lines: the top third of the toolbar button can say "Alt" or "Shift", then the bottom two thirds has the letter. F5 or Pause or whatever should just say the key name. The problem is, how do you distinguish ctrl-alt-a from alt-a, and ctrl-F5 from F5. IMO it's not actually a tragedy if you just don't make that distinction.

Ubiquitous. To me, this goal means increasing our software support for the developer/translator team assigning shortcuts. It's true, it's really just one line and one string per button (customButton.props.accelerator = _('<ctrl>b')) but that's a big nuisance for translators, and programmers are meant to be lazy. So I think you should be able to assign the accelerator from within the translatable string. GTK already has a similar mechanism, but it's inappropriate. Setting the label to "go _next" will, if the use_underline property is true, set the mnemonic, a kind of shortcut that works only if the control's visible, to alt-n, and draw the label with the n underlined. Four problems: we care about tooltip, not label; we want the shortcut to be available when you're on a different toolbar; we want ctrl, not alt; and this doesn't seem to work in sugar, for reasons I've not investigated. So I propose doing the same thing, but using the tooltip, a real shortcut, ctrl, and the character u"\u00ad" which is "soft hyphen", ie, by nature an invisible typesetting mark. Issues: I haven't tested if you can use the backslash escape to get this in Pootle, if not it's a problem.

Consistent. This means dealing with all the shortcuts in a unified fashion. First principle is, ctrl for activity shortcuts, alt for global/frame ones, ctrl-alt for modified ctrl shortcuts (ie, ctrl-alt-v is paste-and-pop-clipboard), ctrl-shift or alt-shift is backwards (redo or alt-shift-tab). Here's my list of global shortcuts/key assignments, copied from keyhandler.py with my proposed changes in bold, please add anything I've forgotten:
_actions_table = {
    'F1'                   : 'zoom_mesh',
    'F2'                   : 'zoom_group',
    'F3'                   : 'zoom_home',
    'F4'                   : 'zoom_activity',
    'F9'                   : 'brightness_down',
    'F10'                  : 'brightness_up',
    '<alt>F9'              : 'brightness_min',
    '<alt>F10'             : 'brightness_max',
    'XF86AudioMute'        : 'volume_mute',
    'F11'                  : 'volume_down',
    'XF86AudioLowerVolume' : 'volume_down',
    'F12'                  : 'volume_up',
    'XF86AudioRaiseVolume' : 'volume_up',
    '<alt>F11'             : 'volume_min',
    '<alt>F12'             : 'volume_max',
    '0x93'                 : 'frame',
    'Insert'            
    '0xEB'                 : 'rotate',
    '<alt>Tab'             : 'next_window',
    '<alt><shift>Tab'      : 'previous_window',
    '<alt>Escape'          : 'close_window',
    '0xDC'                 : 'open_search',
# the following are intended for emulator users
    '<alt><shift>f'        : 'frame',
    '<alt><shift>q'        : 'quit_emulator',
    'XF86Search'           : 'open_search',
    '<alt><shift>o'        : 'open_search',
    '<alt><shift>r'        : 'rotate',
    '<alt><shift>s'        : 'say_text',

-SOAS




_______________________________________________
Sugar-devel mailing list
Sugar-devel <at> lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel
Jameson Quinn | 1 May 2009 04:28
Picon

Re: Keyboard shortcuts

Oops. Sorry, I didn't know that "tab" was "send" in this gmail's keyboard shortcuts. Resend, more complete at bottom.

---------- Forwarded message ----------
From: Jameson Quinn <jameson.quinn <at> gmail.com>
Date: 2009/4/30
Subject: Keyboard shortcuts
To: sugar-devel <sugar-devel <at> lists.sugarlabs.org>


I am interested in making our keyboard shortcuts discoverable, ubiquitous, and consistent. This is especially important because of the approximately half a million demon-possessed trackpads that OLPC has shipped (not blaming; I thought that the resistive pad was a cool idea too, in fact, it's still a cool idea and the XO had a pretty good batting average with its attempted miracles).

The overall plan is outlined at http://wiki.sugarlabs.org/go/Design_Team/Vision/Proposals/Keyboard_Action . I've posted it here before, but since I combined it with another idea about the home view, it didn't get discussed much. I'm starting to code it, so I want to get some more consensus before I go too far. I'll start with vision, then talk about implementation.

The vision is to provide software support for three desirable qualities.

Discoverable. Without discoverability, shortcuts are useless. And we have pre-literate kids as a part of our user base, so including "ctrl-x" in our popdowns isn't going to cut it. My basic idea is that when the user presses/holds ctrl, the shortcuts show up as translucent letters in front of the toolbar buttons. Some open questions:

Delay? My instinct is yes, so that fast typers aren't slowed down by UI candy, but a pretty small one - around 300-700 ms. I'd rather not make this configurable.

Non-"ctrl" shortcuts: My idea is to have two lines: the top third of the toolbar button can say "Alt" or "Shift", then the bottom two thirds has the letter. F5 or Pause or whatever should just say the key name. The problem is, how do you distinguish ctrl-alt-a from alt-a, and ctrl-F5 from F5. IMO it's not actually a tragedy if you just don't make that distinction.

Ubiquitous. To me, this goal means increasing our software support for the developer/translator team assigning shortcuts. It's true, it's really just one line and one string per button (customButton.props.accelerator = _('<ctrl>b')) but that's a big nuisance for translators, and programmers are meant to be lazy. So I think you should be able to assign the accelerator from within the translatable string. GTK already has a similar mechanism, but it's inappropriate. Setting the label to "go _next" will, if the use_underline property is true, set the mnemonic, a kind of shortcut that works only if the control's visible, to alt-n, and draw the label with the n underlined. Four problems: we care about tooltip, not label; we want the shortcut to be available when you're on a different toolbar; we want ctrl, not alt; and this doesn't seem to work in sugar, for reasons I've not investigated. So I propose doing the same thing, but using the tooltip, a real shortcut, ctrl, and the character u"\u00ad" which is "soft hyphen", ie, by nature an invisible typesetting mark. Issues: I haven't tested if you can use the backslash escape to get this in Pootle, if not it's a problem.

Consistent. This means dealing with all the shortcuts in a unified fashion. First principle is, ctrl for activity shortcuts, alt for global/frame ones, ctrl-alt for modified ctrl shortcuts (ie, ctrl-alt-v is paste-and-pop-clipboard), ctrl-shift or alt-shift is backwards (redo or alt-shift-tab). Here's my list of global shortcuts/key assignments, copied from keyhandler.py with my proposed changes in bold, please add anything I've forgotten:
_actions_table = {
    'F1'                   : 'zoom_mesh',
    'F2'                   : 'zoom_group',
    'F3'                   : 'zoom_home',
    'F4'                   : 'zoom_activity',
    'F9'                   : 'brightness_down',
    'F10'                  : 'brightness_up',
    '<alt>F9'              : 'brightness_min',
    '<alt>F10'             : 'brightness_max',
    'XF86AudioMute'        : 'volume_mute',
    'F11'                  : 'volume_down',
    'XF86AudioLowerVolume' : 'volume_down',
    'F12'                  : 'volume_up',
    'XF86AudioRaiseVolume' : 'volume_up',
    '<alt>F11'             : 'volume_min',
    '<alt>F12'             : 'volume_max',
    '0x93'                 : 'frame',
    'Insert'               : 'frame', #for SoaS
    '0x00'                 : 'frame', #for SoaS on Xephyr, see below.

    '0xEB'                 : 'rotate',
    '<alt>Tab'             : 'next_window',
    '<alt><shift>Tab'      : 'previous_window',
    '<alt>Escape'          : 'close_window',
    '<alt><ctrl>Escape'    : 'close_window_discard_from_journal',
    '0xDC'                 : 'open_search',
    '<alt>1'               :
'zoom_mesh',
 #... alt-numeral should be like the top row of the frame, so alt-5 would be journal
 #and alt-6 first running activity
    '<alt>Enter'           : 'hide-toolbar', #if implemented by activity
    '<alt>v'               : 'view-source',
    '<alt>c'               : 'screen-capture',
    'PrtSc'                : 'screen-capture',

      
    '<alt>s'               : 'say_text', #was alt-shift-s
# the following are intended for emulator users
#    '<alt><shift>f'        : 'frame', #removed
    '<alt><shift>q'        : 'quit_emulator',
    'XF86Search'           : 'open_search',
#    '<alt><shift>o'        : 'open_search', #removed
#    '<alt><shift>r'        : 'rotate', #removed

...
Also, ctrl-numeral would choose toolbars, and toolbar tabs would get little translucent numbers when you held control.

Implementation

Basically, I propose to do all this magic only on the subclasses already existing in sugar-graphics. Some of this is more-or-less a monkeypatch to GTK itself, but I am not signing up for dealing with upstream, and in fact much of this is not even appropriate for upstream. Some of you might feel that the "ubiquitous" stuff (saving LOC and strings) is not worth the maintenance headache to do it in such a hack-y fashion. If enough people say so, I have no problem abandoning that part of the plan.

OK, sorry for the double-post, and none of this is set in stone. I'm happy to discuss and bikeshed a bit, but I have already started coding, so please comment relatively quickly if you object to the whole idea.

Jameson

_______________________________________________
Sugar-devel mailing list
Sugar-devel <at> lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel
Jameson Quinn | 1 May 2009 05:15
Picon

Re: Keyboard shortcuts

A few more little things which I didn't include in messages 0.9 and 1.0

-Insert key as frame key would not currently work in Xephyr. Xephyr hears keycode 0 when you hit insert, which should be invalid. You cannot set 0x00 as an accelerator because eggaccelerators.c lines 350-352 explicitly catch that "error". I propose simply removing this useless error-checking, which would allow us to workaround the stupid xephyr bug on that one issue without affecting anyone else.

The rest of the following ideas are on the wiki proposal but I didn't mention them because don't plan on implementing in this round.

-Holding alt should bring up a popup window explaining the global shortcut keys. Which also suggests the idea of "help" and "context-sensitive-help" keys; perhaps alt itself?

-modifiers should be sticky for a configurable time delay or until the first keystroke, whichever is first. Except that sticky-ctrl would differ from normal-ctrl when it modified a global key combo: <sticky-ctrl>F1 would not be <ctrl>F1 but just F1 to the activity instead of to sugar.

and-one-more-thing-ly y'rs,
Jameson


_______________________________________________
Sugar-devel mailing list
Sugar-devel <at> lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel
Gary C Martin | 1 May 2009 05:48

Re: Keyboard shortcuts

Still think this is a tough, disruptive sell for very small gains. We  
should focus on getting activity authors (and sugar) using the now  
fully functioning accelerator feature to self document shortcuts.

Anyway, just some quick comments:

On 1 May 2009, at 03:28, Jameson Quinn wrote:

> I am interested in making our keyboard shortcuts discoverable,  
> ubiquitous, and consistent.

--- snip ---

>     '0x93'                 : 'frame',
>     'Insert'               : 'frame', #for SoaS
>     '0x00'                 : 'frame', #for SoaS on Xephyr, see below.

None of my 3 Mac laptops has an Insert key, and the standard keyboard  
that ships with iMac desktops also has no insert. Think all Macs  
currently ship with such keyboards, sans numeric pad, though you can  
make a custom order for "Apple Keyboard with Numeric Keypad"...  
actually, just checked that key layout as well and no insert key  
either – but hey, you get 19 function keys for your money ;-)

--- snip ---

>     '<alt><ctrl>Escape'    : 'close_window_discard_from_journal',

Not sure what this one is.

--- snip ---

>  #... alt-numeral should be like the top row of the frame, so alt-5  
> would be journal
>  #and alt-6 first running activity

So is the reason behind this idea to help keyboards without any F  
keys? Should this not also include the F5 key being made to show the  
Journal (equiv. to open_search I think).

--- snip ---

> # the following are intended for emulator users
> #    '<alt><shift>f'        : 'frame', #removed
> #    '<alt><shift>o'        : 'open_search', #removed
> #    '<alt><shift>r'        : 'rotate', #removed

Why the removals?? Now I would have no working keys at all for  
accessing the frame!

--- snip ---

> ...
> Also, ctrl-numeral would choose toolbars, and toolbar tabs would get  
> little translucent numbers when you held control.

So what happens to an activity that uses some ctrl-numerals already  
(labyrinth does)?

For my bike-shed, I'd be happy with F1-F4 as is, F5 can be Journal, F6  
could be frame, then we could make little bits of printed card with  
icons on, and kids could sticky-tape them just above their F keys ;-)

Regards,
--Gary
Jameson Quinn | 1 May 2009 15:04
Picon

Re: Keyboard shortcuts

(note: I suggest below that we use caps-lock as the frame key)

2009/4/30 Gary C Martin <gary <at> garycmartin.com>
Still think this is a tough, disruptive sell for very small gains. We should focus on getting activity authors (and sugar) using the now fully functioning accelerator feature to self document shortcuts.

Which part? This is actually three separate proposals: "discoverable" (translucent letters), "ubiquitous" (auto-assignment), and "consistent" (rearranging). Your comments about "consistent" are below, but I don't know if the above refers to "discoverable" or "ubiquitous". If you mean that ubiquity is a small gain, noted; if you mean discoverability, I disagree and would like to hear you elaborate your argument.

Also, since I'm coding, "tough" is a weak criticism.

 


Anyway, just some quick comments:

and responses
 


On 1 May 2009, at 03:28, Jameson Quinn wrote:

I am interested in making our keyboard shortcuts discoverable, ubiquitous, and consistent.

--- snip ---


   '0x93'                 : 'frame',
   'Insert'               : 'frame', #for SoaS
   '0x00'                 : 'frame', #for SoaS on Xephyr, see below.

None of my 3 Mac laptops has an Insert key, and the standard keyboard that ships with iMac desktops also has no insert. Think all Macs currently ship with such keyboards, sans numeric pad, though you can make a custom order for "Apple Keyboard with Numeric Keypad"... actually, just checked that key layout as well and no insert key either – but hey, you get 19 function keys for your money ;-)

--- snip ---

I hadn't seen this, I only knew from wikipedia that if your keyboard does have insert Apple sees it as "help". Looking at a few pictures of Macbook keyboards, I have to say I like the minimalism, but it leaves few options. F5-F8 should ideally IMO be available to individual activities. That leaves caps lock, or key combos (I'd favor close-up combos such as alt-right_arrow.)

I'd vote for caps lock. This is, of course, somewhat more radical than most of my other suggestions, so needs discussion.

 


   '<alt><ctrl>Escape'    : 'close_window_discard_from_journal',


Not sure what this one is.

Close the activity but don't show the naming dialog. Delete the resulting journal entry.
 

--- snip ---


 #... alt-numeral should be like the top row of the frame, so alt-5 would be journal
 #and alt-6 first running activity


So is the reason behind this idea to help keyboards without any F keys? Should this not also include the F5 key being made to show the Journal (equiv. to open_search I think).

This is for keyboards without F keys, but it also gives a natural way to get the journal and individual activities. alt-shift-N with N>5 could be "close activity N-5". I think that F5 should be available to individual activities, so I'd vote against F5/Journal. I'd accept the majority decision, though.
 

--- snip ---

# the following are intended for emulator users
#    '<alt><shift>f'        : 'frame', #removed
#    '<alt><shift>o'        : 'open_search', #removed

#    '<alt><shift>r'        : 'rotate', #removed

Why the removals?? Now I would have no working keys at all for accessing the frame!

Because they're inconsistent with the master plan, and highly-non-discoverable too.
 

--- snip ---


...
Also, ctrl-numeral would choose toolbars, and toolbar tabs would get little translucent numbers when you held control.

So what happens to an activity that uses some ctrl-numerals already (labyrinth does)?

could it use F5-F8? I don't know what it does with these. In practice, the activity could get them by assigning them before creating that toolbar; ideally, I'd like this to be a consistent standard.
 

For my bike-shed, I'd be happy with F1-F4 as is, F5 can be Journal, F6 could be frame, then we could make little bits of printed card with icons on, and kids could sticky-tape them just above their F keys ;-)

OK, that's a vote. I vote against you. May the best bike-shed win! (And since I don't understand what your position on discoverable and ubiquitous is, I can't count your vote there).

Jameson

_______________________________________________
Sugar-devel mailing list
Sugar-devel <at> lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel
Eben Eliason | 1 May 2009 15:57
Picon

Re: Keyboard shortcuts

On Fri, May 1, 2009 at 9:04 AM, Jameson Quinn <jameson.quinn <at> gmail.com> wrote:
> (note: I suggest below that we use caps-lock as the frame key)
>
> 2009/4/30 Gary C Martin <gary <at> garycmartin.com>
>>
>> Still think this is a tough, disruptive sell for very small gains. We
>> should focus on getting activity authors (and sugar) using the now fully
>> functioning accelerator feature to self document shortcuts.
>
> Which part? This is actually three separate proposals: "discoverable"
> (translucent letters), "ubiquitous" (auto-assignment), and "consistent"
> (rearranging). Your comments about "consistent" are below, but I don't know
> if the above refers to "discoverable" or "ubiquitous". If you mean that
> ubiquity is a small gain, noted; if you mean discoverability, I disagree and
> would like to hear you elaborate your argument.
>
> Also, since I'm coding, "tough" is a weak criticism.
>
>
>>
>> Anyway, just some quick comments:
>
> and responses
>
>>
>>
>> On 1 May 2009, at 03:28, Jameson Quinn wrote:
>>
>>> I am interested in making our keyboard shortcuts discoverable,
>>> ubiquitous, and consistent.
>>
>> --- snip ---
>>
>>>    '0x93'                 : 'frame',
>>>    'Insert'               : 'frame', #for SoaS
>>>    '0x00'                 : 'frame', #for SoaS on Xephyr, see below.
>>
>> None of my 3 Mac laptops has an Insert key, and the standard keyboard that
>> ships with iMac desktops also has no insert. Think all Macs currently ship
>> with such keyboards, sans numeric pad, though you can make a custom order
>> for "Apple Keyboard with Numeric Keypad"... actually, just checked that key
>> layout as well and no insert key either – but hey, you get 19 function keys
>> for your money ;-)
>>
>> --- snip ---
>
> I hadn't seen this, I only knew from wikipedia that if your keyboard does
> have insert Apple sees it as "help". Looking at a few pictures of Macbook
> keyboards, I have to say I like the minimalism, but it leaves few options.
> F5-F8 should ideally IMO be available to individual activities. That leaves
> caps lock, or key combos (I'd favor close-up combos such as
> alt-right_arrow.)
>
> I'd vote for caps lock. This is, of course, somewhat more radical than most
> of my other suggestions, so needs discussion.

Hmmm, not sure. It seems to me that if the zoom-level buttons live in
the F-keys, then the Frame button should as well. This keeps it at the
top of the keyboard, as on the XO, and keeps a consistent single-key
path to a very important element of the UI.

And, for what it's worth, I don't think that activities should need to
mess around with the F keys. I'd just as soon have banished them
entirely, as the caps lock key, were they not required for
compatibility. I think that activities should be using, for the most
part, the ctrl shortcuts. Perhaps F5 - F8 should be reserved so that
they can serve for the middle slider on the XO, and we can make one of
F9 - F12 the Frame key?

>
>>
>>>    '<alt><ctrl>Escape'    : 'close_window_discard_from_journal',
>>
>>
>> Not sure what this one is.
>
> Close the activity but don't show the naming dialog. Delete the resulting
> journal entry.

Makes sense. A nice use of alt in the desired manner.

>>
>> --- snip ---
>>
>>>  #... alt-numeral should be like the top row of the frame, so alt-5 would
>>> be journal
>>>  #and alt-6 first running activity
>>
>>
>> So is the reason behind this idea to help keyboards without any F keys?
>> Should this not also include the F5 key being made to show the Journal
>> (equiv. to open_search I think).
>
> This is for keyboards without F keys, but it also gives a natural way to get
> the journal and individual activities. alt-shift-N with N>5 could be "close
> activity N-5". I think that F5 should be available to individual activities,
> so I'd vote against F5/Journal. I'd accept the majority decision, though.

Yeah, I think using the alt- shortcuts for the Journal is logical. It
would be more logical if we didn't have to duplicate F1 - F4 with
alt-1 through alt-4, since then the Journal could just be alt-1, but
for keyboards without F keys I guess we need the duplication. I agree,
as mentioned above, that F5 - F8 should be left open, to mirror the
middle slider on the XO.

I find the alt-shift-n suggestion to be highly confusing myself. It
sounds like a good way to accidentally close things, and I'm not sure
I see the need in the end. Just press alt-n to switch to the activity,
followed by alt-esc...

>>
>> --- snip ---
>>
>>> # the following are intended for emulator users
>>> #    '<alt><shift>f'        : 'frame', #removed
>>> #    '<alt><shift>o'        : 'open_search', #removed
>>> #    '<alt><shift>r'        : 'rotate', #removed
>>
>> Why the removals?? Now I would have no working keys at all for accessing
>> the frame!
>
> Because they're inconsistent with the master plan, and
> highly-non-discoverable too.

Could we map any of those that would be dropped in the F9 - F12 range?
For consistency, I guess we should have an "overlay" key there next to
the frame key. Could rotate and/or search live there as well?

>>
>> --- snip ---
>>
>>> ...
>>> Also, ctrl-numeral would choose toolbars, and toolbar tabs would get
>>> little translucent numbers when you held control.
>>
>> So what happens to an activity that uses some ctrl-numerals already
>> (labyrinth does)?
>
> could it use F5-F8? I don't know what it does with these. In practice, the
> activity could get them by assigning them before creating that toolbar;
> ideally, I'd like this to be a consistent standard.

Hmm, I can see ctrl-n being useful to many activities....but tab
switching would be advantageous as well. Could we use relative
navigation for tabs, in the form of alt-right and alt-left, or
similar? This might be more intuitive for kids than counting, and
would't eat up as much of the shortcut space.

>>
>> For my bike-shed, I'd be happy with F1-F4 as is, F5 can be Journal, F6
>> could be frame, then we could make little bits of printed card with icons
>> on, and kids could sticky-tape them just above their F keys ;-)

I like the thought, but suggest pushing Search(Journal)/Frame to F9
and F10, leaving the "middle" of the F keys open to take the place of
the slider.

Eben

> OK, that's a vote. I vote against you. May the best bike-shed win! (And
> since I don't understand what your position on discoverable and ubiquitous
> is, I can't count your vote there).
>
> Jameson
>
>
James Simmons | 1 May 2009 16:26
Favicon

Re: SD card / USB stick support

Sascha,

In regard to my comment:
> [...] it would store meta info for the books, as well as the content 
> type of the book (which the MIME type by itself would not be enough to 
> do).
what I meant was that there are some MIME types mapped to more than one 
Activity.  For instance, the MIME type text/plain is used by Read Etexts 
but also by the Write activity.  application/zip is used by Etoys, View 
Slides, and Read Etexts.  Because of this you cannot simply click on an 
entry in the Journal that has one of these MIME types to resume it.  You 
need to specify which Activity you want to open it with.  You need to do 
this every single time, and it's annoying.  The real answer to this is 
not what I talked about in that email.  The real answer is to implement 
"Unified Bundles" which package books up like Activities and have a 
configuration file that says how they should be opened: as a bunch of 
images in a Zip file, as a plain text file, etc.  That way when I try to 
read a Gutenberg text file I don't have to deal with opening Write by 
mistake, and when I'm viewing a comic book I don't have to deal with 
opening Etoys by mistake.

Journal entries created by an Activity are always resumed by that 
Activity.  It's the Activities that DON'T create their own Journal 
entries that have this issue.  This problem makes Sugar less usable as a 
platform for reading ebooks, which is a shame because ebook reading 
could be a killer app for Sugar and the XO otherwise.  Unified Bundles 
were proposed a couple of weeks ago as a way of dealing with these 
problems and others.

I regards to your point on the SD card, I would love for it to act as a 
second Journal.  Failing that, it should have a view in the Journal that 
communicates to the user that it is NOT a second Journal.  Maybe a 
Windows Explorer kind of view that shows subdirectories, etc.  The 
current situation where it LOOKS like a Journal but doesn't ACT like one 
(no metadata saved, etc.) is annoying.  And whatever you do with the SD 
card the USB thumb drive should definitely have an Explorer look and 
feel.  It is something foreign to Sugar and it should look that way.

James Simmons

Sascha Silbe wrote:
>
> Following up on a discussion on iaep...
>
> On Wed, Apr 29, 2009 at 04:10:59PM -0500, James Simmons wrote:
>
>> The SD card cannot do everything the Journal can do, [...]
> This is something that we should fix. The way the SD card / USB stick 
> support works (in Sugar 0.82.1 on the XO) has bugged me for the past 
> few days (e.g. only FAT filesystems will be usable from inside the 
> Journal).
> Maybe it could work roughly like the following (just a brain dump):
> - automount everything, with UUID-based access (/media/by-uuid/<uuid>) 
> in addition to the current name-based access 
> (/media/≤name>[_<increment>])
> - use "flag files" (empty file with well-known name, e.g. 
> ".sugar_datastore_ignore") on the filesystem to filter it out from the 
> Journal (so it doesn't index/show the wwwoffle cache)
> - let the user unmount Journal-monitored filesystems from the command 
> line (regular umount doesn't work because the fs is busy)
>
> This way SD cards and USB sticks can be used as both a Journal 
> expansion and low-level storage expansion (using symlinks to 
> /media/by-uuid/...), even in parallel (on the same device).
>
> [book reading activity]
>> [...] it would store meta info for the books, as well as the content 
>> type of the book (which the MIME type by itself would not be enough 
>> to do).
> What do you mean with "content type" if the MIME type is not enough 
> (but apparently closely related)?
>
> CU Sascha
>
Jameson Quinn | 1 May 2009 18:48
Picon

Re: Keyboard shortcuts

Eben, I'd like your comments on the discoverable/floaty-letters idea too.

2009/5/1 Eben Eliason <eben.eliason <at> gmail.com>

> I'd vote for caps lock. This is, of course, somewhat more radical than most
> of my other suggestions, so needs discussion.

Hmmm, not sure. It seems to me that if the zoom-level buttons live in
the F-keys, then the Frame button should as well. This keeps it at the
top of the keyboard, as on the XO, and keeps a consistent single-key
path to a very important element of the UI.

And, for what it's worth, I don't think that activities should need to
mess around with the F keys. I'd just as soon have banished them
entirely, as the caps lock key, were they not required for
compatibility. I think that activities should be using, for the most
part, the ctrl shortcuts. Perhaps F5 - F8 should be reserved so that
they can serve for the middle slider on the XO, and we can make one of
F9 - F12 the Frame key?

OK, but what do we do with the volume/brightness controls that are currently in F9-12? The other issue is that keyboards are inconsistent with the high F keys - for instance, the classmate has F11/F12 on the same key (ie, F12 is fn-F11).



I find the alt-shift-n suggestion to be highly confusing myself. It
sounds like a good way to accidentally close things, and I'm not sure
I see the need in the end. Just press alt-n to switch to the activity,
followed by alt-esc...

OK, that was just an offhand idea.


>>> # the following are intended for emulator users
>>> #    '<alt><shift>f'        : 'frame', #removed
>>> #    '<alt><shift>o'        : 'open_search', #removed
>>> #    '<alt><shift>r'        : 'rotate', #removed
>>
>> Why the removals?? Now I would have no working keys at all for accessing
>> the frame!
>
> Because they're inconsistent with the master plan, and
> highly-non-discoverable too.

Could we map any of those that would be dropped in the F9 - F12 range?
For consistency, I guess we should have an "overlay" key there next to
the frame key. Could rotate and/or search live there as well?

OK, the grand unified proposal for these, after discussion on IRC and the above is:
f,j,r,s,v,p,o -> frame, journal, rotate, say, view source, screenshot ("print"), overlay (unimplemented)
<alt><shift>[fjrsvp] = deprecated, but kept for emulator users on MacOS.
<alt>[fjrsvp] = preferred method for above, discoverable through holding alt and reading the "cheat sheet".
F9-F12 = frame, journal, overlay, view source
This order is changed from the XO, because of netbook keyboards missing dedicated F11/F12 keys. I'm agnostic about view source needing a dedicated key.
Insert = frame (redundant)
xo keymaps revised so that the volume and brightness controls are NOT F9-F12, but XF86AudioLowerVolume etc. F9-F12 would not be available from the XO keyboard.



>>
>> --- snip ---
>>
>>> ...
>>> Also, ctrl-numeral would choose toolbars, and toolbar tabs would get
>>> little translucent numbers when you held control.
>>
>> So what happens to an activity that uses some ctrl-numerals already
>> (labyrinth does)?
>
> could it use F5-F8? I don't know what it does with these. In practice, the
> activity could get them by assigning them before creating that toolbar;
> ideally, I'd like this to be a consistent standard.

Hmm, I can see ctrl-n being useful to many activities....but tab
switching would be advantageous as well. Could we use relative
navigation for tabs, in the form of alt-right and alt-left, or
similar? This might be more intuitive for kids than counting, and
would't eat up as much of the shortcut space.

I'd prefer ctrl-something, as it would make it easier to find shortcuts while holding ctrl. I think arrow keys is dangerous, plenty of editors want ctrl-arrow to mean something. The options then are "[" and "]"; "," and "."; ";" and "'"; or "-" and "+". Of these, I think that "," and "." are the best combination of logical (think < and >), non-obscure, and uncommon-as-existing-shortcuts (ctrl-bracket and ctrl-plus are too common). The floaty discoverable letters could show < and > on the next and previous tabs. This is a bit more work to code than just the numbers, but it's doable. The downside is keyboard layouts which move these keys around, but I don't see an easy solution for that (except to redundantly map ctr-< and ctrl->).

Jameson

_______________________________________________
Sugar-devel mailing list
Sugar-devel <at> lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel
Martin Dengler | 1 May 2009 19:10
Gravatar

Re: Keyboard shortcuts

On Fri, May 01, 2009 at 10:48:08AM -0600, Jameson Quinn wrote:
> OK, the grand unified proposal for these, after discussion on IRC and the
> above is:
> f,j,r,s,v,p,o -> frame, journal, rotate, say, view source, screenshot
> ("print"), overlay (unimplemented)

> <alt><shift>[fjrsvp] = deprecated, but kept for emulator users on
> MacOS.

I'd say just "emulator users".

> <alt>[fjrsvp] = preferred method for above, discoverable through holding alt
> and reading the "cheat sheet".
> F9-F12 = frame, journal, overlay, view source
> This order is changed from the XO, because of netbook keyboards missing
> dedicated F11/F12 keys. I'm agnostic about view source needing a dedicated
> key.

I don't see the need for <alt>[fjrsvp]: we have frame, journal, and
view source available in one click via F9-F11 (IIUC your
some-netbooks-share-F11-and-F12 comment), and we have the existing,
ubiquitous fallbacks of <alt><shift>[...].  Why deprecate the existing
combinations in favor of combinations that are more likely to clash
with existing applications?

> Insert = frame (redundant)

What about CapsLock for Macs (non-emulation)?

Martin
_______________________________________________
Sugar-devel mailing list
Sugar-devel <at> lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel
Jameson Quinn | 1 May 2009 19:21
Picon

Re: Keyboard shortcuts



2009/5/1 Martin Dengler <martin <at> martindengler.com>
On Fri, May 01, 2009 at 10:48:08AM -0600, Jameson Quinn wrote:
> OK, the grand unified proposal for these, after discussion on IRC and the
> above is:
> f,j,r,s,v,p,o -> frame, journal, rotate, say, view source, screenshot
> ("print"), overlay (unimplemented)

> <alt><shift>[fjrsvp] = deprecated, but kept for emulator users on
> MacOS.

I'd say just "emulator users".

> <alt>[fjrsvp] = preferred method for above, discoverable through holding alt
> and reading the "cheat sheet".
> F9-F12 = frame, journal, overlay, view source
> This order is changed from the XO, because of netbook keyboards missing
> dedicated F11/F12 keys. I'm agnostic about view source needing a dedicated
> key.

I don't see the need for <alt>[fjrsvp]: we have frame, journal, and
view source available in one click via F9-F11 (IIUC your
some-netbooks-share-F11-and-F12 comment), and we have the existing,
ubiquitous fallbacks of <alt><shift>[...].  Why deprecate the existing
combinations in favor of combinations that are more likely to clash
with existing applications?

Because the <alt> keys are more consistent and discoverable. That's also why I don't just say "emulator users" above; the new keys would be available to non-mac emulator users. Finally, note that if the <alt> keys never get to sugar in macOS emulation, then activities already should be avoiding them.
 


> Insert = frame (redundant)

What about CapsLock for Macs (non-emulation)?

Honestly, if we want a consistent and more-useful remapping of CapsLock, we should consider making it control_R. But I'm ready to let others decide this, it's not a big deal for me.
 


Martin

_______________________________________________
Sugar-devel mailing list
Sugar-devel <at> lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel

Gmane