What is on our todo is to introduce keymapper or another solution to have no 
hardcoded keys in the complete system.
Now my time is short... sadly. But indeed this is good if we can clean that 
part.
Stef


> http://code.google.com/p/pharo/issues/detail?id=4599
> 
> 2011/8/4 Nicolas Cellier <[email protected]>:
>> I'm typing this message on a mac French keyboard.
>> That means I can obtain the holy brackets [ | ] only through weird
>> keystroke combinations
>> | = shit+option+L
>> [ = shift+option+( where shift+5 is (
>> 
>> Enclosing a text in square brackets would require some finger torture
>> both in Squeak/Pharo
>> shift+option+command+(
>> But this does not work because of #shiftEnclose: rules encountered in
>> #initializeShiftCmdKeyShortcuts
>> (found both ParagraphEditor class and TextEditor class)
>> 
>>        "Note: Command key overrides shift key, so, for example, cmd-shift-9
>> produces $9 not $("
>>        '9[,''' do: [ :char | cmdMap at: (char asciiValue + 1) put:
>> #shiftEnclose: ].       "({< and double-quote"
>>        "Note: Must use cmd-9 or ctrl-9 to get '()' since cmd-shift-9 is a
>> Mac FKey command."
>> 
>> shiftEnclose: is badly designed because it does hardcode the keyboard
>> layout (see below).
>> This is not compatible with modern VMs, at least the mac ones, because
>> they deliver a unicode codePoint for $[ or $|, not a raw keycode.
>> It's easy to remove this anachronism and correct the mapping:
>> 
>>        "On some keyboards, these characters require a shift"
>>        '([<{|"''' do: [:char | cmdMap at: char asciiValue + 1 put: 
>> #enclose:].
>> 
>> To avoid pushing a mac-centric change in trunk, I need to know if the
>> Linux/Windows VM would support above modification.
>> Can anyone check for me ?
>> 
>> Nicolas
>> 
>> 
>> 
>> 
>> 
>> Example of hardcoded keyboard layout:
>> TextEditor>>shiftEnclose: aKeyboardEvent
>>        "Insert or remove bracket characters around the current selection.
>>         Flushes typeahead."
>> 
>>        | char left right startIndex stopIndex oldSelection which text |
>>        char := aKeyboardEvent keyCharacter.
>>        char = $9 ifTrue: [ char := $( ].
>>        char = $, ifTrue: [ char := $< ].
>>        char = $[ ifTrue: [ char := ${ ].
>>        char = $' ifTrue: [ char := $" ].
>>        char asciiValue = 27 ifTrue: [ char := ${ ].    "ctrl-["
>> snip...
>> 
> 


Reply via email to