Немного о клавиатурных раскладках

Автор: Алексей Федорчук

Эта история началась с того, что я поменял клавиатуру — действие, которое я осуществляю только под непреодолимым гнётом обстоятельств. В данном случае гнёт этот выразился в том, что меня достала моя беспроводная клавиатура имени товарища Logitech’а.

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

  1. отсутствие светодиодных индикаторов;
  2. пропуск букв при очень быстром наборе;
  3. ограниченный ресурс мизинчиковых батареек — сколько их ни заначивай, но рано или поздно наступает момент, когда они садятся (как правило, среди ночи), и запас в холодильнике оказывается исчерпанным.

Разумеется, на такой случай имелась у меня и проводная клавиатура — но а) не очень удобная с точки зрения расположения клавиш, и б) несколько громоздкая.

В результате пошёл я в магазин и прикупил себе проводную (с USB-разъёмом) клавиатуру BTC 6100 — Ultra Slim Multimedia. Которая, кроме ультраплоскости, отличалась ещё и ультракомпактностью (за счёт отсутствия NumPad’а), коротким ходом клавиш, при отличной тактильности, наличием светодиодных индикаторов. Мультимединйными прибамбасами она была не очень отягощена: имелись Интернет-клавиши Назад, Вперёд, Домой, и клавиши регуляции звука:

btc.jpeg

Иными словами, всё близко к идеалу — за единственным исключением: на ней напрочь отсутствовала клавиша Левый бакслэш. Зачем он нужен — спросите вы меня? Ответить легко: дело в том, что уже много лет на нижний регистр этой клавиши при кириллической раскладке я вешаю запятую — ну сильно напрягает меня жать шифт для ввода этого, согласитесь, не редкого препинака. И вообще, более неудобного расположения знаков препинания при русской раскладке на современных клавиатурах трудно себе вообразить — разве что старая раскладка legacy превосходит её в этом отношении.

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

Но перво-наперво договоримся о терминах. В Windows под словом «раскладка» понимается сочетание языковой принадлежности и непосредственно системы расположения клавиш. Например, русская раскладка по умолчанию, русская фонетическая и русская (пишущая машинка) выступают как равноправные.

В Linux’е (точнее, в оконной системе X — о раскладках в консоли мы здесь говорить не будем) принята несколько иная номенклатура: понятие «раскладка» определяет страну и принятый в ней набор символов, тогда как собственно разновидности расположения клавиш именуются вариантами, вне зависимости от языка.

Для страны России и набора символов кириллицы в настоящее время сохраняют актуальность следующие варианты русской (ru) раскладки:

    1. typewriter — вариант раскладки стандартной советской пишущей машинки:

      typewriter.gif

      клавиатур, маркированных таким образом, я в заводском исполнении не видел, однако в UNIX-системах (FreeBSD и Linux) именно он был исторически первым;

    2. legacy — этот вариант получил широкое распространение во времена DOS, когда в соответствие с ним маркировались русифицированные фабричным способом клавиатуры; представляет собой инвертированный в отношении цифр и знаков препинания вариант пишущей машинки;
    3. winkeys — вариант, принятый в настоящее время в Windows, соответственно ему маркируются все современные русифицированные клавиатуры:

      winkeys.png

как и всё в Windows, создан (специально?) не похожим ни на один из предыдущих;

  1. phonetic — вариант, в котором русские буквы располагаются на месте похожих по звучанию латинских:

    fonetic.png

Эти варианты являются более или менее общепринятыми, и один из них обычно предлагается на выбор при установке большинства корректно русифицированных дистрибутивов Linux. Причём следует учесть, что предлагаемый по умолчанию вариант русской раскладки — это, как правило, legacy. Исключением, насколько мне известно, являются последние версии Ubuntu — в ней умолчальным вариантом выступает winkeys.

