Sublime Forum

Survey about Modifier Keys

#1

I would very much like to get feedback from as many people as will respond to this. I will use this feedback to guide me in the design of a Package I am developing that will be producing reports about current Sublime Text Key Bindings.

Background Information

In many software applications, Function Key (and other key) bindings are often grouped by areas of functionality. Let’s take a C/C++ firmware development IDE to illustrate, using the fictional binding to the [F11] key. This IDE not only compiles and builds the firmware, but also programs and runs the microcontroller involved, in including under a debugger when needed. For illustration purposes, let’s say all of the [F11] key’s bindings surround performing compilation tasks. These key bindings use a concept of "level of severity" or "level of depth" or "level of detail", such that more modifier keys increases this level.

Here is an example where S = Shift, C = Ctrl and A = Alt key modifiers.

Table #1:

S C A Level of Severity Example Operation
- - - 0 Check syntax of current file.
x - - 1 Check syntax of whole project.
- x - 2 Compile current file.
x x - 3 Compile whole project.
- - x 4 Compile current file for debugging.
x - x 5 Compile project for debugging
- x x 6 Compile project for debugging, and program microcontroller
x x x 7 Compile project for debugging, program microcontroller, and start debugging

This follows a pattern (as you may have observed) of binary bits matching the “level of severity” with the individual bits corresponding to the modifier keys. It also (mostly) makes the [Shift] key mean “a project-wide operation” and the [Alt] key mean “for debugging”:

Bits Decimal Value
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

The Conflict that Brings the Need for this Survey:

I suspect that some people may instead prefer the Shift modifier key to mean the modifier key that causes the “largest severity” rather than the smallest. This would basically re-arrange the modifier key columns like this:

Table #2:

C A S Level of Severity Example Operation
- - - 0 Check syntax of current file.
x - - 1 Check syntax of whole project.
- x - 2 Compile current file.
x x - 3 Compile whole project.
- - x 4 Compile current file for debugging.
x - x 5 Compile project for debugging
- x x 6 Compile project for debugging, and program microcontroller
x x x 7 Compile project for debugging, program microcontroller, and start debugging

The Survey Question:

Which do you prefer: Table #1 or Table #2?

Kind regards,
Vic

0 Likes

#2

This might not be the response you want, but I am a Mac user, and prefer an entirely different key combo.

For me, the most used modifier keys are Command (aka. super or ⌘), Option (⌥), Control (⌃) and Shift ⇧ (in that order, with shift as a last resort).

In my own plugins I tend to use all three ⌘ + ⌥ + ⌃. It avoids collisions with other keymaps and makes for an easy keyboard combo - They are close together so it prevents finger-gymnastics.

eg:


{
        "caption": "String manipulations - Dynamic menu",
        "keys": ["ctrl+super+option+s"],
        "command": "birdyoz_menu",
        "args": {
            "menu": "string_manipulations"
        }
    },
    {
        "caption": "String manipulations - Strip lines",
        "keys": ["ctrl+super+option+l"],
        "command": "string_manipulations"
    },
    {
        "caption": "String manipulations - Bullet lines (*)",
        "keys": ["ctrl+super+option+8"],
        "command": "string_manipulations",
        "args": {
            "bol": "* "
        }
    }

0 Likes

#3

Key bindings generally aren’t assigned using a “level of severity” at all. It’s a mix of:

  • Following existing standards around keybindings (eg. ctrl/cmd+c for copy)
  • Avoiding conflicts with other keybindings
  • Ease of use (simpler keybindings for more commonly used commands)

Note that these are different on every platform.

0 Likes