qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

grave_esc.md (2014B)


      1 # Grave Escape
      2 
      3 If you're using a 60% keyboard, or any other layout with no F-row, you will have noticed that there is no dedicated Escape key. Grave Escape is a feature that allows you to share the grave key (<code>&#96;</code> and `~`) with Escape.
      4 
      5 ## Usage
      6 
      7 Replace the `KC_GRV` key in your keymap (usually to the left of the `1` key) with `QK_GESC`. Most of the time this key will output `KC_ESC` when pressed. However, when Shift or GUI are held down it will output `KC_GRV` instead.
      8 
      9 ## What Your OS Sees
     10 
     11 If Mary presses `QK_GESC` on her keyboard, the OS will see an KC_ESC character. Now if Mary holds Shift down and presses `QK_GESC` it will output `~`, or a shifted backtick. Now if she holds GUI/CMD/WIN, it will output a simple <code>&#96;</code> character.
     12 
     13 ## Keycodes
     14 
     15 |Key              |Aliases  |Description                                                       |
     16 |-----------------|---------|------------------------------------------------------------------|
     17 |`QK_GRAVE_ESCAPE`|`QK_GESC`|Escape when pressed, <code>&#96;</code> when Shift or GUI are held|
     18 
     19 ### Caveats
     20 
     21 On macOS, Command+<code>&#96;</code> is by default mapped to "Move focus to next window" so it will not output a backtick. Additionally, Terminal always recognises this shortcut to cycle between windows, even if the shortcut is changed in the Keyboard preferences.
     22 
     23 ## Configuration
     24 
     25 There are several possible key combinations this will break, among them Control+Shift+Escape on Windows and Command+Option+Escape on macOS. To work around this, you can `#define` these options in your `config.h`:
     26 
     27 |Define                    |Description                              |
     28 |--------------------------|-----------------------------------------|
     29 |`GRAVE_ESC_ALT_OVERRIDE`  |Always send Escape if Alt is pressed     |
     30 |`GRAVE_ESC_CTRL_OVERRIDE` |Always send Escape if Control is pressed |
     31 |`GRAVE_ESC_GUI_OVERRIDE`  |Always send Escape if GUI is pressed     |
     32 |`GRAVE_ESC_SHIFT_OVERRIDE`|Always send Escape if Shift is pressed   |