Стремительное развитие ИИ в последние годы привело к невиданному росту популярности 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 этот простой скрипт превращает ввод текста в бесшовный процесс. Вам больше не нужно «переключать мозг» вместе с языком — вы просто пишете, а нужные символы всегда там, где вы ожидаете их увидеть.
