Стремительное развитие ИИ в последние годы привело к невиданному росту популярности Markdown. Почти все современные LLM — от ChatGPT до Claude — по умолчанию выдают ответы в этом формате. Мы привыкли оформлять в нем заметки в Obsidian, писать промпты, вести документацию в GitHub и общаться в рабочих мессенджерах. Markdown стал «лингва-франка» современного интернета.

Но есть одна проблема. Использовать Markdown с русским языком — это боль.

Вам нужно поставить заголовок? Alt+Shift -> # -> Alt+Shift обратно. Нужно выделить код? Снова чечётка по клавишам переключения раскладки. Стандартная русская раскладка в Windows будто застряла в прошлом веке. Клавиша Shift+3 выдает нам символ , который в 2024 году нужен крайне редко, в то время как жизненно необходимые решетки, собаки и скобки заставляют нас постоянно прыгать между языками.

Я решил эту проблему для Windows с помощью небольшого скрипта на AutoHotkey (v2).

Идея: Слой AltGr

В большинстве европейских раскладок клавиша AltGr (правый Alt) используется для ввода дополнительных символов. В русской раскладке она практически не задействована (за исключением знака рубля на некоторых системах).

Я решил превратить её в «магическую кнопку», которая позволяет вводить любые символы из английской раскладки, не выходя из русской.