Существуют и менее известные варианты русской раскладки, штатно не включаемые в дистрибутивы (по крайней мере, мне об этом ничего неизвестно). Одна из них — так называемая типографская раскладка Ильи Бирмана, позволяющая непосредственно вводить с клавиатуры парные и «лапчатые» кавычки, короткие и длинные тире, и так далее. Изначально разработанная для Windows, она была адаптирована и для Иксов. С той же целью был разработан и вариант enhanced русской раскладки.

Все перечисленные варианты русской раскладки, кроме фонетического, в основе своей имеют базовую раскладку ЙЦУКЕН, созданную некогда для пишущих машинок по тем же принципам, что и изначальная раскладка QWERTY — изобретение Кристофера Шоулза, основоположника машинописи (ознакомиться с историей вопроса можно здесь). Ныне её рассматривают как анахронизм «механических» времён, и время от времени предпринимают попытки замены на что-нибудь более «эргономичное».

Для латиницы такая замена была предложена ещё в тридцатые годы Августом Двораком, профессором Вашингтонского университета. Будучи профессиональным психологом и педагогом, он подошёл к этому вопросу сугубо научно, с учётом частоты употребления букв, физиологии и психологии:

dv0rak.png

По свидетельству тех, кто его освоил, вариант раскладки Дворака действительно обеспечивает фантастическую скорость набора (повторяю, латиницы). Он принят в качестве стандарта ANSI, и поддерживается во всех UNIX-подобных операционных системах (и даже в Windows). Однако, согласно статистическим данным, его использует не более 2% пользователей. Главная причина чему — резкое отличие варианта Дворака от QWERTY, а ведь именно в этой раскладке набирает свои первые символы подавляющее большинство пользователей персоналок.

Попыткой преодолеть необходимость принципиального переучивания было создание варианта Colemak, разработанного (также для латиницы) Шаем Колманом совсем недавно, в 2006 году:

colemak.png

Утверждается, что он, благодаря некоторому сходству со стандартным QWERTY, допускает их попеременное использование, обеспечивая при этом много большую скорость набора по сравнению с последним (и несколько большую, нежели при использовании варианта Дворака). Однако сведений ни о поддержке этого варианта операционными системами, и сведений о его распространении у меня нет. Подозреваю, что популярность варианта Colemak ещё ниже, нежели варианта Дворака — хотя бы ввиду отсутствия традиции.

На Руси тоже предпринимались попытки создания «эргономичных» вариантов для русской раскладки — по крайней мере об одной такой, получившей имя DIKTOR, мне известно:

diktor.jpg

Этот вариант базируется на тех же принципах, что и вариант Дворака и, подобно последнему, согласно уверениям разработчиков, обеспечивает большую скорость набора и меньшую утомляемость. Однако и о её сколько нибудь широком использовании мне неизвестно. Более того, по моему мнению, шансов на таковое она имеет ещё меньше, нежели варианты Дворака или Колмана — вне зависимости от его достоинств, ибо все обучающие курсы набора в нашей стране базируются на использовании стандартной ЙЦУКЕН.

Так что, если не вдаваться в экстрим с полным переучиванием, фактически выбор вариантов раскладки в русскоязычном окружении сводится к четырём перечисленным ранее вариантам. При этом вариант phonetic отметаем с негодованием — предназначен в первую очередь для людей, русским языком не владеющих (хотя, подозреваю, таковые на форумах Рунета не так уж и редки).

С не меньшим негодованием следует отмести и вариант legacy — если, разумеется, у пользователя нет привычки к оному со времён «чёрного» DOS’а: никакими иными преимуществами оный не отмечен, а недостатков хоть отбавляй. Главные из них — несовпадение с фабричной маркировкой современных клавиатур и нахождение всех знаков препинания на верхнем регистре.

Так что фактически у нас простая альтернатива — winkeys или typewriter. В пользу первого говорит:

  1. совпадение раскладки с фабричной маркировкой клавиш;
  2. всеобщая распространённость (большинство недавних пользователей Windows об указанной альтернативе и не подозревают).

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

