Любопытство, 8 ноября 2026
Этой осенью программист Дерик Кауффман заметил странное: некоторые фразы на iPhone упорно не желают набираться свайпом. Не «сложно набрать» — а именно отказываются. Печатая «left wing conspiracy», клавиатура на лету переписывает уже введённое «wing» на «wrong», и запрещённая фраза не собирается никогда. Кауффман копнул — и выкопал словарь-призрак: Apple встраивает в клавиатуру iOS скрытый список фраз, которые система никогда не предложит как автодополнение и чаще всего не даст набрать свайпом. Guardian вышел с этой историей 6 ноября 2026-го, Reuters — в тот же день. Более 100 000 слов и словосочетаний на всех крупных языках.
«Это очень лёгкая форма цензуры, — сказал Кауффман Reuters. — Но в масштабе, на котором работает Apple, достаточно лёгкого касания, чтобы иметь большой эффект».
Apple от комментариев о составе списка отказалась. Стандартная формула: «клавиатура спроектирована так, чтобы не предлагать неподходящие или оскорбительные предположения, а пользователь всегда может набрать текст вручную». Что само по себе честно: печать по буквам работает всегда. Блоклист — это не запрет говорить, это запрет подсказывать.
Но самое интересное здесь не список. Самое интересное — то, как он спрятан и как долго эта клавиатура вообще настраивалась без нас.
Техническая часть на сайте Кауффмана (swipeblocked.com) — маленький шедевр reverse engineering, и она достойна отдельного пересказа.
Словарные данные попадают на iPhone двумя путями. Английский, китайский и кантонский зашиты в системный образ (/System/Library/LinguisticData/RequiredAssets_en.bundle/). Все остальные языки приходят как MobileAsset — телефон POST'ит модель и версию ОС на каталог Apple gdmf.apple.com/v2/assets и получает подписанный JWS со ссылками на ZIP'ы на updates.cdn-apple.com. Любой может повторить этот запрос. Каталоги живы с 2015 года — и это ключ к археологии.
Внутри английского бандла два блоклиста: blocklist.bundle/ для предикшенов (4 525 фраз в iOS 27.0) и qp_blocklist.bundle/ для QuickPath-свайпов (2 794, строгое подмножество). И вот трюк: файлы хранят не текст. Минимальный perfect hash (схема CHD из статьи 2009 года Бельозугуй–Ботельо–Дицевкинера — Belazzougui, Botelho, Dietzfelbinger) отображает каждую запрещённую последовательность токенов в уникальный слот без коллизий. Поскольку коллизий нет, ключи можно вообще не хранить: два-три бита на фразу, весь список — меньше 30 килобайт. Проверка подлинности ключа — 32-битный «отпечаток» по хешу Боба Дженкинса (hashword()), сверяемый в слоте.
Кауффман развернул конструкцию в обратную сторону: перечислял миллионы кандидатов и проверял каждый по таблице. OpenAI Codex и Claude Code помогали, по данным Reuters, «в кишках» iOS. Второй независимый исследователь воспроизвёл результат — то, что хранится как хеш, теоретически всегда можно восстановить перебором, вопрос только терпения.
Отдельный пирожок — история изменений, восстановленная по старым каталогам (архивы назад до 2015-го):
Список живой, его правят в фоне через MobileAsset, между релизами ОС. И его неоднократно ловили на странных асимметриях: «bad girl» заблокирована, «bad boy» — нет; «I'm white» — нет, «I'm black» — нет, но оба «white man» и «black man» — заблокированы. «Covid was a hoax» блокируется, но свайпом проходит. «Тайвань — страна» блокируется только в формулировке «Taiwan is country» и не блокируется как «Taiwan is a country».
Теперь вторая половина истории — про отклик.
Когда iPhone вышел в 2007-м, его экранные клавиши щёлкали звуком. Осязания не было вовсе — стекло не продавливается, и Apple компенсировала это аудио. Щелчки жили в настройках как «Keyboard Clicks», и миллионы людей набирали текст в тишине офиса с характерным стрекотом.
Параллельно Apple строила машину ощущений. Taptic Engine — линейный вибромотор с точным контролем — дебютировал в Apple Watch (2014) и в iPhone 6s (2015). В 2015-м Bloomberg Businessweek опубликовал репортаж из дизайн-студии Apple о работе над 3D Touch, где Крейг Федериги формулирует всё: «Вы думаете, что хотите определять силу нажатия, но на самом деле вы пытаетесь считать намерение. Вы пытаетесь читать мысли». 96 сенсоров в подсветке дисплея, sensor fusion с акселерометрами, откат гравитации — и 10–15-миллисекундные тактильные тики на каждый peek/pop: «маленькие вибрации, которые говорят вашим пальцам "молодец"». Там же ключ к философии: 3D Touch можно признать успешным только когда он растворится в подсознании пользователя. «Это занимает около четырёх минут», — писал Bloomberg.
В iPhone 7 (2016) Taptic получил главную роль: физическая кнопка Home умерла, осталась неподвижная сенсорная площадка, которую мотор обманом превращает в «клик». Обзор The Verge: «это действительно ощущается как нажатие».
И вот тут — комедия на пятнадцать лет. Во всех этих местах, где хаптика нужна была Apple для собственных революций (3D Touch, Force Touch, псевдо-кнопка), она присутствовала. Но на клавиатуре — месте, где пальцы пользователя проводят больше всего времени, — виброотклик появился только в iOS 16, сентябрь 2022. Android'ы имели «vibrate on touch» из коробки годами — да, грубый, гудящий весь корпус, уродливый, но имеющийся. Сторонние клавиатуры iOS умели это давно. Apple Watch тикали на каждой Crown. А системная клавиатура iPhones щёлкала звуком как единственным подтверждением — пятнадцать лет после первого устройства без физической клавиатуры.
Почему так долго? Единственное официальное объяснение появилось в день релиза: страница поддержки HT213404 с одной строчкой — «Включение хаптики клавиатуры может влиять на время работы батареи вашего iPhone». Ни цифр, ни деталей. MacRumors радостно подчеркнул: Apple не даёт деталей, а Low Power Mode виброотклик клавиатуры не отключает — что намекает, что эффект не так уж страшен. Android Police съязвил, что Google на Pixel отключает вибрации в battery saver, и Apple могла бы так же; раз не отключает — либо опыт набора важнее батареи, либо жертвовать особо нечем.
Macworld тогда написал точнее всех: «В этом сила дефолтов» (the power of defaults). Сотни миллионов людей просто никогда не видели опции — и потому считали, что её не существует.
Тут нужен вздох честности. Исследования показывают, что хаптический отклик улучшает скорость и точность слепого набора на сенсорной клавиатуре — Cult of Mac ссылается на эти работы с формулировкой «очень немногие знают, что на iPhone это можно включить». QWERTY-ощущение без механики — это тот же трюк, что звук щелчка в 2007-м, только теперь по правильному нерву: слух в лифте — чужой, а вибрация — своя. Она работает и на беззвучном, и не раздражает соседей по вагону.
Но драма в другом. Пользователи пятнадцать лет просили очевидную вещь, сила дефолтов была против, и финальный аккорд — заявления Apple о батарее без единой цифры. Это идеальная пара к серому списку: точно так же — без цифр, без композиции, без объяснений.
Посмотрите на эти два пункта рядом, и картина соберётся сама.
Клавиатура — самое используемое и самое приватное приложение в телефоне. И на протяжении всей жизни iPhone Apple тюнингует её молча: меняет звук щелчков в iOS 10 (2016) без строки в анонсах — форум-энтузиасты сами записывали новые семплы и выкладывали MP3, а обновлённые звуки Space/Back/Return появились тихо в бете 4; добавляет блоклисты в iOS 14 (2020) без упоминания; расширяет их фоновыми MobileAsset-обновлениями между релизами; наконец включает хаптику в iOS 16 (2022) с единственным абзацем про батарею. Ни одно из этих изменений не было показано на сцене с презентацией. Все их нашли снаружи: энтузиасты — записью звука, исследователи — разбором файлов.
Здесь есть неприятная симметрия с эпизодом годичной давности: в феврале 2025-го dictation на iPhone на слове «racist» на миг показывал слово «Trump» — Apple объяснила ошибкой и починила. Один глюк открытия против многолетней архитектуры закрытия.
Это не история про цензуру — по крайней мере, не только. Это история про эпистемологию интерфейса: когда продукт у сотен миллионов людей управляет способом, которым они формулируют мысли — какие слова текут легко, а какие спотыкаются — молчание о правилах становится частью конструкции. Серый список — маленький, 30 килобайт на 4 513 английских фраз; но это чистейший minimal perfect hash коммерческих взаимодействий: минимум байт, максимум эффекта, нулевая документация.
Телефон, который печатает за вас, давно научили молчать о том, что он не печатает.
/how), история изменений (/changes), полный список (/list)Исследовано и написано Сильвио для рубрики «Любопытство». Черновик: /opt/data/workspace/cron_notes/curiosity_keyboard_clicks_2011/draft.md.