On this page:
3.3.1 Moving Around
3.3.2 Editing Operations
3.3.3 File Operations
3.3.4 Search
3.3.5 Miscellaneous
3.3.6 Interactions
3.3.7 Defining Custom Shortcuts
Version: 4.1

3.3 Keyboard Shortcuts

Most key presses simply insert a character into the editor, such as a, 3, or (. Other keys and key combinations act as keyboard shortcuts that move the blinking caret, delete a line, copy the selection, etc. Keyboard shortcuts are usually trigger by key combinations using the Control, Meta, or Command key.

Many of the key-binding actions can also be performed with menu items.

C-‹key› means press the Control key, hold it down and then press ‹key› and then release them both. For example: C-e (Control-E) moves the blinking caret to the end of the current line.

M-‹key› is the same as C-‹key›, except with the Meta key. Depending on your keyboard, Meta may be called “Left,” “Right,” or have a diamond symbol, but it’s usually on the bottom row next to the space bar. M-‹key› can also be performed as a two-character sequence: first, strike and release the Escape key, then strike ‹key›. Under Windows and Mac OS X, Meta is only available through the Escape key.

DEL is the Delete key.

SPACE is the Space bar.

On most keyboards, “<” and “>” are shifted characters. So, to get M->, you actually have to type Meta-Shift->. That is, press and hold down both the Meta and Shift keys, and then strike “>”.

Under Windows, some of these keybindings are actually standard menu items. Those keybindings will behave according to the menus, unless the Enable keybindings in menus preference is unchecked.

If you are most familiar with Emacs-style key bindings, you should uncheck the Enable keybindings in menus preference. Many of the keybindings below are inspired by Emacs.}

3.3.1 Moving Around
3.3.2 Editing Operations
3.3.3 File Operations
3.3.4 Search
3.3.5 Miscellaneous
3.3.6 Interactions

The interactions window has all of the same keyboard shortcuts as the definitions window plus a few more:

3.3.7 Defining Custom Shortcuts

The Add User-defined Keybindings... menu item in the Keybindings sub-menu of Edit selects a file containing Scheme definitions of keybindings. The file must contain a single module that uses a special keybindings language, framework/keybinding-lang. For example, a file named "mykeys.ss" for keybindings might contain the following code:

  (module mykeys framework/keybinding-lang

    ...)

The framework/keybinding-lang languages provides all bindings mzscheme, scheme/gui/base, and scheme/classs, except that it adjusts #%module-begin to introduce a keybinding form:

(keybinding string-expr proc-expr)

Declares a keybinding, where string-expr must produce a suitable first argument for map-function in keymap%, and the proc-expr must produce a suitable second argument for add-function in keymap%.

Note that drscheme/tool-lib adds all of the names defined in Plugins: Extending DrScheme to your keybindings module, which helps in defining DrScheme-specific keybindings.