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