From: Matthew Flatt <mflatt@cs.utah.edu>
To: plt-scheme@list.cs.brown.edu
Subject: [plt-scheme] 350.4
Date: Thu, 6 Jul 2006 12:05:54 -0600

MzScheme and MrEd are now version 350.3 in the SVN repository trunk.

The changes are related to keyboard handling and menu shortcuts:

At Mon, 19 Jun 2006 10:00:26 +0200, Erich Rast wrote:
> Now there’s only two features left that I’m still desparately missing,
> both in MrEd:
>
> - Full support for multiple modifier key menu shortcuts (please... give
> me at least the shift key!)
>
> [...]

The menu-item% and checkable-menu-item% classes now accept a
`shortcut-prefix’ initialization argument. The default, which is
returned by `get-default-shortcut-prefix’, is ’(ctl) under Windows,
’(cmd) under Mac OS X, and ’(ctl) under X. For example, add ’shift to
the default to get a shift-modified shortcut: ’(shift ctl) for Windows
and X, or ’(shift cmd) for Mac OS X.

In addition, key-code symbols are allowed as menu shortcuts. For
example, you can map a menu item to ’f1 with a prefix of ’().

  Note: ’() as a prefix works only for function keys, unless you
  override the default `on-menu-key’ method. See the `on-menu-key’ docs
  for more information.

Finally, shortcut matching is more liberal for combinations that do not
include ASCII letters and digits. For example, Cmd-+ and Cmd-= match
the same thing on a U.S. keyboard, whether or not the Shift key is
pressed. If both Shift-Cmd-+ and Cmd-+ are mapped, then the former
takes precedence when the Shift key is actually pressed. If both Cmd-=
and Cmd-+ are mapped, the result depends on the platform.

More:

 * Added `get-other-shift-key-code’ to key-event%, which (sometimes)
   returns a character or key code that would have been produced if the
   Shift key were treated opposite from the treatment for
   `get-key-code’.

   See the documentation for details. This functionality is needed to
   make Shift-prefixed menu shortcuts work sensibly, and it helps when
   mapping keys to characters like "+" and "=".

   A related change is that, under Mac OS X, Command cancels Option
   when translating a key event to a key code. That way, Option
   combinations work sensibly for menu shortcuts.

 * Added a "?:" modifier to keymap state strings, which lets the key
   combination match the result of `get-other-shift-key-code’ as well
   as `get-key-code’.

 * Removed `get-x-shortcut-prefix’ and `set-x-shortcut-prefix’ from
   selectable-menu-item<%>.

 * Changed internal handling of keyboard events. Under X, the changes
   should allow DrScheme to receive characters that it used to ignore,
   such as Greek and Cyrillic characters. Under Windows, Control-key
   combinations should be much more consistent across keyboard layouts.

Matthew