SuperCollider CLASSES (extension)


a class supplying editable platform-specific key-mappings
Inherits from: Object


KeyDownActions supplies key-mappings for different platforms as classvars. Furthermore it's responsible for handling global shortcuts. Global shortcuts that work independently from SClang or any GUI. The actions connected to the shortcuts can be invoked independently from which application is currently the frontmost.

Class Methods


*keyCodes = value

An IdentityDictionary, containing key-mappings in key-value pairs: e.g.

$e -> 14,


\esc -> 53,

A key can be a single Char or a Symbol, the number is the keycode returned for the key. The snippet creates a window that has a keyDownAction associated which posts key-value pairs for arbitrary keystrokes. You may use this code if the default keyCodes doesn't match the ones on your platform. Edit keyCodes by using the KeyCodesEditor.

w = Window("keyDown action");
w.view.keyDownAction_({ |view, char, mod, unicode, keycode, key|
    "\t\t\t% -> \t\t\t\t%,\n".postf(char.asCompileString, keycode);



*arrowsModifiersQt = value

This special classvar turned out to be necessary as the modifiers when using the arrow-keys are different to the ones using other keys. Use the following snippet to determine (arrow) modifiers on your platform (you may use the same code to test the result of the other modifier related classvars as well).

w = Window("keyDown (arrow) modifiers");
w.view.keyDownAction_({ |view, char, mod, unicode, keycode, key|
    "\t\t\t% (%) -> \t\t\t\t%,\n".postf(char.asCompileString, keycode, mod);



*arrowsModifiersCocoa = value

Same as arrowsModifiersQt. Even though this variable exists using Linux too it has no relevance there.



*modifiersQt = value

Normal modifiers using Qt



*modifiersCocoa = value

Normal modifiers using Cocoa


Setting Shortcuts

*setShortcuts (view, shortcutsDict)

Set the key-down actions of the given View according to the shortcuts given in shortcutsDict.

NOTE: Though argument view will usually be a View or one of its subclasses it can be any object that responds to a method named keyDownAction. Note also the corresponding instance method KeyDownActionsEditor: -setShortcuts



a View or any object that responds to keyDownAction


a Dictionary or (better) an IdentityDictionary defining the key-down actions that shall be added to the given view. The dictionary must be formatted as follows:

    <Symbol containing a key or key combination> -> (
        func: <a Function>,
        keyCode: KeyDownActions.keyCodes[<a Char>],
        modifierQt: KeyDownActions.<modifiersQt or arrowsModifiersQt>[<modifier key>],
        modifierCocoa: KeyDownActions.<modifiersCocoa or arrowsModifiersCocoa>[<modifier key>]
    /* ... more slots ... */


this (KeyDownActions)


*globalShortcuts = value

Set or get global shortcuts. Global shortcuts will independently from the program that is currently the frontmost one. However, they depend on a Synth that listen's to the user's keystrokes. The listening Synth will use one UGen per key. Also note that global shortcuts can only use a single keystroke (no combination of modifier and key).



*globalShortcutsEnabled = bool

Enable or disable global shortcuts.



a Boolean


a Boolean (if used as getter)

Inherited class methods

Instance Methods

Inherited instance methods