Но в конце 1980-х у нас появились персональные компьютеры иностранного производства. Клавиатур, учитывающих длину русского алфавита, никто в мире не производил и не собирается. Поэтому какому-то идиоту поручили (или он сам вызвался, не важно) русифицировать что есть. И этот идиот, будучи, видимо, программистом, совершил не просто идиотский поступок, а преступление: он поместил запятую в верхний регистр, потому что русский алфавит длинный, а клавиш на клавиатуре столько, сколько нужно для размещения латинского алфавита.

В цитате присутствуют некоторые фактические ошибки: как уже говорилось, на первых персоналках под DOS использовался вариант legacy (где все знаки препинания, без всякой дискриминации, были опущены в парашу — то есть подняты на верхний регистр), либо, всё-таки, вариант typewriter. Тем не менее с итоговым выводом Тёмы согласен: изобретатель winkeys-варианта русской раскладки был либо врагом-вредителем, либо инициативным идиотом (а инициативный идиот, как гласит киргизская народная мудрость, гораздо опаснее врага-вредителя).

Тем не менее, всё не так суицидально — по крайней мере в UNIX-подобных системах. Ибо там пользователь может без труда подогнать стандартный вариант раскладки под свои потребности — для чего ему нужны только текстовый редактор и знание того, какой именно файл отвечает за раскладку клавиатуры.

С файлом — всё просто: кириллическая раскладка клавиатуры в Иксах (повторяю, о консоли сейчас речь не идёт, это особая история) описана в файле /usr/share/X11/xkb/symbols/ru (реальное местоположение его может варьировать в зависимости от дистрибутива — но симлинк всегда будет по указанному пути). Так что следует его загрузить в текстовый редактор (с правами суперпользователя) и отредактировать должным образом (разумеется, копию оригинала надо предварительно сохранить — во избежание).

Как редактировать файл описания раскладки — становится ясным из его просмотра. В двух словах: главной частью его является секция common, описывающая основные алфавитные клавиши и общая для всех вариантов русской раскладки (кроме варианта phonetic — по понятным причинам его алфавитная часть выглядит совершенно иначе). Очевидно, что в базовой секции менять что-либо нецелесообразно, хотя и не запрещается.

Далее, каждому из прочих основных вариантов соответствует своя секция, в которой описываются его особенности, в частности, расположение знаков препинания и прочих специальных символов. И вот тут-то открывается простор для модификации: редко используемые символы, расположенные на удобных местах, можно заменить символами часто используемыми, например, той же пресловутой запятой.

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

Для этого всего-то и нужно было, что вписать в секцию xkb_symbols «winkeys» строку
key <LSGT> { [ comma, apostrophe ] };
В принципе, этой строкой можно подменить и оригинальные значения кода LSGT в секции common — тогда новые символы будут вводиться при всех вариантах раскладки.

При желании можно подменить значения и других редко используемых клавиш, таких, как заглавные Ё (насколько мне известно, она применяется только в случае русского идиоматического выражения) и Ъ (примеров использования которого на верхнем регистре я просто не знаю). Повесив на них такие символы, как тильда или одинарная кавычка, в русской раскладке отсутствующие как класс. В общем, простор для творчества ограничен только фантазией и реальными потребностями.

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

