Стремительное развитие ИИ в последние годы привело к невиданному росту популярности Markdown. Почти все современные LLM — от ChatGPT до Claude — по умолчанию выдают ответы в этом формате. Мы привыкли оформлять в нем заметки в Obsidian, писать промпты, вести документацию в GitHub и общаться в рабочих мессенджерах. Markdown стал «лингва-франка» современного интернета.
Но есть одна проблема. Использовать Markdown с русским языком — это боль.
Вам нужно поставить заголовок? Alt+Shift -> # -> Alt+Shift обратно. Нужно выделить код? Снова чечётка по клавишам переключения раскладки. Стандартная русская раскладка в Windows будто застряла в прошлом веке. Клавиша Shift+3 выдает нам символ №, который в 2024 году нужен крайне редко, в то время как жизненно необходимые решетки, собаки и скобки заставляют нас постоянно прыгать между языками.
Я решил эту проблему для Windows с помощью небольшого скрипта на AutoHotkey (v2).
Идея: Слой AltGr
В большинстве европейских раскладок клавиша AltGr (правый Alt) используется для ввода дополнительных символов. В русской раскладке она практически не задействована (за исключением знака рубля ₽ на некоторых системах).
Я решил превратить её в «магическую кнопку», которая позволяет вводить любые символы из английской раскладки, не выходя из русской.
Что умеет мой конфиг?
Весь цифровой ряд: Теперь
AltGr + 1...0выдает те же символы, что иShift + 1...0на английской раскладке (!,@,#,$,%,^,&,*,(,)). Теперь ввести@для почты (askar@zhakenov.pro) или#для заголовка можно мгновенно.Markdown-friendly: Квадратные скобки
[]и обратные кавычки`для кода теперь всегда под рукой.Правильная типографика: Вместо обычного дефиса я добавил длинное тире
—наAltGr + -.-
Умные кавычки и скобки: Для русской типографики я использовал клавиши
БиЮ.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) }
Как внедрить?
Скачайте AutoHotkey v2.
Создайте файл
RussianMarkdown.ahk, вставьте код и запустите его.Чтобы забыть о проблеме навсегда, добавьте ярлык скрипта в папку автозагрузки Windows (
Win+R->shell:startup).
Итог
В эпоху ИИ, когда мы постоянно общаемся с машинами через текстовые интерфейсы, скорость набора спецсимволов становится критически важной. Для пользователей Windows этот простой скрипт превращает ввод текста в бесшовный процесс. Вам больше не нужно «переключать мозг» вместе с языком — вы просто пишете, а нужные символы всегда там, где вы ожидаете их увидеть.
Комментарии (41)

thereisnocolor
13.03.2026 07:20Microsoft Keyboard Layout Creator

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

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

Anton_lah
13.03.2026 07:20Я нарисовал свою раскладку в mklc, но чудо! Сгенерированный файл перестал устанавливаться под windows 11.
Поиск по всяким суппортам ничего не дал. Есть куча костылей, которые кому-то помогли, но не в моем случае.

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

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

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

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

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

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

K0styan
13.03.2026 07:20"Длинное" — а точнее, просто полноразмерное тире ставится на Windows по сочетанию Win+"-".
Не в укор автору, просто для информации (вдруг кто тире любит, а остальное им не нужно).

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

Anton_lah
13.03.2026 07:20Есть разница. Тире длинное - нужно для текста. А средее - для диапазонов дат.
Но поскольку мы даже с ё не замарачиваемся, то до тонкостей с тире и дефисами нам очень далеко.

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

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

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

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

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

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

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

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

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

ts347
13.03.2026 07:20определяет, что включена русская раскладка, и активирует модификаторы только для неё
То есть в английской раскладке у вас решетка это Shift+3, а в русской — AltGr+3. И самое главное, непонятно, зачем, ведь, насколько я знаю, в английской раскладке эти AltGr-сочетания все равно ничего не делают.
Autohotkey это очень крутая вещь, но кастомная раскладка все равно надежнее. Например, AHK не работает в режиме администратора, автозагрузку скрипта нужно ждать, да и лишний процесс висит в системе. Сам использую вот эту гибридную русско-английскую раскладку, которая позволяет переключать язык по CapsLock, а также вводить всё то, что описано в статье, причем чуть ли не на тех же сочетаниях)
Только я для себя внес одно маленькое изменение. Чтобы клавиша
? / , .в английской раскладке работала так же, как в русской — то есть для ввода точки и запятой. Сколько раз я матерился при правке смешанных русско-английских текстов, когда вместо точки получал слэш — не сосчитать. Поэтому у меня и возник вопрос, который в начале комментария.

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

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

ts347
13.03.2026 07:20Сталкивались. Вот ветка обсуждения, где меня пытаются убедить, что я сам дурак, а винда не виновата.
Я потому и перешел на двуязычную раскладку, что там раскладку переключать не нужно. Раньше винду кастомизировали, потому что чего-то не хватало, сейчас винду кастомизируют, потому что что-то сломали.

PopovGP
13.03.2026 07:20А как быть в MacOS во всеми этими проблемами?
Пробовал Carabiner Elements, но не всегда срабатывает.

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

Askarzh Автор
13.03.2026 07:20Когда пишешь много в markdown то долго набирать спецсимволы сильно отвлекает от основной мысли

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

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.
Askarzh Автор
13.03.2026 07:20Вот интересно! Круто! Обнаружил проблему:
Если запустить этот скрипт при включенной русской раскладке, то выскакивают эти ошибки.
Если запустить при включенной английской, то все работает нормально.
Подумаю как исправить.
Alib79
13.03.2026 07:20Ну я как бы исправил все эти проблемы, Grok подсказал. Еще для себя модифицировал некоторые символы и забиндил на правый CTRL, так как у меня нет правого ALT....

Delek
13.03.2026 07:20В свое время программист 1С Павел Чистов сделал лёгкое приложение добавляющее нужные символы для программирования на русском. Клавиатура Павла Чистова. В сети можно найти, все нужные символы по правому Alt+...
MountainGoat
А не проще просто возвращать английскую раскладку целиком, пока зажата и удерживается AltGr? У пингвинов так.
aborouhin
В сценарии автора - проще. А у меня, например, по AltGr + гласные настроены те же гласные, но со знаками ударения. Ибо есть привычка всякие сто́ит/стои́т, бо́льшая/больша́я указывать явно. Ну и всякие прочие полезности, типа знаков рубля и кое-какой латинской диакритики, которая лично мне часто нужна.