Not sure what past history we inherited, but I am questioning the semantics
of our key modifiers.  My understanding is that the following is industry
standard...
    OSX         Windows       Linux
    option           alt                alt
    cmd              ctrl               ctrl

with Copy being the simplest example of this...
    cmd-c           ctrl-c            ctrl-c

Supporting this view:
* "option" and "alternative" are synonyms
* "command" and "control" have similar meaning (e.g. in the army if you
command someone, you control them)
* Microsoft say so (https://support.microsoft.com/en-us/kb/970299)
* Apple say so (https://support.apple.com/kb/PH18812?locale=en_US) and
indeed marks its keyboards with "alt" and "option" on the same key (
http://www.apple.com/au/keyboard/)

So examining this with
    KMLog setDebug.Transcript open.

On OSX Pharo 50044 I get...
    option+arrowLeft --> [keystroke '<Opt-left>']
    cmd+arrowLeft --> [keystroke '<Cmd-left>']
    ctrl+arrowLeft --> OS changes screens

but I am told that Windows gives...
    alt+arrowLeft --> [keystroke '<Cmd-left>']
    ctrl+arrowLeft --> [keystroke '<Ctrl-left>']

when I believe Windows should be...
    alt+arrowLeft --> [keystroke '<Opt-left>']
    ctrl+arrowLeft --> [keystroke '<Cmd-left>']


Part of the issue I think is that our keystroke mapping should be more
abstract.

When I was using Pharo on Windows, sometimes it felt like a second class
citizen wrt key mappings, mapping ctrl-c to an apple-named <cmd-c>.
Perhaps what we should see is:

OSX...
    option+arrowLeft --> [keystroke '<Meta-left>']
    cmd+arrowLeft --> [keystroke '<Hotkey-left>']

Windows...
    alt+arrowLeft --> [keystroke '<Meta-left>']
    ctrl+arrowLeft --> [keystroke '<Hotkey-left>']

Otherwise there will always be the tension on windows that ctrl-c should
generate [<keystroke '<Ctrl-c>] and we end up with definitions repetitively
formed like...
    PharoShortcuts>>acceptShortcut
^ $s ctrl win | $s ctrl unix | $s command mac

which opens the door for inconsistencies.  We should only need to do
something like...
    PharoShortcuts>>acceptShortcut
^ $s hotkey

and leave it to the platform default or user preference the define what the
hotkey actually is.   A status line in the Keymap Browser could display
which actual real keys map to <Hotkey> and <Meta>.


What are you thoughts?
cheers -ben

Reply via email to