И потому более радикальный способ решения проблемы запятой (а также всех остальных «верхнерегистровых» знаков препинания — отказ от варианта winkeys вообще и переход на вариант typewriter. Что я и проделал после последней смены клавиатуры.

Это тоже имеет свои недостатки. Во-первых, как я уже говорил, маркированных соответствующим образом клавиатур, насколько мне известно, в природе не существует. Во-вторых, некоторое время на привыкание всё-таки потребуется.

Первая проблема временно, до выработки автоматизма, может быть решена посредством наклеек на клавиши — правда, давеча приобретая их, я с удивлением обнаружил, что они стоят примерно половину цены не вполне беспородной клавиатуры.

Вторая же задача решается ежедневной, ежечасной, ежеминутной тренировкой. У меня на это ушло около суток чистого времени — правда, в прошлой своей жизни я заканчивал курсы машинописи и более четверти века печатал на механических пишущих машинках. Тем не менее, овчинка в любом случае стоит выделки. И потому беру на себя смелость рекомендовать вариант typewriter всем, кому в большом количестве приходится набирать русские тексты.

Как изменить вариант раскладки? Традиционный способ, основанный на использовании файла конфигурации Иксов описан бессчётно и сводится к внесению в /etc/X11/xorg.conf строк вида:
Option "XkbLayout" "us,ru(typewriter)"
или
Option "XkbLayout" "us,ru"
Option "XkbVariant" "typewriter"

а также обеспечения переключения латницы на кириллицу посредством строки вроде
Option "XkbOptions" "grp:lwin_toggle,grp_led:scroll"
Каковая предусматривает переключение по левой win-клавише и указание текущей раскладки индикатором ScrollLock (разумеется, и то, и другое определяется сугубо индивидуальными предпочтениями).

В современных версиях Xorg использование файла его конфигурации требует ещё двух строк
Option "AutoAddDevices" "False"
Option "AllowEmptyInput" "False"

запрещающих автоматическое определение устройств ввода.

С другой стороны, ныне можно обходиться без файла /etc/X11/xorg.conf, настраивая раскладку, её вариант и переключатель через HAL, как это было подробно описано в соответствующей заметке, к коей и отсылаю за подробностями.

Надеюсь, что читатель, опробовавший вариант typewriter, быстро убедится в том, что для массового набора он куда более пригоден, нежели привычный winkeys. Осталось только убедить производителей клавиатур (или, скорее, их распространителей на Руси) выпускать их модели, фабрично маркированные в соответствие с вариантом typewriter. А в идеале, если уж помечтать, — то и специальные клавиатуры для юниксоидов. Специфика которых должна быть вовсе не в клавишах с изображением пингвина или деймона. Не секрет ведь, что при массовом наборе текстов большинство пользователей Unix-подобных систем для навигации по тексту пользуются не клавишами управления курсором, а привычными кейбиндингами — кто в стиле vi, кто — в стиле emacs. Так почему бы не выкинуть с клавиатур всякие стрелки, PgUp/PgDown, End/Home? Ведь это позволит создавать вполне компактные «доски» с клавишами нормального размера, что более чем востребовано для малогабаритных ноутбуков.

Право, это задача куда более благородная и практически значимая, нежели борьба с предустановленной Windows…

В настоящей заметке использованы иллюстрации из Википедии — Раскладка клавиатуры, QWERTY и Клавиатура Дворака, а также из статьи Новая усовершенствованная раскладка клавиатуры для кириллицы (DIKTOR).

Немного о клавиатурных раскладках: 12 комментариев

  1. Как-то даже попадалось интервью с этим нехорошим человеком, который создал winkeys-раскладку.
    Он утверждал, что сделал так, потому что, когда программируешь, точка встречается много часто запятой.
    Также видел феноменальный тред, где народ пытался выяснить — на чём, ля, он программирует, что запятая не встречается. Вроде ни к чему не пришли.

    P.S. Использую стандартную winkeys раскладку. Сильно от этого не страдаю. Привычка — вторая натура, фигли.

  2. Хотел бы дополнить про Dvorak и Colamak. Они хороши не для латиницы, а именно для английского языка, так как в этх раскладках напрочь отсутствуют символы диакритики. В этой связи появились различные French Dvorak, Spanish Dvorak и прочие, а раскладка Colеmak пока не обросла национальными вариантами в связи с её юным возрастом.

    Для латиницы использую во всех операционках US International, основанную на QWERTY. Для русского языка на Маке использую порезанную мной стандартную эппловскую раскладку, которая близка к «Машинописи», особенно после того, как к ней были приложены мои кривые ручки ;), а в Linux и Windows — собственно «Машинопись». Малость путаюсь и матерюсь, но нет времени сделать точно так, как на Маке.

  3. IMHO удобство этой самой нативной кусской раскалдки никак не перекрывает надобность переучиваться и распространенность winkeys. Пока последний везде и всюду, использование typewriter думаю принесет больше вреда, чем пользы.

    P.S. Ну теперь я хотя бы одного человека знаю, который левый / использует. Для меня так это абсолютно ненужная клавиша, из-за которой укоротили левый Shift…

  4. Про мультимедийную клавиатуру хорошо бы где-нибудь прочитать.
    А про «беспроводная клавиатура имени товарища Logitech’а» у меня такая же проблема с прпусками и другими фичами.

  5. Я печатаю слепым десятипальцевым методом, и на хождение то
    Интересно, а вас не напрягает каждый раз нажимать shift для того что бы ввесли заглавную букву?
    Заглавные БУКВЫ

  6. Интересно, а вас не напрягает каждый раз нажимать shift для того что бы ввесли заглавную букву?
    Заглавные БУКВЫ встречаются гораздо чаще запятых :)

    Похвастаюсь: Я печатаю слепым десятипальцевым методом уже лет пять. Не смог сразу вспомнить как я запятую нажимаю… Оказалось что shift левым мизинцем, а клавишу с запятой правым мизинцем.

    Сила привычки :)

  7. Чёртов слепой десятипальцевый метод :) — не заметил как нажал сначала tab а потом Enter :))))

  8. Очепятка:
    >> 3. winkeys — вариант, принятый в настоящее время в Windows, соответственно ему маркируются все современные русифицированные кл+
    >> 4.
    >> 5. авиатуры:

  9. Цитата: «Все перечисленные варианты русской раскладки, кроме фонетического, в основе своей имеют базовую раскладку ЙЦУКЕН, созданную некогда для пишущих машинок по тем же принципам, что и изначальная раскладка QWERTY — изобретение Кристофера Шоулза, основоположника машинописи (ознакомиться с историей вопроса можно здесь). Ныне её рассматривают как анахронизм “механических” времён, и время от времени предпринимают попытки замены на что-нибудь более “эргономичное”.

    Ответ на цитату:
    Хорошо,что появились сенсорные смартфоны. Благодаря этому появились и новые модели экранных клавиатур. Так вот, вместо ЙЦУКЕН|QWERTY на смартфонах я всё чаще вижу экранную клавиатуру «Вертикаль» и «Ладонник». А Вертикаль-клавиатура претендует уже и на настольную, правда, пока сенсорную.
    Если есть желание- посмотрите: http://www.okeyboards.com

  10. Да, но впечатление такое, что автор не застал целую эпоху
    наиболее удобной для русскоязычных пользователей фонетической
    раскладки ЙЦУКЕН-JCUKEN. Именно такую раскладку имели все
    консоли всех вычислительных машин, выпускавшихся в СССР.
    Это же относится к клавиатуре двухрегистровых (рус/лат)
    телеграфных аппаратов, телетайпов и прочего подобного
    оборудования.

    Освоив десятипальцевый метод на этой клавиатуре на раскладке
    ЙЦУКЕН, соответствующей всей истории машинописи в России,
    СССР и РФ, можно было спокойно включать латинский регистр и
    там, где вы имели русское Р, находилась латинская R и так
    далее по фонетическому принципу.

    И дело-то не в запятой, о которой так эмоционально пишет
    Лебедев, а в том, что целому поколению людей, связанных
    с вводом на отечественных клавиатурах букв латинского
    алфавита, пришлось ломать свои устоявшиеся навыки, осваивая
    раскладку QWERTY.

    И до сих пор, освоив ЙЦУКЕН, вы резко теряете скорость
    ввода, перейдя на латинский регистр в раскладке QWERTY.

    Вот такая тут «запятая», а совсем не та, о которой пишет
    Лебедев, клавиатура которого, поддерживающая любые
    раскладки за счёт OLED дисплеев на каждой клавише, стоит
    сейчас 60 тысяч рублей, ага, как два приличных ноутбука
    с раскладкой QWERTY-ЙЦУКЕН.

Обсуждение закрыто.