I've seen the combination and modifiers for Keymapper already; what I would like is the alternative :
Either
Character tab
or
Character tab ctrl
(because I've linked tab to nextFocus in a TreeModel, and ctrl + tab in a TextModel (since tab can't be used)) Ok, not much of a gain anyway, so no need to add this to Keymapper.
Ben, Guillermo and St�phane, in AltBrowser, all hard-coded shortcuts are desactivated and only the AltBrowser defined shortcuts are active (and those shortcuts are dependent on the selection and resetted on each selection change : it's mostly a recreation of
the existing shortcuts, like doIt, copy/paste, navigation, etc...). It takes as code :
- A subclass of KMDispatcher with two methods (keymapObservers and dispatchKeystroke:).
- The code to replace each necessary KMDispatcher by this subclass.
- The code to reset and add shortcuts to those KMDispatchers.
So, apart from a bit of incompatibility (ListModel shortcuts in Spec), for Spec it's really easy to push that once you review why I had to do that change to KMDispatcher. For the other parts (SmalltalkEditor), it's a matter of replacing some class configs by
KMShortcuts. I believe someone with Nautilus knowledge would be nice : it is the heaviest user of shortcuts, and I really don't use shortcuts in the same way. A merge of both is probably necessary.
For example, I have this method, called each time the selection changes :
updateTextKeymap
"Update the text keymap. Change the key dispatcher if needed. Change all dispatchers to force and really force default shortcuts not to be used."
| keyMorph |
keyMorph := self targetShortcutMorph.
(textModel widget kmDispatcher isKindOf: AltKMDispatcher)
ifFalse: [ textModel widget setProperty: #kmDispatcher toValue: (AltKMDispatcher target: textModel widget) ].
(keyMorph kmDispatcher isKindOf: AltKMDispatcher)
ifFalse: [ keyMorph setProperty: #kmDispatcher toValue: (AltKMDispatcher target: keyMorph) ]
ifTrue: [ keyMorph kmDispatcher reset ].
self selectedItem notNil
ifTrue: [ self selectedItem item buildTextShortcutsOn: keyMorph with: self ]
And, in the select object side :
buildTextShortcutsOn: aKMDispatcher with: aRequestor
"This is an attempt at handling shortcuts... Which works, with the help of a custom KMDispatcher."
(Pragma allNamed: #textAreaCommand from: self class to: ABAbstractNode)
do: [ :e |
(self perform: e selector)
do: [ :c |
| command |
command := c on: aRequestor textModel for: aRequestor.
command buildShortcut: aKMDispatcher ] ]
And then the shortcut itself in the Command object.
buildShortcut: aKMDispatcher
"Add a shortcut to the keymap. Conditions : must have a keystroke, must wantsKeyboard and must be active."
(self keystroke isNil or: [ self wantsKeyboard not or: [ self isActive not ] ])
ifTrue: [ ^ self ].
aKMDispatcher
on: self keystroke
do: [ self execute ]
As you see, the use of KMDispatcher is dynamic and very simple, so I need your comments on how that would fit with Nautilus and the global keymaps, that I have disconnected in my case because they interfere in two ways : KMDispatch randomly chooses which will
apply, and that disallows instance based overriding of shortcuts, and I don't want to have to mask all pre-existing shortcuts to avoid pass-through effect (a shortcut get applied because a global map has it and me, for my application, I don't want that to
happen).
Thierry
De : pharo-project-bounces@lists.gforge.inria.fr [pharo-project-bounces@lists.gforge.inria.fr] de la part de Benjamin [benjamin.vanryseghem.pharo@gmail.com]
Date d'envoi : mardi 11 septembre 2012 19:59
� : Pharo-project@lists.gforge.inria.fr
Objet : Re: [Pharo-project] Keymapping KMShortcut combining
On Sep 11, 2012, at 7:52 PM, Guillermo Polito wrote:
On Sep 11, 2012, at 2:58 PM, Goubier Thierry wrote:
> Hi,
>
> Is it possible in Keymapping to have an alternative as shortcut ?
>
> I would like to map Tab/Shift Tab and Ctrl Tab/Shift Ctrl Tab to get next/previous focus to work with Spec, and I would like to be able to return a keystroke as Character tab | Character tab ctrl.
>
Yes, keymapping allows combinations as ctrl tab, ctrl shift tab, and also sequences (cmd a followed by cmd shift c).
you mean disabling only in spec? The idea is to move all shortcuts to keymappings but I'm out of time right now :(.
+1 :)
Sadly, I am out of time too :s
Ben
>
> Thierry
> --
> Thierry Goubier
> CEA list
> Laboratoire des Fondations des Syst�mes Temps R�el Embarqu�s
> 91191 Gif sur Yvette Cedex
> France
> Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
>