Виртуальная клавиатура

Экранная клавиатура для другого языка: раскладки, привязка по позиции, мёртвые клавиши, слой AltGr, корейские слоги и японские ромадзи — всё в браузере.

Стрелки перемещают по клавишам на экране, Enter нажимает клавишу. Tab выходит из клавиатуры; ваша собственная клавиатура печатает прямо в текстовое поле.

Физические клавиши сопоставляются по позиции: каждая клавиша печатает то, что выбранная раскладка ставит на это место, какой бы ни была раскладка системы. Перехват действует только пока текстовое поле в фокусе — Ctrl+C, Tab и стрелки продолжают работать.

Alt Gr — удерживаемый на вашей клавиатуре или нажатый ниже — открывает третий слой, куда раскладка помещает @, € и скобки. Мёртвая клавиша (пунктирная рамка) сама по себе ничего не печатает: нажмите её, затем букву, чтобы составить знак с диакритикой, пробел, чтобы получить сам знак, или Backspace, чтобы отменить.

Один инструмент, тринадцать языков

Эта клавиатура печатает на тринадцати языках, на которых написан этот сайт, и для каждого показывает раскладку, которой носители языка действительно пользуются, — по простому правилу: стандартная раскладка страны с наибольшим числом говорящих. Иврит — стандарт SI-1452, французский — AZERTY, немецкий — QWERTZ, русский — ЙЦУКЕН, испанский — латиноамериканская раскладка, португальский — бразильская ABNT2, турецкий — Turkish Q, японский — кана-раскладка JIS, корейский — тубольсик (Dubeolsik). В списке каждая раскладка подписана собственным именем на собственном языке, потому что читатель, ищущий свой язык, узнаёт его самоназвание при любом языке интерфейса.

Один пункт нарочно скучен: индонезийский. У Индонезии нет национальной раскладки — страна печатает на US QWERTY, той же раскладке, что и английский, — и честный ответ состоит в том, чтобы так и сказать, а не выдумывать раскладку, которой ни один индонезиец никогда не видел. Инструмент открывается с раскладкой языка, на котором вы его читаете, и в любой момент можно переключиться на любую другую; набранный текст при переключении остаётся на месте.

Позиционное сопоставление: ваша собственная раскладка не важна

Печатайте на физической клавиатуре — и инструмент читает каждую клавишу по её позиции на доске, никогда не по символу, который, по мнению операционной системы, она даёт. Клавиша двумя рядами выше пробела, сразу справа от J — позиция K — печатает k в US QWERTY и ל в ивритской раскладке, какая бы раскладка ни была установлена на вашей машине. В этом перевороте весь смысл: слушай инструмент операционную систему, он лишь возвращал бы вам эхом вашу же раскладку и никогда не смог бы печатать на языке, раскладки которого у вас нет.

Щелчок по экранной клавише и нажатие на физической доске проходят через один и тот же механизм, поэтому они никогда не разойдутся в том, что делает клавиша. Пока вы печатаете физически, нажатая клавиша подсвечивается на экранной клавиатуре — так и учат, где живут символы незнакомой раскладки, как когда-то этому учили печатные наклейки на клавиши.

Перехват нарочно узок. Физические клавиши читаются только пока текстовое поле в фокусе, так что остальная страница продолжает работать как обычно. Сочетания вроде Ctrl+C, Ctrl+V, Ctrl+A и Ctrl+Z проходят прямо в браузер, как и стрелки, Home, End и Delete, — а Tab не проглатывается никогда, потому что инструмент, съедающий Tab, запирает на странице всякого, кто перемещается с клавиатуры.

Чего физической клавиатуре может не хватать, так это клавиш. Европейские раскладки здесь — это клавиатуры ISO: у них есть 102-я клавиша между левым Shift и первой буквой нижнего ряда, а бразильская ABNT2 добавляет 49-ю рядом с правым Shift. На клавиатуре ANSI американского образца нет ни той, ни другой, так что ни одно ваше нажатие до них не доберётся — но на экранной клавиатуре они нарисованы, как и все прочие, и щелчок печатает ровно то, что раскладка туда помещает. Ничто в раскладке не остаётся недостижимым: на неподходящей клавиатуре небольшая её часть доступна только мышью.

Слои: Shift, Caps Lock, AltGr и мёртвые клавиши

Настоящая клавиатура печатает больше символов, чем у неё клавиш, и делает это слоями. Удержанный Shift при нажатии печатает слой Shift; щелчок же по экранному Shift фиксирует его ровно на один символ — так экранные клавиатуры ведут себя везде. Caps Lock уже, чем принято думать: он капитализирует только те клавиши, где слой Shift действительно является заглавной буквой базовой, поэтому превращает a в A, но никогда не превращает 1 в !. На письме вовсе без регистра — иврит из таких — Caps Lock не делает ничего, ровно как и настоящая ивритская клавиатура.

