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... >
