Почему Medium съедал польскую Ś, и при чём тут клавиатурный хак времён холодной войны
Поляк печатал в Medium, и одна буква упорно не появлялась: Ś. Все остальные диакритики работали. Причина уходила через внутренности Windows к обходному приёму, который поляки придумали, когда им не продавали компьютеры из США.
В Medium буква Ś пропадала, а восемь других польских букв с диакритикой печатались нормально. Марцин Вихари размотал цепочку: в польской «программистской» раскладке Ś набирают через правый Alt+S, Windows превращает правый Alt в Ctrl+Alt, а обработчик сохранения в Medium перехватывал всё с Ctrl+S, чтобы заблокировать браузерный диалог сохранения.
Фикс в один символ: не срабатывать на Ctrl+S, если зажат ещё и Alt. Поворот в треде: браузеры до сих пор не дают разработчикам чистого способа различать такие комбинации клавиш, поэтому баг возвращается снова и снова.
Буква, которая отказывалась печататься

Исходный разбор Марцина Вихари, впервые опубликованный в Medium Engineering в феврале 2015 года, начинается с жалобы пользователя, которая звучит невозможно: в Medium не печатается польская буква Ś. Не сбой шрифта, не отсутствующий символ. Остальные восемь польских букв с диакритикой (ż, ó, ć, ę, ą, ź, ń, ł) работали. Пропадала только Ś.
Причина — нагромождение из четырёх слоёв, которое Вихари разбирает по одному. Польскому нужно девять букв сверх латиницы, и история о том, как их набирают на американской клавиатуре, начинается в холодной войне. Социалистическая Польша ограничивала ввоз компьютеров, поэтому поляки оказались на американском железе без польских клавиш и сообща пришли к «программистской раскладке»: зажми правый Alt и нажми базовую букву, так правый Alt+S даёт Ś.
Ловушка прячется в Windows. Ради совместимости с эпохой DOS Windows внутренне отображает правый Alt (AltGr) в Ctrl+Alt. Поэтому на уровне системы нажатие для Ś приходит как Ctrl+Alt+S. А Medium хотел заблокировать встроенный браузерный диалог сохранения, поэтому его редактор перехватывал Ctrl+S проверкой вида (e.metaKey || e.ctrlKey) — и никогда не смотрел, зажат ли ещё и Alt. Каждая попытка набрать Ś попадала под это условие, и её съедало.
Фикс Вихари — одно дополнительное условие: глотать нажатие только когда Ctrl нажат, а Alt — нет, то есть (e.metaKey || (e.ctrlKey && !e.altKey)). Ś снова печатается; Ctrl+S по-прежнему блокирует диалог сохранения.
Тред читает это как всё ещё открытую проблему браузеров
Читатели восприняли пост одиннадцатилетней давности как живой баг-репорт. Один свёл весь механизм к развязке:
«Вместо того чтобы слепо и жадно блокировать Ctrl+S, можно блокировать Ctrl+S только если не нажат Alt. Ctrl+Alt+S был сочетанием для польской S.» — комментатор, сведший фикс к одному правилу
Самый острый структурный довод пришёл от разработчика, утверждавшего, что настоящий дефект — выше уровня Medium:
«Браузеры не дают простого способа проверить сочетания клавиш… Нужен proposal, чтобы браузеры отдавали в событии keydown/up/press свойство с кодом комбинации. Что-то вроде „CTRL+S“, „CTRL+ALT+S“… Даже здесь показанный код чинит проблему только на Windows; alt+cmd+s всё равно блокируется.» — разработчик, указывающий на отсутствующий API браузера
Отдельный угол треда вытащил проблему, которой статья вообще не касается: польский текст и поисковая индексация.
«8 из 9 польских букв… раскладываются на базовую букву плюс комбинируемый диакритический знак, но ł остаётся целой. А значит, нельзя нормализовать польский текст для FTS токенайзером unicode61 remove_diacritics из sqlite.» — разработчик, наткнувшийся на крайний случай нормализации Unicode
И финал — от того, кто живёт с тем же багом в настоящем времени:
«А тем временем, в 2026 году я внезапно не могу набрать заглавную Ś в Edge на Mac. Как будто откатился во времени лет на 25.» — польский пользователь, снова наткнувшийся на баг в 2026 году
Последний комментарий и есть та мысль, которую жизнерадостный фикс 2015 года упустил. Веб-приложение, блокирующее Ctrl+S, — это вовсе не частный случай Windows и польского. Любой браузер, любая ОС, любая раскладка, которая собирает настоящий символ из комбинации с модификатором, находится в одном неосторожном e.ctrlKey от того, чтобы символ исчез. Удобство клавиатурных сочетаний и алфавит печатающего делят одни и те же провода, а платформа так и не дала разработчикам чистого способа отличить одно от другого.
Получайте такие разборы каждый день
Главные истории Hacker News — на email, в Telegram или RSS.
На марсианском камне «леопардовые пятна», какие на Земле оставляют только микробы
Керн под названием Sapphire Canyon, высверленный из камня Cheyava Falls, несёт зеленоватые узелки размером с маковое зерно в ободках из железо-фосфатных и железо-сульфидных минералов. На Земле такие ободки остаются, когда микробы поедают органический ил. На Марсе пока никто не скажет наверняка.