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).
For those interested, I'm trying to look at http://code.google.com/p/pharo/issues/detail?id=6657 and: http://code.google.com/p/pharo/issues/detail?id=6656
I have solutions for both : code that does 6657, and a way to disable all legacy shortcuts for 6656 for Spec applications on a per instance basis, without overriding or removing any existing code.
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