Что умеет мой конфиг?

  1. Весь цифровой ряд: Теперь AltGr + 1...0 выдает те же символы, что и Shift + 1...0 на английской раскладке (!, @, #, $, %, ^, &, *, (, )). Теперь ввести @ для почты (askar@zhakenov.pro) или # для заголовка можно мгновенно.

  2. Markdown-friendly: Квадратные скобки [] и обратные кавычки ` для кода теперь всегда под рукой.

  3. Правильная типографика: Вместо обычного дефиса я добавил длинное тире на AltGr + -.

  4. Умные кавычки и скобки: Для русской типографики я использовал клавиши Б и Ю.

    • AltGr + , -> <

    • AltGr + . -> >

    • AltGr + Shift + , -> «

    • AltGr + Shift + . -> »

Реализация на AutoHotkey v2 (Windows)

Этот скрипт автоматически определяет, что включена русская раскладка, и активирует модификаторы только для неё. При переключении на английский — всё работает как обычно.

#Requires AutoHotkey v2.0
#SingleInstance Force

; Скрипт активен только при русской раскладке (0x0419)
#HotIf GetKeyboardLayout() == "0x0419"

; --- Полный верхний ряд (AltGr + цифра = US Shift символ) ---
<^>!1::SendText "!"
<^>!2::SendText "@"
<^>!3::SendText "#"
<^>!4::SendText "$"
<^>!5::SendText "%"
<^>!6::SendText "^"
<^>!7::SendText "&"
<^>!8::SendText "*"
<^>!9::SendText "("
<^>!0::SendText ")"
<^>!-::SendText "—" ; Длинное тире
<^>!=::SendText "+"

; --- Квадратные и фигурные скобки ---
<^>![::SendText "["
<^>!]::SendText "]"
<^>!+[::SendText "{"
<^>!+]::SendText "}"

; --- Пунктуация и кавычки-ёлочки (Б и Ю) ---
; Обычное нажатие дает символы для кода/Markdown, Shift — типографику
<^>!,::SendText "<"
<^>!.::SendText ">"
<^>!+,::SendText "«"
<^>!+.::SendText "»"

; --- Markdown и код ---
<^>!;::SendText ":"
<^>!'::SendText "'"
<^>!\::SendText "|"
<^>!/::SendText "/"
<^>!s::SendText "_"
<^>!k::SendText "``" ; Обратная кавычка
<^>!SC029::SendText "``" ; Клавиша под Esc (тильда)

#HotIf

; Функция проверки текущей раскладки
GetKeyboardLayout() {
    WinID := WinExist("A")
    if !WinID
        return 0
    ThreadID := DllCall("GetWindowThreadProcessId", "UInt", WinID, "UInt", 0)
    return Format("0x{:04X}", DllCall("GetKeyboardLayout", "UInt", ThreadID, "UInt") & 0xFFFF)
}

Как внедрить?

  1. Скачайте AutoHotkey v2.

  2. Создайте файл RussianMarkdown.ahk, вставьте код и запустите его.

  3. Чтобы забыть о проблеме навсегда, добавьте ярлык скрипта в папку автозагрузки Windows (Win+R -> shell:startup).

Итог

В эпоху ИИ, когда мы постоянно общаемся с машинами через текстовые интерфейсы, скорость набора спецсимволов становится критически важной. Для пользователей Windows этот простой скрипт превращает ввод текста в бесшовный процесс. Вам больше не нужно «переключать мозг» вместе с языком — вы просто пишете, а нужные символы всегда там, где вы ожидаете их увидеть.

Комментарии (41)


  1. MountainGoat
    13.03.2026 07:20

    А не проще просто возвращать английскую раскладку целиком, пока зажата и удерживается AltGr? У пингвинов так.


    1. aborouhin
      13.03.2026 07:20

      В сценарии автора - проще. А у меня, например, по AltGr + гласные настроены те же гласные, но со знаками ударения. Ибо есть привычка всякие сто́ит/стои́т, бо́льшая/больша́я указывать явно. Ну и всякие прочие полезности, типа знаков рубля и кое-какой латинской диакритики, которая лично мне часто нужна.


  1. thereisnocolor
    13.03.2026 07:20

    Microsoft Keyboard Layout Creator


    1. Arhammon
      13.03.2026 07:20

      Что называется автору спасибо за подъём вопроса, комментаторам спасибо за решение...


      1. MountainGoat
        13.03.2026 07:20

        Любое решение от Майкрософт обычно содержит закидон, из-за которого оно вроде есть, а использовать нельзя. Например, хоткеи в PowerToys нельзя повесить на CapsLock.


    1. backfield9818
      13.03.2026 07:20

      Ну или Диспетчер клавиатуры в PowerToys


    1. Anton_lah
      13.03.2026 07:20

      Я нарисовал свою раскладку в mklc, но чудо! Сгенерированный файл перестал устанавливаться под windows 11.

      Поиск по всяким суппортам ничего не дал. Есть куча костылей, которые кому-то помогли, но не в моем случае.


      1. AndreyDmitriev
        13.03.2026 07:20

        Может, вы что-то делаете неправильно, у меня работает без проблем на 11, правда это LTSC — я себе сделал русско-немецкую клаву, расставив все знаки так, чтобы они на обоих языках оставались строго на одних и тех же местах (скобки со сдвигом на одну особо доставали). Правда ь и ю пришлось загнать в верхний ряд. Вот репозиторий с исходниками — может поможет понять, что у вас отличается.


        1. Anton_lah
          13.03.2026 07:20

          Я просто нажал "build" и она собрала setup.exе. При запуске программа говорит, что "ваш процессор не поддерживается". Быстрый поиск показал, что я не один с такой проблемой. И решения проблемы я так и не нашел.


          1. AndreyDmitriev
            13.03.2026 07:20

            Обычно для любого наблюдаемого феномена существует рациональное объяснение, чудес не бывает, вы можете попробовать запустить мой setup (в виртуалке, если не доверяете) чтобы локализовать проблему (это может проблема как сборки, так и запуска конкретно у вас) и если вы закинете куда-нибудь ваш проект, включая setup и скриншот как выглядит ошибка, хоть на тот же гитхаб, то я могу запустить это у себя, отреверсить и пробежать его под отладчиком, чтобы понять откуда ноги растут у этого сообщения. Я никогда такого не видел, но поскольку вы не одиноки, то коммьюнити будет благодарно, если мы разберёмся, в общем я готов попробовать помочь в свободное время.


          1. ImagineTables
            13.03.2026 07:20

            А если напрямую запустить сгенерированный msi для вашего процессора? Их там три штуки генерируется, вроде.


    1. ImagineTables
      13.03.2026 07:20

      Я сам пользуюсь, но с ней есть одна проблема: каждый дурак считает своим долгом назначать мои комбинации для ввода шорткатами в своей программе. Если в браузере (FF) и, соответственно, веб-приложениях это решается глобально, то в какой-нибудь тележке — фигвам. А вот навесные перехватчики могут помогать. Думаю попробовать мигрировать на них с MSKLC.


    1. CptAFK
      13.03.2026 07:20

      Ты легенда, я использовал его, когда кодил на 1С, а потом просто не мог найти как оно называется!


  1. K0styan
    13.03.2026 07:20

    "Длинное" — а точнее, просто полноразмерное тире ставится на Windows по сочетанию Win+"-".

    Не в укор автору, просто для информации (вдруг кто тире любит, а остальное им не нужно).


    1. lexxpavlov
      13.03.2026 07:20

      Терпеть не могу длинное тире (mdash), зато люблю среднее (ndash).


      1. Anton_lah
        13.03.2026 07:20

        Есть разница. Тире длинное - нужно для текста. А средее - для диапазонов дат.

        Но поскольку мы даже с ё не замарачиваемся, то до тонкостей с тире и дефисами нам очень далеко.


        1. unclegluk
          13.03.2026 07:20

          Не только для дат, но и других диапазонов и интервалов, например Москва–Париж. Но это не обязаловка, а чистая вкусовщина. А вот в списках литературы либо только длинное, либо только среднее, оно же короткое. Вообще, основное применение короткого тире — это замена длинного тире в узкополосном наборе, например в газетной верстке. А еще в крупных заголовках и отдельных надписях, если длинное тире выглядит ущербно или тупо места не хватает.


  1. kinDick
    13.03.2026 07:20

    Конкретно для Obsidian есть плагин: Shortcuts Extender. Позволяет через Alt практически всё что нужно вводить.


  1. Spisocheg
    13.03.2026 07:20

    Тоже столкнулась с такой проблемой, всё откладывала вопрос ее решения. Спасибо и автору, и комментаторам)


  1. KonstantinTokar
    13.03.2026 07:20

    Есть программа espanso . Заменяет всякое на всякое, в частности №№ на ## и подобное. Работает и в windows и в linux и в macOS . Я его поставил ради Obsidian и именно этих решёток.


    1. Askarzh Автор
      13.03.2026 07:20

      Да. Хорошая программа. Но я не очень люблю, когда что-то за меня корректируют. Предпочитаю контролировать сам.


  1. Canep7
    13.03.2026 07:20

    Я пользуюсь такой штукой как "Типографская раскладка Ильи Бирмана", легко гуглится. Это не совсем полностью то, что хочет автор, но очень близко. Достоинство в том, что работает без всяких дополнительных программ. Можно доработать до хотелок автора, там есть для этого возможность.


    1. Askarzh Автор
      13.03.2026 07:20

      Раскладка Ильи Бирмана была основой для меня, но как уже говорилось в оригинальной раскладке Бирмана нет спецсимволов для markdown.


      1. Canep7
        13.03.2026 07:20

        Ее можно поправить под себя. Кроме того, там есть свободные сочетания и можно попросить Илью поправить его раскладку. Можно создать с нуля свою собственную раскладку. В любом случае не нужна будет сторонняя программа, которая добавляет нам и точку отказа и возможные уязвимости.


  1. silentz
    13.03.2026 07:20

    Я пользуюсь идеей и просто создал макрос и забиндил alt+shift+3 на решетку. Работает в идее в любой раскладке


  1. ts347
    13.03.2026 07:20

    определяет, что включена русская раскладка, и активирует модификаторы только для неё

    То есть в английской раскладке у вас решетка это Shift+3, а в русской — AltGr+3. И самое главное, непонятно, зачем, ведь, насколько я знаю, в английской раскладке эти AltGr-сочетания все равно ничего не делают.

    Autohotkey это очень крутая вещь, но кастомная раскладка все равно надежнее. Например, AHK не работает в режиме администратора, автозагрузку скрипта нужно ждать, да и лишний процесс висит в системе. Сам использую вот эту гибридную русско-английскую раскладку, которая позволяет переключать язык по CapsLock, а также вводить всё то, что описано в статье, причем чуть ли не на тех же сочетаниях)

    Только я для себя внес одно маленькое изменение. Чтобы клавиша ? / , . в английской раскладке работала так же, как в русской — то есть для ввода точки и запятой. Сколько раз я матерился при правке смешанных русско-английских текстов, когда вместо точки получал слэш — не сосчитать. Поэтому у меня и возник вопрос, который в начале комментария.


  1. annagle
    13.03.2026 07:20

    А вы не думали оформить это в небольшой репозиторий/установщик с парой преднастроенных профилей (Markdown‑фокус, код‑фокус, типографика‑фокус), чтобы людям вообще не приходилось править AHK‑скрипт руками?


    1. Askarzh Автор
      13.03.2026 07:20

      Спасибо за совет! Попробую сделать


  1. AlexNecro
    13.03.2026 07:20

    А одинэсники себе раскладку сделали и всё. Наверное, им нужно было ехать, а не шашечки.


  1. Altair2021
    13.03.2026 07:20

    Кто-то сталкивался с тем, что переключение раскладки на винде временами начинает тормозить (на секунду-две)? При быстрой печати особенно заметно, потому что новое слово печатается с первым символом в предыдущей раскладке. Ужасно бесячая хрень на винде (в числе множества прочих)


    1. ts347
      13.03.2026 07:20

      Сталкивались. Вот ветка обсуждения, где меня пытаются убедить, что я сам дурак, а винда не виновата.

      Я потому и перешел на двуязычную раскладку, что там раскладку переключать не нужно. Раньше винду кастомизировали, потому что чего-то не хватало, сейчас винду кастомизируют, потому что что-то сломали.


  1. PopovGP
    13.03.2026 07:20

    А как быть в MacOS во всеми этими проблемами?

    Пробовал Carabiner Elements, но не всегда срабатывает.


  1. trueneu
    13.03.2026 07:20

    Для Linux советую xremap: https://github.com/xremap/xremap


    1. Askarzh Автор
      13.03.2026 07:20

      Да. Под линуксом я тоже его использую


  1. supersmeh
    13.03.2026 07:20

    Можно же просто зажать альт и набрать 35 на цифровой клавиатуре. Так вообще можно любой символ вводить. И разницы никакой что код запоминать, что горячие клавиши для него


    1. Askarzh Автор
      13.03.2026 07:20

      Когда пишешь много в markdown то долго набирать спецсимволы сильно отвлекает от основной мысли


  1. UA6ATG
    13.03.2026 07:20

    Спасибо тебе дорогой друг! Я до этого использовал ahk скрипт который вешает на среднею кнопку мыши теги markdown . Ваш скрипт немного переделаю : добавлю теги mardown которые будут добавлять теги вставки ссылки на картинку и вообще ссылку в markdown. Вечно из головы вылетает . Еще раз благодарю за идею!


  1. Alib79
    13.03.2026 07:20

    Сделай как у вас в описании код... мне при запуске скрипта вылетает несколько окошек вот с такими ошибками

    Note: The hotkey <^>![ will not be active because it does not exist in
    the current keyboard layout.

    Note: The hotkey <^>!] will not be active because it does not exist in
    the current keyboard layout.

    Note: The hotkey <^>!+[ will not be active because it does not exist in
    the current keyboard layout.

    hotkey <^>!+] will not be active because it does not exist in
    the current keyboard layout.

    Note: The hotkey <^>!' will not be active because it does not exist in
    the current keyboard layout.


    1. Askarzh Автор
      13.03.2026 07:20

      Вот интересно! Круто! Обнаружил проблему:
      Если запустить этот скрипт при включенной русской раскладке, то выскакивают эти ошибки.
      Если запустить при включенной английской, то все работает нормально.
      Подумаю как исправить.


      1. Alib79
        13.03.2026 07:20

        Ну я как бы исправил все эти проблемы, Grok подсказал. Еще для себя модифицировал некоторые символы и забиндил на правый CTRL, так как у меня нет правого ALT....


  1. Delek
    13.03.2026 07:20

    В свое время программист 1С Павел Чистов сделал лёгкое приложение добавляющее нужные символы для программирования на русском. Клавиатура Павла Чистова. В сети можно найти, все нужные символы по правому Alt+...