Alfa Brain

Волшебная кнопка для вставки кода на MacOS

Алексей ВечкановАлексей Вечканов   

Вы когда-нибудь ловили себя на том, что постоянно печатаете тройные кавычки ```, чтобы начать код-блок? И вот руки уже тянутся к клавише `… А потом вы пять раз исправляете раскладку, ловите неправильный символ, удаляете, снова вводите… Короче — боль.

Но сегодня боль закончится 💉✨

Мы заставим клавишу ` (backtick) вести себя примерно так: нажал быстро → печатает обычную кавычку ` ,а подержал секунду → магическим образом появляется блок кода.

1```
2
3```

И всё это — без сторонних монстров вроде Alfred/TextExpander, только Karabiner-Elements и немного AppleScript-магии.

Поехали:

Что понадобится:

- macOS
- Karabiner-Elements (бесплатно, хороший, не кусается)
- Пара минут времени

---

Шаг 1. Включаем нужные разрешения  

Karabiner должен иметь право имитировать нажатие клавиш.

Идём сюда:

System Settings → Privacy & Security → Accessibility

Добавляем галочки для:

- Karabiner-Elements
- Karabiner EventViewer (если есть)
- Karabiner Console (если есть)

Что такое Karabiner-Elements?

Karabiner-Elements — это мощная утилита для macOS, которая позволяет:

переназначать клавиши,
создавать горячие клавиши,
навешивать действия на удержание клавиши,
блокировать/включать клавиши,
создавать разные профили (например, “работа”, “игры”, “кодинг”).

Главное: Karabiner работает на очень низком уровне, практически “слушая” клавиатуру напрямую, поэтому:

он видит каждое нажатие,
умеет подменять события,
может выполнять shell-команды,
а значит — может запускать osascript.

Что такое osascript?

osascript — это способ выполнять AppleScript или JavaScript for Automation из терминала.

То есть ты можешь написать:

1osascript -e 'tell application "System Events" to keystroke "Hello!"'

И macOS выполнит это так, как будто ты руками напечатал “Hello!”.

Через osascript можно:

эмулировать нажатия клавиш,
вводить текст,
управлять приложениями,
нажимать кнопки UI,
даже управлять окнами.

Шаг 2. Проверяем, что AppleScript работает

Открой Karabiner → Complex Modifications → Add rule → Add your own → вставь это правило:

1{
2  "description": "TEST: Hold ` prints HELLO",
3  "manipulators": [
4    {
5      "type": "basic",
6      "from": { "key_code": "grave_accent_and_tilde" },
7      "parameters": {
8        "basic.to_if_held_down_threshold_milliseconds": 700
9      },
10      "to_if_held_down": [
11        {
12          "shell_command": "osascript -e 'tell application \"System Events\" to keystroke \"HELLO\"'"
13        }
14      ],
15      "to_if_alone": [
16        { "key_code": "grave_accent_and_tilde" }
17      ]
18    }
19  ]
20}

Теперь:

короткое нажатие → `

удержание → HELLO

Если HELLO появляется — мы красавчики. Скрипт отрабатывает.

Шаг 3. Вставляем блок кода с переносами строк

Теперь меняем тестовое правило на ОНО — финальную рабочую версию:

1{
2    "description": "Hold ` to insert markdown block",
3    "manipulators": [
4        {
5            "from": {
6                "key_code": "grave_accent_and_tilde",
7                "modifiers": { "optional": ["any"] }
8            },
9            "parameters": { "basic.to_if_held_down_threshold_milliseconds": 700 },
10            "to_if_alone": [{ "key_code": "grave_accent_and_tilde" }],
11            "to_if_held_down": [
12                { "shell_command": "osascript -e 'tell application \"System Events\" to keystroke \"```\"'" },
13                { "shell_command": "osascript -e 'key code 36'" },
14                { "shell_command": "osascript -e 'key code 36'" },
15                { "shell_command": "osascript -e 'tell application \"System Events\" to keystroke \"```\"'" }
16            ],
17            "type": "basic"
18        }
19    ]
20}

Теперь магия работает так:

Быстро нажал `

→ печатается обычная backtick-кавычка

Подержал 0.7 секунды

→ вставляется:

1```
2
3```

🎉 Готово!  

Теперь у вас полноценная “клавиша для code blocks”, которая экономит сотни нажатий в день.



Поделиться: