A follow-up: I scanned the email threads mentioned in this thread. I tried to use Keymapper and it seemed way too complicated for the simple things I wanted to do. It wasn't obvious at all to me how to proceed once I had the GUI displayed and I encountered numerous errors while exploring it. After perusing the code a little, it seemed much more invasive than what I had in mind -- extensions and overrides in numerous classes. It seems to be a general approach for solving keystroke mapping not only at the global level, but in application-specific cases as well. I have placed my own GlobalKeys package on SqueakSource (http://www.squeaksource.com/GlobalKeys) It is much smaller and less ambitious than Keymapper, it only works on Pharo, and it is much less capable, but at least in my environment it does what I need without a lot of complication. Maybe someone else will find it useful as well. One of the joys of Smalltalk: if you don't like the way something works, change it or write your own. Regards, TF On Fri, Dec 3, 2010 at 8:19 PM, Tony Fleig <tony.fleig@gmail.com> wrote:
I find myself wanting global keyboard shortcuts for such things as invoking an external browser, switching focus between windows, opening new tool windows, executing various World menu options, executing my own scripts, etc.
After working for years in corporations doing Windows-based development in Microsoft Visual Studio, I find the necessity of constantly reaching for the mouse in Pharo to be cumbersome and unproductive.
I was able to add some shortcut keys to invoke commands that I prepared by sending messages like this:
  World respondToCommand: $l bySending: #startExternalWebBrowser to: TFCommands.
However, this only works when no window has the keyboard focus.
I followed the keystroke handling path in the debugger and I think I can probably find a place to hook in some special handling for my globally-accessible keystrokes.
My questions are:
1. Has somebody already done this?
2. Is there a "standard" or "best practice" way of accomplishing this?
Regards, TF