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