Европейские раскладки несут третий слой, достижимый через AltGr, где живут символы вроде @, € и пар скобок, и мёртвые клавиши со стандартным поведением: нажимаете значок ударения, затем букву — и они складываются; мёртвая клавиша и затем пробел дают сам значок, а буква, к которой значок не может присоединиться, просто приходит после него. Ожидающая мёртвая клавиша помечается на экранной клавиатуре, чтобы тишина между двумя нажатиями была видимой, а не сбивающей с толку.

Две ивритские детали выглядят как ошибки и являются стандартом. Раскладка зеркалит свои парные ограничители — Shift+9 печатает ) там, где US QWERTY печатает ( — потому что стандарт сопоставляет логический символ, а алгоритм двунаправленного текста зеркалит его обратно при отрисовке; клавиша, выглядящая как открывающая скобка, даёт на экране открывающую скобку. И само текстовое поле переворачивается справа налево при выборе иврита или арабского, потому что направление принадлежит набираемому тексту, а не языку страницы вокруг.

Японский и корейский — методы ввода, а не просто раскладки

Для большинства языков клавиатура — это таблица: одна позиция клавиши, один символ. Корейскому и японскому таблицы мало. Корейский тубольсик печатает чамо — отдельные согласные и гласные, — а метод ввода на ходу складывает их в слоговые блоки: ㅎ, затем ㅏ, затем ㄴ становятся 한, составные гласные и двойные конечные согласные собираются так же, а конечная согласная переносится в следующий слог, когда идущее следом делает такое чтение правильным. Backspace разбирает композицию чамо за чамо, а не стирает слог целиком, потому что так ведёт себя каждый корейский метод ввода, а всё прочее превращает исправление опечатки в мучение.

Японский есть в двух режимах. По умолчанию — ввод ромадзи на физической клавиатуре: печатаете ka, появляется か, со стандартной обработкой маленького っ и ん — потому что именно так и происходит большая часть японского набора. Экранная клавиатура показывает кана-раскладку JIS, где каждая клавиша — слог, а позиционный режим JIS есть для тех, кто действительно так печатает. Переключатель меняет вывод между хираганой и катаканой.

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

Арабская клавиатура, еврейская клавиатура, русская клавиатура — ставить нечего

Именно позиционная раскладка даёт этим запросам смысл здесь. Выберите арабскую раскладку — она стоит в списке под своим именем, العربية — 101 — и каждая клавиша лежащей перед вами доски разрешается против неё, а не против вашей: пять позиций, на которых американская доска печатает L, V, P, F и H, нажатые в этом порядке, набирают مرحبا, что бы на них ни было выгравировано. Ничего не скачивается, языковой пакет не ставится, ни одна системная настройка не трогается — вернули переключатель, и ваша собственная раскладка ровно там, где была.

  • Базовый слой — это буквы, в расположении 101. Позиция, на которой американская доска печатает K, набирает здесь ن — та же позиция, что набирает ל в еврейской раскладке и k в US QWERTY: одна клавиша, три раскладки, три буквы, и ничего из этого не решает ваша операционная система.
  • На слое Shift живут краткие гласные, а не прописные буквы, потому что заглавной буквы в арабском нет и слой свободен: фатха, дамма и касра, три их формы танвина, сукун и шадда. Каждый из них — комбинирующий знак: он рисуется на букве перед ним и не стоит сам по себе, поэтому сначала набирается буква, а потом знак.
  • Тот же слой Shift несёт формы хамзы أ‎, إ и آ, три лигатуры лям-алиф с хамзой — простая лежит на базовом слое — и арабские запятую, точку с запятой и вопросительный знак, ، ؛ ؟, которые являются самостоятельными кодовыми точками, а не зеркальными версиями своих аналогов из ASCII, так что набранный текст расставлен так, как пишут по-арабски, а не так, как по-английски.
  • Позиция J на слое Shift — это татвиль, кашида: она удлиняет соединение между двумя буквами, а не добавляет звук, поэтому несущее её слово длиннее, хотя пишется тем же набором букв.
  • AltGr открывает третий слой, которого у еврейской раскладки нет вовсе. Цифровой ряд даёт арабо-индийские цифры ١٢٣٤٥٦٧٨٩٠, а базовый ряд остаётся 1234567890, так что оба набора разделены одним модификатором; буквенные ряды дают персидские и урду буквы, которые всё ещё нужны арабской доске, — پ‎, چ‎, ژ‎, گ и ڤ — и арабские десятичный и тысячный разделители.

Две вещи в этой раскладке выглядят как поломка и являются честным описанием самого письма. Caps Lock не делает в арабском ровно ничего, и ровно ничего в иврите: он управляет только клавишей, у которой слой Shift — прописная форма её базовой буквы, а в письме без заглавных такой клавиши нет нигде на доске. И здесь нет ни мёртвой клавиши, ни шага сборки — в отличие от корейского и японского выше, каждая арабская клавиша набирает свой символ в момент нажатия, так что ничто не ждёт завершения. Еврейская раскладка SI-1452 и русская ЙЦУКЕН выбираются из того же списка и набираются точно так же.

Работает в вашем браузере

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

Частые вопросы

Почему нажатие клавиши K печатает ל?
Потому что клавиши сопоставляются по физической позиции, а не по символу, который сообщает операционная система. В ивритской раскладке позиция K несёт букву ל — её она и печатает, что на вашей доске, что на экранной клавиатуре. Именно это позволяет печатать на языке, раскладки которого на вашей машине нет.
Нужно ли, чтобы язык был установлен на компьютере?
Нет. Инструмент никогда не спрашивает операционную систему, что означает клавиша, — он сам разрешает каждую клавишу по выбранной раскладке. На вашей машине может стоять любая раскладка или ни одной из нужных — набранный текст выйдет одинаковым.
Почему мой Ctrl+C продолжал работать во время набора?
Так задумано. Сочетания с модификаторами, стрелки, Home, End, Delete и Tab передаются браузеру как есть, а не перехватываются, поэтому привычные приёмы редактирования — копировать, вставить, отменить, выделить всё — продолжают работать внутри текстового поля, а клавиатурная навигация — вне его.
Умеет ли он превращать японскую кану в кандзи?
Нет, и это сознательно. Преобразование в кандзи требует IME — словаря в сотни тысяч слов плюс модели ранжирования, — а плохой IME выдаёт правдоподобный неверный текст, что хуже, чем ничего. Инструмент печатает хирагану и катакану, с вводом ромадзи на физической клавиатуре, и говорит об этом прямо, а не даёт вам обнаружить предел самим.
Почему Shift+9 печатает в иврите закрывающую скобку?
Он печатает логический символ, который ставит там стандарт SI-1452, а алгоритм двунаправленного текста зеркалит его при отрисовке текста справа налево — на экране вы видите ровно ту скобку, что нарисована на клавише. «Починить» это значило бы сломать каждую скобку, набранную на иврите.
На моей клавиатуре нет клавиши рядом с левым Shift. Её всё равно можно напечатать?
Да, щелчком по ней. Европейские раскладки — это клавиатуры ISO со 102-й клавишей в этом месте, а у бразильской ABNT2 есть дополнительная клавиша рядом с правым Shift; на клавиатуре ANSI американского образца нет ни одной из них. Обе нарисованы на экранной клавиатуре, и щелчок печатает то, что раскладка туда помещает, — так что ни один символ раскладки не остаётся недоступным, какая бы клавиатура у вас ни была.
Отправляется ли что-нибудь из набранного на сервер?
Нет. Вся клавиатура — раскладки, сопоставление, композиция — работает в вашем браузере. Нажатия обрабатываются локально, ничего не выгружается и не журналируется, а перехват действует только пока текстовое поле в фокусе, так что клавиши, нажатые в других местах страницы, не видны вовсе.
Как печатать по-арабски без арабской клавиатуры?
Выберите العربية — 101 в списке раскладок и печатайте. Каждая клавиша разрешается по своей позиции против этой раскладки, а не по символу, о котором сообщает операционная система, поэтому ничего не устанавливается и ваша собственная раскладка не тронута: на американской доске позиции L, V, P, F и H дают مرحبا. Клики по экранным клавишам проходят ровно через ту же машинерию, так что доска без какой-то клавиши никогда не станет препятствием.
Где на клавиатуре арабские огласовки — харакат?
На слое Shift, который арабский оставляет свободным, потому что заглавной буквы для Shift у него нет. Позиции, на которых американская доска печатает Q, E и A, несут фатху, дамму и касру; W, R и S — три их формы танвина; X несёт сукун, а клавиша слева от 1 несёт шадду. Это комбинирующие знаки, поэтому сначала набирайте букву, а затем знак — он рисуется на букве, за которой следует.
Как набрать арабские цифры — ١ ٢ ٣?
Удерживайте AltGr и работайте цифровым рядом. Арабская раскладка кладёт ١٢٣٤٥٦٧٨٩٠ на свой третий слой и оставляет 1234567890 на базовом, так что оба набора разделены одним модификатором и ни один из них не требует переключения. Тот же слой несёт персидские и урду буквы پ‎, چ‎, ژ‎, گ и ڤ и арабские десятичный и тысячный разделители. Если на вашей доске клавиши AltGr нет, экранная AltGr делает то же самое и залипает ровно на одно нажатие.

Похожие инструменты

  • Слова из букв

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

  • Решатель слов из пяти букв

    Та страница не про набор текста, а про игру в угадывание: вы переносите уже сыгранные строки с тем цветом, каким вернулась каждая клетка, и получаете слова из пяти букв, которые всё ещё им соответствуют.