import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.B9AX-CPi.js"; const __pageData = JSON.parse('{"title":"Grave Escape","description":"","frontmatter":{},"headers":[],"relativePath":"features/grave_esc.md","filePath":"features/grave_esc.md"}'); const _sfc_main = { name: "features/grave_esc.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Grave Escape ​

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 (` and ~) with Escape.

Usage ​

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.

What Your OS Sees ​

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 ` character.

Keycodes ​

KeyAliasesDescription
QK_GRAVE_ESCAPEQK_GESCEscape when pressed, ` when Shift or GUI are held

Caveats ​

On macOS, Command+` 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.

Configuration ​

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:

DefineDescription
GRAVE_ESC_ALT_OVERRIDEAlways send Escape if Alt is pressed
GRAVE_ESC_CTRL_OVERRIDEAlways send Escape if Control is pressed
GRAVE_ESC_GUI_OVERRIDEAlways send Escape if GUI is pressed
GRAVE_ESC_SHIFT_OVERRIDEAlways send Escape if Shift is pressed
', 13); const _hoisted_14 = [ _hoisted_1 ]; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("div", null, _hoisted_14); } const grave_esc = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]); export { __pageData, grave_esc as default };