Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

Типографская раскладка для 60-процентной клавиатуры. Эксперимент, часть 2

Всем привет! Продолжим разговор о клавиатуре. Обычную часть раскладки я описывал в предыдущей статье. А сейчас расскажу о возможностях, которые превращают раскладку в типографскую: пробелы, тире, дефисы, кавычки, апострофы, диакритические знаки.

Разумеется, прежде чем делать свою раскладку, я изучил уже имеющиеся варианты подобных раскладок. А также прошёлся по национальным раскладкам европейских языков. И не только по раскладкам, но и по самим языкам, чтобы знать, какие у них есть диакритические знаки и нестандартные буквы. Какие применяются кавычки, тире и апострофы. В общем, потратил на исследования уйму времени.

Пришлось также основательно прошерстить таблицу символов Unicode и прочитать текстовую часть стандарта.

Дело осложнялось тем, что клавиатура мне нужна была не только для набора текстов, но и для программирования, и для работы в программах, требующих использования горячих клавиш.

Поэтому требования получились противоречивые. Одна и та же кнопка должна уметь:

  • выдавать разные символы, в зависимости от текущей языковой раскладки,
  • выдавать один и тот же символ (чаще всего, не соответствующий клавише) независимо от раскладки,
  • выдавать правильные сочетания (соответствующие клавише) с Alt, Ctrl, Shift, Win.

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

Так что пришлось много пробовать и неоднократно переделывать. Некоторые символы умудрились побывать на всех слоях, пока нашли своё место.

Итак, поехали...

Пробелы

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

Чтобы проще было в них разобраться, я сделал табличку (красным цветом — неразрывные варианты).

Примечание. Шпация — типографский пробельный материал. Его максимальная ширина равна высоте кегля. Это т. н. кегельная или круглая шпация. Относительно неё измеряют ширину шпаций меньшего размера. Круглая также называется «Em space», полукруглая «En space». Хотя ширина букв «M» и «N» обычно немного меньше.

Название в Unicode [ширина в шпациях]

Код

Комбинация клавиш

(используются левые Alt/Ctrl/Shift/Win)

Парные пробелы (обычный и неразрывный такой же ширины)

Пробел / Space [1/5-1/2 (типично 1/4-1/3)]

U+0020

Space

Неразрывный пробел / No-Break Space

U+00A0

Alt+Space

Тонкий пробел / Thin space [1/5 (реже 1/6)]

U+2009

Shift+Space

Узкий неразрывный пробел / Narrow No-Break Space

U+202F

Alt+Shift+Space

Пробел нулевой ширины / Zero Width Space

U+200B

Ctrl+Space

Соединитель слов / Word Joiner

U+2060

Alt+Ctrl+Space

Непарный пробел

Самый тонкий пробел / Hair Space [1/10-1/16]

U+200A

Shift+Ctrl+Space

Специальные виды пробелов

Пробел, равный по ширине цифрам / Figure Space

U+2007

Alt+Win+Space

Пунктуационный пробел / Punctuation Space

U+2008

Ctrl+Win+Space

Средний математический пробел / Medium Mathematical Space

U+205F

Shift+Win+Space

Иконка, символизирующая пробел / Open Box /␣

U+2423

Alt+Ctrl+Win+Space

Выглядит таблица страшновато, но основные комбинации запомнить несложно: Alt — неразрывный, Shift — тонкий, Сtrl — нулевой ширины. Shift+Ctrl — промежуточный между тонким и нулевым. Сперва нажимаются модификаторы, затем — пробел.

Возможно, такой вариант будет понятней:

Модификаторы

Ничего

Shift (тонкий)

Ctrl (нулевой)

Ничего

Space

Thin space

Zero Width Space

Alt (неразрывный)

No-Break Space

Narrow No-break Space

Word Joiner

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

Вот краткая версия:

  • неразрывный — после предлогов и союзов; после частицы «не»; перед частицами «бы», «ли», «же»; между числами и единицами измерений (16 кг); после географических сокращений (г. Киев, р. Днепр)
  • тонкий — после тире
  • узкий неразрывный — в инициалах (C. П. Королёв); внутри сокращений (т. д.); перед тире; разделитель разрядов (12 564 456 байт)
  • нулевой ширины — показывает места, в которых можно разрывать строку, не добавляя знак переноса (например, вот здесь он стоит после слешей: Alt/Ctrl/Shift/Win); для предотвращения автоматической замены комбинаций символов ( :) не будет преобразован в 🙂, если вставить этот пробел между символами ); для предотвращения автосоздания ссылок и ников (http​:​//​google​.​com и google.com)
  • соединитель слов — нулевой ширины, запрещает разрыв строки в этом месте
  • самый тонкий — тонкая подгонка для лучшего отображения текста
  • цифровой пробел — при наборе таблиц из цифр (по ширине равен цифре)
  • пунктуационный — в таблицах для разделения разрядов (по ширине как точка)
  • математический — в формулах: ( α + β )

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

CapsLock+1 — Em Space (равен ширине шпации, «круглая шпация»)
CapsLock+2 — En Space (½ шпации, «полукруглая шпация»)
CapsLock+3 — Three-Per-Em Space (⅓ шпации, «третная»)
CapsLock+4 — Four-Per-Em Space (¼ шпации, «четвертная»)
CapsLock+6 — Six-Per-Em Space (⅙ шпации, «шестерная»)

Дефис, минус, тире

С дефисом та же проблема, что и с пробелом: на клавиатуре есть только одна кнопка с подходящим символом (горизонтальной чёрточкой в середине строки). Поэтому её используют в качестве дефиса, минуса и тире (в юникоде он прямо так и называется: «дефис-минус»).

К этому все уже давно привыкли, да и вариантов не было — в ASCII нет отдельного символа для тире. Зато в Unicode он есть! И даже не один.

Название в Unicode

Код

Комбинация клавиш

Дефис-минус / Hyphen-Minus

U+002D

— или CapsLock+p или

p в режиме NumLock On

Длинное тире / Em Dash

U+2014

Space+g

Среднее тире / En Dash

U+2013

Space+y

Two-Em Dash / Двойное тире

U+2E3A

Space+Alt+y

Three-Em Dash / Тройное тире

U+2E3B

Space+Ctrl+y

Неразрывный дефис / Non-Breaking Hyphen

U+2011

Space+t

Нижнее подчёркивание / Low line

U+005F

_ (Shift+-) или Space+e

Цифровое тире / Figure dash

U+2012

Space+Alt+r

Мягкий перенос / Soft Hyphen

U+00AD

Space+Alt+t

Horizontal Bar / Горизонтальная линия

U+2015

Space+Shift+y

Дефис / Hyphen

U+2010

никто (?) его не использует

Дефис маркер списка / Hyphen Bullet

U+2043

Space+Ctrl+b

Минус / Minus Sign

U+2212

RWin+c

Если хотите разобраться, зачем оно всё надо — вот несколько ссылок для чтения:

А вот то же самое вкратце:

  • длинное тире — тире в украинском/русском языках
  • среднее тире — в английском (и в укр/рус для диапазонов 1939 —1945)
  • двойное тире — заменяет отсутствующую часть слова или всё слово (Mr. J⸺n)
  • тройное тире — в списках книг заменяет полностью имя автора (т. е. означает «тот же автор»)
  • неразрывный дефис — чтобы не разрывались сочетания «как‑то», «во‑первых» и т. п.
  • горизонтальная линия — перед началом прямой речи в английском языке
  • нижнее подчёркивание — это обычное подчёркивание (зачем там слово «нижнее»?)
  • цифровое тире — употребляется с цифрами (например, в номерах телефонов: 123‒45‒67)
  • мягкий перенос — вставляют в длинные слова в тех местах, где можно делать перенос; такой знак переноса будет отображаться только если слово находится в конце строки и не вмещается в неё. Это похоже на пробел нулевой ширины, только с пробелом при разрыве слова не отображается знак переноса. К сожалению, мягкий перенос не все программы правильно понимают. Иногда он обрабатывается как обычный дефис, и тогда слово выглядит вот так: «пе‑ре‑нос»
  • дефис маркер списка

Несколько слов о минусе. Он специально сделан так, чтобы соответствовать по стилю остальным знакам арифметических операций. Смотрите, как это выглядит:

Здесь идут по порядку: дефис-минус, среднее тире, длинное тире, цифровое тире, а после знака равно — минус. Заметьте, что у знаков ’равно’, ’минус’, ’плюс’ и ’деление’ одинаковая ширина.

Теперь о длинном тире. По правилам нашей типографики он отбивается от текста тонкими шпациями. Поэтому у меня при нажатии тире вводятся сразу три символа: узкий неразрывный пробел, длинное тире, тонкий пробел. Если вы хотите, чтобы вводился один только пробел — это можно настроить (переменная EmDashWithSpace в скрипте или комбинация CapsLock+Alt+y для оперативного переключения).

Кавычки

Вариантов кавычек очень много. Нет смысла перечислять их все.

С практической точки зрения достаточно иметь английский, немецкий и французский варианты.

В украинском, испанском, португальском и итальянском языках используется комбинация французских и английских кавычек. В русском — французских и немецких.

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

Название в Unicode

Код

Вид

Комбинация клавиш

Открывающая левая кавычка «ёлочка» / Left Pointing Double Angle Quotation Mark

U+00AB

«

Space+Shift+a

Закрывающая правая кавычка «ёлочка» / Right Pointing Double Angle Quotation Mark

U+00BB

»

Space+Shift+s

Одинарная открывающая (левая) французская угловая кавычка / Single Left-Pointing Angle Quotation Mark

U+2039

Space+Shift+q

Одинарная закрывающая (правая) французская угловая кавычка / Single Right-Pointing Angle Quotation Mark

U+203A

Space+Shift+w

Нижняя одинарная открывающая кавычка / Single Low-9 Quotation Mark

U+201A

Space+Shift+e

Открывающая одинарная кавычка / Left Single Quotation Mark

U+2018

Space+Shift+r

Закрывающая одинарная кавычка / Right Single Quotation Mark

U+2019

Space+Shift+t

Закрывающая двойная кавычка / Left Double Quotation Mark

U+201C

"

Space+Shift+f

Правая двойная кавычка / Right Double Quotation Mark

U+201D

"

Space+Shift+g

Нижняя двойная открывающая кавычка / Double Low-9 Quotation Mark

U+201E

"

Space+Shift+d

Апостроф (одинарная кавычка) / Apostrophe

U+0027

Двойная кавычка (универсальная) / Quotation Mark

U+0022

"

"

Нагляднее будет показать расположение прямо на клавиатуре. Вот все кавычки вместе:

А вот с раскладкой по языкам. Зелёным цветом отмечены наружные кавычки (первичные, primary), голубым —  внутренние (вторичные, secondary).

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

Апостроф и прочие чёрточки

В юникоде есть несколько вариантов апострофа.

Самый употребляемый — «Apostrophe» (U+0027), который находится рядом с Enter. Его часто называют «одинарная кавычка». Или машинописный апостроф, ASCII апостроф, прямой апостроф. А также «programmer’s apostrophe», т.к. он используется в языках программирования.

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

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

В общем, упомянутые выше символы следует использовать только при программировании. А в обычных текстах применять более подходящие варианты.

Для основных языков таких вариантов два:

  • апостроф как знак препинания (т.е. разделяет слово на части — don’t, she’s)
  • апостроф как буква (является частью слова и не разделяет его на части — об’єм, в’їзд, п’ять)

В первом случае нужно использовать символ «Right Single Quotation Mark» (U+2019), во втором — «Modifier Letter Apostrophe» (U+02BC).

Да, символ 2019 — это не только правая кавычка в английском, но и апостроф во всех (?) рассматриваемых здесь языках.

Для многих будет неожиданностью, что апостроф может служить в качестве буквы. А т. к. U+02BC считается буквой, его можно употреблять в названиях доменов на украинском языке (в отличие от U+2019).

Символ U+02BC называется также «типографский прямой апостроф». Что наводит на мысль о существовании апострофа «непрямого». И такой действительно есть: типографский перевёрнутый апостроф (U+02BB). Он используется, например, в узбекском языке.

Машинописный апостроф заменял также символ «штрих». Этот символ применяется в математике для обозначения производных, для обозначения угловых минут и для обозначения единицы длины «фут». На английском этот символ называется «Prime» и имеет код 2032. Есть также «Double prime» (U+2033) — двойная производная, угловые секунды и дюймы. Тройной штрих используется гораздо реже, а четверной мне вообще никогда не попадался.

Ещё одна широко известная чёрточка — знак ударéния. Его я опишу в следующем разделе.

Название в Unicode

Код

Вид

Комбинация клавиш

Апостроф (одинарная кавычка) / Apostrophe

U+0027

Двойная кавычка (универсальная) / Quotation Mark

U+0022

"

" (Shift+’)

Апостроф / Grave Accent

U+0060

`

`

Закрывающая одинарная кавычка / Right Single Quotation Mark

U+2019

Space+Shift+t

Модификатор буквы апостроф / Modifier Letter Apostrophe

U+02BC

ʼ

Space+`

Модификатор буквы перевернутая запятая / Modifier Letter Turned Comma

U+02BB

ʻ

Space+Shift+`

Штрих / Prime

U+2032

Space+Alt+x

Двойной штрих / Double Prime

U+2033

"

Space+Alt+c

Тройной штрих / Triple Prime

U+2034

Space+Alt+v

Знак повтора / Ditto mark

U+3003

Space+Alt+d

Знак повтора применяется в перечислениях, где много незначительно отличающихся строк. Т. е. по назначению он напоминает тройное тире. Например:

В русском языке знак повтора обычно обрамляется по сторонам горизонтальными линиями: «⸺‍⁠〃⁠⸺». У меня это поведение по умолчанию. Но в скрипте можно изменить настройку, чтобы выводился только знак повтора. Можно также переключать это поведение по нажатию CapsLock+Ctrl+y.

На практике люди часто «не заморачиваются», и ставят вместо Ditto mark всё, что хоть как-то на него похоже: два апострофа подряд (‘‘ — U+0027), универсальную двойную кавычку (" — U+0022), закрывающую двойную кавычку (" — U+201D). В некоторых языках вместо ditto mark используют ”»” или ”„”.

Диакритические знаки

В украинском и русском языках букв с диакритическими знаками немного: «й», «і», «ї», «ё». Что позволяет без проблем выделить им отдельные клавиши. Но если посмотреть список латинских букв с диакритикой, можно увидеть, что там полторы сотни строк для одной только буквы «A»! Это больше, чем кнопок на клавиатуре.

Неудивительно, что давно придуман обходной вариант: буквы и диакритические знаки вводятся отдельно и комбинируются программным способом. Для этого часто применяется «механизм мёртвых клавиш». Его смысл состоит в том, что перед вводом нужного символа нажимается так называемая «мёртвая клавиша», которая сама по себе не отображает на экране никакого знака, а только модифицирует последующий символ.

В UNIX-подобных системах для реализации такого поведения используется клавиша Compose. Работает это следующим образом: нажимаем Compose, затем клавишу, отвечающую, например, за акут (на экране при этом ничего не отображается), затем букву А — появляется Á. Или Compose, затем клавишу, на которую назначен диерезис, затем О — получаем Ö.

В Windows такого нет, поэтому приходится эмулировать. По умолчанию в качестве клавиши Compose я использую клавишу «Menu» (между правыми Win и Ctrl). Но это можно перенастроить (см. главу «Настройка под себя» в конце следующей статьи).

Есть и другой способ ввода — когда диакритические знаки вводятся после нужного символа. У меня это тоже поддерживается (см. ниже).

Диакритические знаки в юникоде имеются в трёх вариантах: комбинируемые с другими символами, обычные некомбинируемые (знаки пунктуации) и некомбинируемые, считающиеся буквами (modifier letter).

Мне нужны (и далее описываются) только комбинируемые с буквами знаки. Так что перед их названиями в таблице мысленно добавьте «Combining» — для краткости я это слово пропустил.

Указанная в таблице клавиша — это клавиша, которая нажимается после Compose и перед символом, к которому будет применён диакритический знак.

Пример

Код

Кла- ви​ша

Название Unicode / прочие названия

Примеры языков / описание

à, è, s̀, z̀

0300

`

Grave Accent / Гравис (тяжёлое ударение)

голландский, норвежский, шведский

á, é, ć, ń

0301

Acute Accent / Акут (лёгкое ударение)

чешский, португальский, словацкий

â, ê, î, ô

0302

6

Circumflex Accent / Циркумфлекс (облегчённое ударение)

турецкий, румынский, валлийский

ã, ẽ, ñ, õ

0303

~

Tilde / Тильда

эстонский, португальский, баскский

ā, ē, ī, ō

0304

-

Macron / Макрон

латвийский, литовский

ă, ĕ, ĭ, ŏ

0306

u

Breve / Бреве (бревис, кратка)

румынский, турецкий

ḃ, ċ, ġ, ż

0307

.

Dot Above / Надстрочная точка

литовский, польский, турецкий

ä, ï, ö, ü

0308

:

Diaeresis / Надстрочное двоеточие (умляут, диэрезис)

немецкий, финский, албанский

å, e̊, g̊, q̊

030A

o

Ring Above / Надстрочный кружок

чешский, норвежский, датский

ő, ű, Ő, Ű

030B

"

Double Acute Accent / Двойной акут (венгерский умляут)

венгерский

Ď, Ť, č, ž

030С

v

Caron / Карон (птичка над буквой), гачек, háček

сербский, хорватский, боснийский

ď, ť, ľ, Ľ

0315

V

Comma Above Right / Запятая сверху справа, кличка, малый гачек

чешский, словацкий

ņ , ŗ , ş , ţ

0326

,

Comma Below / Подстрочная запятая

латвийский, румынский

ç , ȩ ,m̧ , ş

0327

c

Cedilla / Cедиль

албанский, каталонский, крымскотатарский

ą , ę , į , ų

0328

;

Ogonek / Огонэк (c-образный хвостик)

польский, литовский

ạ, ṛ, ṭ, Ḷ

0323

Shift + .

Combining Dot Below / Комбинируемая подстрочная точка

сицилийский, астурийский

Ơ, ơ, Ư

031B

h

Combining Horn / Комбинируемый рожок (quốc ngữ)

вьетнамский, джарайский

Ả, ẻ, Ỏ, ỷ

0309

H

Combining Hook Above / Комбинируемый хвостик сверху (dấu hỏi)

вьетнамский

Ŋ, ŋ

0321

j

Combining Palatalized Hook Below / Комбинируемый подстрочный палатальный (нёбный) крючок

саамские языки

ΐ, ΰ

0344

W

Combining Greek Dialytika Tonos / Комбинируемая греческая dialytika (растворяющая) тона

греческий

Диакритические знаки, которые не всегда комбинируются правильно

đ, ħ, Ð, ƀ

0335

=

Short Stroke Overlay / Короткое горизонтальное перечёркивание

хорватский, джарайский, саамские

Ħ

0336

Shift + =

Long Stroke Overlay / Длинное горизонтальное перечёркивание

мальтийский

Ł, ł , ð

0337

/

Short Solidus Overlay / Короткое диагональное перечёркивание

польский, фарерский

Ø, ø

0338

Shift + /

Long Solidus Overlay / Длинное диагональное перечёркивание

норвежский, датский

Прочее

o̅e̅a̅

0305

Alt+-

Combining Overline / Комбинируемое надчёркивание

черта над знаком на всю ширину символа

o̲e̲a̲

0332

Ctrl+-

Combining Low Line / Комбинируемая низкая линия

черта под знаком на всю ширину символа

o̿e̿a̿

033F

Alt+=

Combining Double Overline / Комбинируемое двойное надчёркивание

o̳e̳a̳

0333

Ctrl+=

Combining Double Low Line / Комбинируемая двойная низкая линия

a̱, e̱, i̱, o̱

0331

Shift+-

Combining Macron Below / Комбинируемое подчёркивание

\

Ввод редких букв

описано в следующей главе

🇺🇦, 🇵🇱

r

Ввод «Regional Indicator Symbol Letter»

см. «Варианты начертания» в следующей статье

🅢 𝔇 🄼

m

Математические буквы и цифры / варианты начертания

―〃―

❤ ⚪ 🟦

g Alt+g Shift+g

Ctrl+g

Геометрические фигуры (цветные сердечки, кружочки, квадраты)

см. «Дингбаты, эмодзи» в следующей статье

Примечание. Символ U+0315 используется вместо обычного гачека U+030C только с указанными 4-мя буквами (они высокие, обычный гачек с ними плохо комбинируется). U+0315 не считается отдельным знаком. При вводе букв с гачеком в зависимости от буквы автоматически подставляется U+0315 или U+030С.

Расположение диакритических знаков на клавиатуре:

В нижней части таблицы есть несколько диакритических знаков, которые не всегда комбинируются с буквами правильно. С другими знаками тоже иногда бывают проблемы, но с этими просто беда.

Пример:

Не вдаваясь в подробности, это происходит потому, что в шрифтах не указаны привязки оверлейной диакритики к буквам. Разработчиков шрифтов можно понять: какое-нибудь косое перечёркивание применяется только с буквой О, и она уже есть в шрифте готовая. Зачем напрягаться и прописывать привязки?

Бывает, что и в других местах не напрягаются:

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

Понятно, что готовые символы есть не для всех комбинаций и не во всех шрифтах. Но для большинства распространённых сочетаний такое работает.

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

Такая необходимость может возникнуть, если вам нужно вводить русские символы с диакритическими знаками (например, показывать знак ударения над буквами).

Дело в том, что клавиатура отсылает не символы, а скан‑коды. И готовый символ с диакритикой ищется по скан-коду. Независимо от того, какая в данный момент включена раскладка клавиатуры. То есть, при работающем режиме подстановки и включенной русской раскладке вместо ожидаемого «у́» вы получите «é». Правда, иногда оно сработает как надо, например, «а́» (т. к. в массиве нет замены для комбинации " ́ " и «f»). Но я бы на это не рассчитывал.

Кстати, видите знак " ́ " в предыдущем абзаце? Если вам нужен отдельный диакритический знак (не над буквой), его можно получить, просто скомбинировав с пробелом.

Следующий момент. Существуют символы с несколькими диакритическими знаками. Чтобы их можно было вводить, предусмотрен режим «Диакритические знаки после символов».

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

Также, в этом режиме можно вытворять странное. Помните примечание под таблицей, что кличка автоматически подставляется вместо гачека с 4-мя высокими буквами? А что, если нам всё-таки нужно показать с этими буквами именно гачек?

Это можно сделать, вставив между буквой и диакритическим знаком такую штуку, как «Combining grapheme joiner» (CGJ, U+034F, комбинация Compose → Shift+Backspace). В этом случае гачек не будет автоматически заменён на кличку. Смотрите:

Заодно здесь видно, почему с этими буквами используется именно кличка, а не гачек — оно действительно выглядит ужасно.

Существует ещё один символ, который предназначен для борьбы с самоуправством программ автоматической обработки текста — «Zero-Width Non-Joiner» (ZWNJ, U+200C, Compose →Ctrl+Backspace). В основном он используется в языках, не основанных на латинице — персидский, бенгальский, непальский. Но и в латинице его иногда применяют, если нежелательна склейка букв в лигатуру. Чтобы стало понятней, приведу искусственный пример на русском. Например, вводим слово «металлоемкий», а редактор преобразовывает это в «металлœмкий». Что неправильно, т.к. в один символ объединились буквы из двух частей составного слова. Теперь тут даже перенос не поставишь. Вот в этом случае и пригодится ZWNJ.

В главе про эмодзи (следующая статья) будет описан ещё один «родственник» этих невидимых символов — «Zero Width Joiner».

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

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

Язык

Страны

Дополнительные символы

Азербайджанский

Азербайджан

Ç ç, Ə ə, Ğ ğ, I ı, İ i, Ö ö, Ş ş, Ü ü

Албанский

Албания

Ç ç, Dh dh, Ë ë, Gj gj, Ll ll, Nj nj, Rr rr, Sh sh, Th th, Xh xh, Zh zh

Английский

Великобритания, Ирландия, Мальта

в заимствованных словах

Астурийский

Испания

Ḷḷ ḷḷ

Баскский

Испания

dd, ll, ñ, rr, ts, tt, tx, tz

Боснийский (латин)

Босния и Герцеговина

Đ đ, Ž ž, Lj lj, Nj nj, Ć ć, Č č, Dž dž, Š š

Бретонский

Франция

â, ê, î, ô, û, ù, ü, ñ

Валлийский

Великобритания

Ch ch, Dd dd, Ff ff, Ng ng, Ll ll, Ph ph, Rh rh, Th th гласные с акутом, грависом, циркумфлексом, диерезисом

Венгерский

Венгрия

Á á, Cs cs, Dz dz, Dzs dzs, É é, Gy gy, Í í, Ly ly, Ny ny, Ó ó, Ö ö, Ő ő, Sz sz, Ty ty, Ú ú, Ü ü, Ű ű, Zs zs

Вьетнамский

Вьетнам, Камбоджа, Лаос, Таиланд

Ă ă, — â, Đ đ, Ê ê, Ô ô, Ơ ơ, Ư ư

Гагаузский

Молдова, Украина

Ä ä, Ç ç, Ê ê, I ı, İ i, Ö ö, Ş ş, Ţ ţ, Ü ü

Галисийский

Испания

ch, gu, ll, ñ, nh, rr, ü

Датский

Дания, Фареры, Гренландия, Исландия

Æ æ, Ø ø, Å å

Джарайский

Вьетнам, Камбоджа

Ă ă, — â, Ƀ ƀ, Č č, Đ đ, Ĕ ĕ, Ê ê, Ê̆ ê̆, Ĭ ĭ, Dj dj, Ñ ñ, Ng ng, Ŏ ŏ, Ô ô, Ô̆ ô̆, Ơ ơ, Ơ̆ ơ̆, Ŭ ŭ, Ư ư, Ư̆ ư̆

Зулусский

ЮАР

лишних букв и знаков нет

Индонезийский

Индонезия

лишних букв и знаков нет

Исландский

Исландия

Á á, Ð ð, É é, Í í, Ó ó, Ú ú, Ý ý, Þ þ, Æ æ, Ö ö

Итальянский

Италия, Швейцария, Сан-Марино, Ватикан

à, è, é, ì, í, î, ò, ó, ù, ú

Ирландский

Ирландия, Великобритания

гласные могут быть с акутом

Испанский (кастильский)

Испания, Андорра

Ñ ñ, Ch ch, Ll ll, Qu qu, Gu gu, rr, Á á, É é, Í í, Ó ó, Ú ú, Ý ý, Üü

Казахский (латин)

Казахстан

Á á, Ǵ ǵ, I ı, Ń ń, Ó ó, Ú ú, Ý ý, Sh sh, Ch ch

Карельский

Финляндия, Россия

Č č, Š š, Ž ž, Ä ä, Ö ö

Каталанский

Испания, Андорра

à, ç, dj, é, è, gu, ig, í, ï, ll, ŀl, ny, ó, ò, qu, rr, ss, tg, tj, tx, ú, ü, ix

Крымскотатарский

Украина

Ç ç, Ğ ğ, I I, İ I, Ñ ñ, Ö ö, Ş ş, Ü ü

Латинский

Ватикан

лишних букв нет

Латышский

Латвия

Ā ā, Č č, Ē ē, Ģ ģ, Ī ī, Ķ ķ, Ļ ļ, Ņ ņ, Š š, Ū ū, Ž ž

Литовский

Литва

Ą ą, Č č, Ę ę Ė ė, Į į, Š š, Ų ų, Ū ū, Ž ž

Люксембургский

Люксембург

é, ä, ë

Мальтийский

Мальта

Ċ ċ, Ġ ġ, GĦ għ, Ħ ħ, IE ie, Ż ż

Немецкий

Австрия, Бельгия, Германия, Лихтенштейн, Люксембург, Швейцария

Ä ä, Ö ö, ẞ ß, Ü ü

Нидерландский

Нидерланды, Бельгия

IJ ij, диерезис и акут

Норвежский

Норвегия

Æ æ, Ø ø, Å å

Окситанский

Франция, Испания

Á á, À à, Ç ç, È è, É é, Í í, Ï ï, Ó ó, Ò ò, Ú ú, Ü ü, n⸱h, s⸱h

Польский

Польша

Ą ą, Ć ć, Ę ę, Ł ł, Ń ń, Ó ó, Ś ś, Ź ź, Ż ż, Ch, Cz, Dz, Dź, Dż, Rz, Sz, Szcz, Ść, Śc, Źdź, Źdz, Żdż, Ƶ ƶ

Португальский

Португалия

Á á, — â, àã, À à, Ç ç, É é, Ê ê, Í í, Ó ó, Ô ô, Õ õ, Ú ú

Романшский

Швейцария 0,6% населения

tg

Румынский

Румыния

Ă ă, — â, Πî, Ș ș, Ț ț

Саамские языки

Норвегия, Швеция, Финляндия

Á á, — â, Ä ä, Å å, Æ æ, Č č, Đ đ, Ǧ ǧ, Ǥ ǥ, Ï ï, Ǩ ǩ, Ŋ ŋ, Ö ö, Õ õ, Ø ø, Š š, Ŧ ŧ, Ü ü, Ž ž, Ʒ ʒ, Ǯ ǯ

Сербский (латин)

Сербия, Босния и Герцеговина

Ć ć, Č č, Đ đ, Dž dž, Lj lj, Nj nj, Š š, Ž ž

Силезский

Польша, Чехия

àã, Ć ć, Ł ł, Ń ń, Ŏ ŏ, Ō ō, Ô ô, Õ õ, Ś ś, Ź ź, Ż ż

Сицилийский

Италия

À à, — â, Ç, ç, Ḍ ḍ, È è, Ê ê, Ë ë, Ġ ġ, ḥ, Ì ì, Í í, Πî, Ï ï, Ṅ ṅ, Ò ò, Ô ô, ṛ, Š š, ṭ, Ù ù, Ú ú, Û û, Ż ż

Словацкий

Словакия

Á á, Ä ä, Č č, Ď ď, Dz dz, Dž dž, É é, Ch ch, Í í, Ĺ ĺ, Ľ ľ, Ň ň, Ó ó, Ô ô, Ŕ ŕ, Š š, Ť ť, Ú ú, Ý ý, Ž ž

Словенский

Словения

Č č, Dž dž, Lj lj, Nj nj, Š š, Ž ž

Татарский (латин)

Татарстан

Ä ä, Ç ç, Ğ ğ, I ı, İ I, Ñ ñ, Ö ö, Ş ş, Ü ü

Турецкий

Турция, Кипр

Ç ç, Ğ ğ, I I, İ I, Ö ö, Ş ş, Ü ü, — â, Πî, Û û

Туркменский

Туркмения

Ç ç, Ä ä, Ž ž, Ň ň, Ö ö, Ş ş, Ü ü, Ý ý

Узбекский (латин)

Узбекистан

Oʻ oʻ, Gʻ gʻ, Sh sh, Ch ch, Ng ng

Фарерский

Фареры

Á á, Ð ð, Í í, Ó ó, Ú ú, Ý ý, Æ æ, Ø ø

Финский

Финляндия

Å å, Ä ä, Ö ö, Š š, Ž ž

Фризский

Нидерланды

— â, Ê ê, É é, Ô ô, Û û, Ú ú, IJ, CH, NG, SJ, ZJ

Хорватский

Хорватия, Босния и Герцеговина

Č č, Ć ć, Dž dž, Đ đ, Lj lj, Nj nj, Š š, Ž ž

Черногорский (латин)

Черногория

Č č, Ć ć, Dž dž, Ð đ, Lj lj, Nj nj, Š š, Ś ś, Ž ž, Ź ź

Чешский

Чехия

Á á, Č č, Ď ď, Dz dz, Dž dž, É é, Ě ě, Ch ch, Í í, Ň ň, Ó ó, Ř ř, Š š, Ť ť, Ú ú, Ů ů, Ý ý, Ž ž

Шотландский

Великобритания

сh, bh, fh, гласные с грависом

Эсперанто

международный

Ĉ ĉ, ͏Ĝ ĝ, Ĥ ĥ, Ĵ ĵ, Ŝ ŝ, Ŭ ŭ

Эстонский

Эстония

Š š, Ž ž, Õ õ, Ä ä, Ö ö, Ü ü

Разумеется, я не знаю все эти полсотни языков, так что в таблице могут быть неточности. И ведь это ещё не все языки! Сюда можно смело вписывать африкаанс, суахили, тсвана, руанда, сесото и множество других языков, основанных на латинице. Я просто не стал лезть в эти африканские дебри.

Некоторые указанные в таблице языки имеют как латинский, так и кириллический варианты алфавита (помечены как «латин»).

Обратите внимание на буквы Đ/đ и Ð/ð. Первая используется в сербохорватском и саамских языках, вторая — в фарерском. Хотя заглавные буквы выглядят одинаково, у них разные коды. Вводятся они тоже по-разному: первая через Short Stroke Overlay (клавиша «=»), вторая — через Short Solidus Overlay (клавиша «/»).

Диграфы, лигатуры и редкие буквы

Вы, вероятно, привыкли, что в каждой клетке кроссворда пишется только одна буква. А что вы скажете, если увидите там «Dž»?

Надеюсь, вы скажете, что это диграф. Т. е. составной письменный знак из двух частей. В русском языке такой тоже есть —  буква «Ы».

На самом деле, диграфы редко считаются отдельными буквами. Чаще это просто устойчивое сочетание букв для обозначения каких-то звуков.

Особенность диграфов — они не разрываются при переносе на другую строку; если имя начинается с диграфа, в инициалы попадают оба символа; если предложение начинается с диграфа, в верхнем регистре пишутся обе буквы. Впрочем, это не универсальные правила для всех языков и всех диграфов.

Зато некоторые диграфы употребляются настолько часто, что удостоились отдельных символов в таблице Unicode. В моём скрипте они тоже есть.

Дальнейшее развитие диграфов — лигатуры. Здесь исходные символы уже полностью слились в один знак. Самые известные примеры — амперсанд (&) и дубль-вэ (w), но они и так есть на любой клавиатуре. А вот Æ, Œ и ß есть на клавиатурах только тех языков, где эти буквы используются.

Но и там нет стилистических лигатур ſt, st, ffl.

Кроме лигатур и диграфов я добавил также возможность ввода редких букв — торн (Þþ), шва (Əə), эт (Ðð) и пр.

Вот в этой табличке перечислено, что у меня есть. Вообще, лигатур в юникоде гораздо больше, но не все из них реально используются. Поэтому я их не добавлял.

Знак

Код

Комбинации клавиш (после Compose)

Æ

U+00C6

A→e или \→A

æ

U+00E6

a→e или \→a

Œ

U+0152

O→e или \→E

œ

U+0153

o→e или \→e

U+FB00

f→f

U+FB02

f→l

U+FB01

f→i

U+FB05

f→t

U+FB03

f→f→i

U+FB04

f→f→l

U+FB06

s→t

ʦ

U+02A6

t→s

IJ

U+0132

I→J

ij

U+0133

i→j

LJ

U+01C7

L→J

Lj

U+01C8

L→j

lj

U+01C9

l→j

Ŀ

U+013F

L→. или \→L

ŀ

U+0140

l→. или \→l

U+1EFA

L→l

U+1EFB

l→l

NJ

U+01CA

N→J

Nj

U+01CB

N→j

nj

U+01CC

n→j

DZ

U+01F1

D→Z

Dz

U+01F2

D→z

dz

U+01F3

d→z

DŽ

U+01C4

D→v→Z или X→Z

Dž

U+01C5

D→v→z или X→z

dž

U+01C6

x→v→z или x→z

Ø

U+00D8

\→O или /→O

ø

U+00F8

\→o или /→o

U+1E9E

\→B

ß

U+00DF

\→b

Ð

U+00D0

\→D или /→D

ð

U+00F0

\→d или /→d

Þ

U+00DE

\→T

þ

U+00FE

\→t

Ə

U+018F

\→^ (\→Shift+6)

͏ə

U+0259

\→6

Ǽ

U+01FC

‘→A→e

ǽ

U+01FD

‘→a→e

Ǣ

U+01E2

-→A→e

ǣ

U+01E3

-→a→e

Ǿ

U+01FE

‘→/→O

ǿ

U+01FF

‘→/→o

Ʒ

U+01B7

\→Z

ʒ

U+0292

\→z

Ǯ

U+01EE

v→Ctrl+z (просто v→z даст ž)

ǯ

U+01EF

v→Alt+z

Для ввода диграфов и триграфов после Compose просто нажимаются нужные буквы. Но здесь есть одна особенность, о которой сто́ит упомянуть. Есть диграф ff, а есть триграфы ffi и ffl. После того как будет нажато две буквы «f», диграф не отобразится. Скрипт будет ждать следующую букву. Если это будет i или l — напечатается триграф. Что‑то другое — диграф и введённый после него символ. Такая же ситуация с Á/Ǽ и Ā/Ǣ.

Как видите, для ввода редких символов после Compose используется клавиша «\». В том числе дублируются некоторые символы с диакритикой.

Для диграфов DŽ/Dž/dž предусмотрен более короткий вариант ввода — с помощью «x».

А некоторые из этих букв можно ввести ещё одним способом. Слева на слое Tab специально оставлено пустое место для пользовательских символов. Чтобы вы могли туда добавить то, что чаще всего используете (например, какую‑нибудь «ö»).

В скрипте эти символы прописываются в разделе «Private Use Area» (конец файла «Tab_pressed_layer.ahk»).

Пока вы туда ничего не добавили, я заполнил это место вот так:

Примечание. В каталанском есть буквы с точками сбоку: «Ŀ» и «ŀ ». Этa точка — интерпункт (средняя точка, U+00B7 middle dot). Для неё нет диакритического знака. Но её можно ввести отдельно после букв (Space+Ctrl+d). Или использовать сразу готовые буквы с точками, как показано в таблице выше. В окситанском тоже имеются сочетания с интерпунктом (n⸱h, s⸱h), но для них готовых символов в юникоде нет.

И, раз уж речь зашла о точках. В некоторых тюркских алфавитах есть необычная буква I. У которой, в отличие от английской, точка есть в верхнем регистре, а в нижнем нет: «ı» и «İ». Вводится она через Compose+. (диакритический знак Dot Above).

Кириллица

Я видел несколько вариантов универсальных кириллических раскладок, которые подходят для всех языков, основанных на кириллице. К сожалению, у этих раскладок есть большой недостаток: кому‑то придётся переучиваться, т. к. в разных языках разные раскладки. И это особенно обидно, учитывая, что бо́льшая часть букв во всех языках повторяется.

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

У меня получился вот такой слой:

Чтобы набрать одну букву с этого слоя, надо предварительно нажать Space+CapsLock. Для длительного переключения на слой и обратно — Space+Shift+CapsLock.

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

Конечно, можно было назначить их на свободные клавиши, но я старался располагать их с учётом лёгкости запоминания. Так, чтобы было похоже по звучанию на английскую букву этой клавиши, или хотя бы по внешнему виду на букву/цифру/знак. Именно поэтому на «)» находится Э, а рядом, на «(» — её зеркальное отражение, украинская Є. Впрочем, традиционное расположение Э (клавиша «’») оказалось ничем не занято, поэтому туда я её тоже добавил.

Полагаю, что для местной аудитории наиболее актуальны украинские, белорусские и русские буквы. Вот я их отметил:

А это список поддерживаемых языков:

Язык

Страны

Дополнительные символы

Белорусский

Беларусь

Дж дж, Дз дз, Ё ё, І і, Ў ў, Ы ы, Э э

Болгарский

Болгария

лишних букв нет

Боснийский

Босния и Герцеговина

Ђ ђ, Ј ј, Љ љ, Њ њ, Ћ ћ, Џ џ

Казахский (кирил)

Казахстан

Ә ә, Ғ ғ, Қ қ, Ң ң, Ө ө, Ұ ұ, Ү ү, Һ һ, І і

Киргизский

Киргизия

Ң ң, Ө ө, Ү ү,

Македонский

Северная Македония

Ѓ ѓ, ͏ Ѕ ѕ, Ј ј, Љ љ, Њ њ, Ќ ќ, Џ џ

Молдавский

Молдова

Ӂ ӂ, Ы ы

Монгольский

Монголия

Ө ө, Ү ү

Осетинский

Россия

Ӕ ӕ, Гъ гъ, Дж дж, Дз дз, Ё ё, Къ къ, Пъ пъ, Тъ тъ, Хъ хъ, Цъ цъ, Чъ чъ, Ъ ъ Ы ы, Э э

Русинский

Украина, Словакия, Польша

Ґ ґ, Є є, Ё ё, І і, Ї ї, Ы ы, Ю ю, Я я, Ь ь, Ъ ъ

Русский

Россия, Беларусь

Ё ё, Ы ы, Ъ ъ, Э э

Сербский (кирил)

Сербия, Черногория

Ђ ђ Ј ј Љ љ Њ њ Ћ ћ Џ џ

Таджикский

Таджикистан

Ғ ғ, Ё ё, Ӣ ӣ, Қ қ, Ӯ ӯ, Ҳ ҳ, Ҷ ҷ

Татарский (кирил)

Татарстан

Ә ә, Ё ё, Җ җ, Ң ң, Ө ө, Ү ү, Һ һ, Ъ ъ, Ы ы, Э э, Ю ю, Я я

Узбекский (кирил)

Узбекистан

Ғ ғ, Ҳ ҳ, Қ қ, Ў ў, Ъ ъ

Украинский

Украина

Ґ ґ, І і, Ї ї, Є є,

Цыганский

территория бывшего СССР

Ґ ґ, Ё ё, Ғ ғ, Кх кх, Пх пх, Рр рр, Тх тх, Ы ы, Э э, Ю ю, Я я

Цыганский

Сербия

Ђ ђ, Ј ј, Кх кх, Љ љ, Њ њ, Пх пх, Рр рр, Тх тх, Ћ ћ, Ћх ћх, Чх чх, Џ џ,Ъ ъ

Черногорский (кирил)

Черногория

Ђ ђ, З́ з́, Ј ј, Љ љ, Њ њ, С́ с́, Ћ ћ, Џ џ

В некоторых кириллических языках есть буква «шва» (Ә). Внешне она такая же, как и латинская, но имеет другой код и вводится на слое с кириллицей. Буква Ӕ в осетинском тоже не такая, как Æ в латинице.

Языки, у которых есть и латинский вариант алфавита, помечены как «кирил».

Греческий алфавит

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

Расположены они на тех же самых местах, что и в греческой раскладке. Для ввода одной греческой буквы нужно предварительно нажать Space+Tab (Space+Ѕhift+Tab для длительного переключения на слой и обратно).

Если посмотреть в таблицу юникода, там есть много диакритических знаков для греческого. Но, насколько я понимаю, большинство из них — для древнегреческого. А в современном языке используются только три:  « ̈ », « ́ » и « ̈́ ». Первые два вводятся как обычные диерезис и акут, а третий («диалитика») расположен на том же месте, что и в греческой раскладке — в верхнем регистре клавиши w. Нижний регистр там уже занят буквой «ς».

Интересный момент: в греческом языке акут с заглавными буквами отображается не сверху, а слева от буквы. Например, вот пара латинских и пара греческих букв с акутом: Á H́, Ά Ή.

У некоторых греческих букв есть альтернативный вариант написания (выделен синим цветом). В этом случае буква в нижнем регистре вводится с Alt, в верхнем — c Shift+Alt.

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

Добавил также все 13 знаков зодиака, имеющихся в юникоде.

И циферблаты. Alt — Ч:00 минут, Alt+Shift — Ч:30 минут. Т.е. 2:30 — это Alt+Shift+2 (🕝).

И на этом с языками я закончил. Давайте посмотрим, что получилось в итоге.

Вот здесь есть табличка, в которой перечислены 99,7% самых распространённых в интернете языков. На моей раскладке можно использовать 90% (все перечисленные на основе латиницы и кириллицы, плюс греческий). Остальные 9,7% — это иероглифические языки, персидский, тайский, хинди, иврит, арабский. В оставшихся 0,3% тоже есть поддерживаемые языки: норвежский, латвийский, боснийский, казахский, белорусский и пр.

На этом пока всё. Как говорят на ТВ: «не переключайте канал». Третья статья серии уже готова, будет опубликована совсем скоро.

👍ПодобаєтьсяСподобалось2
До обраногоВ обраному3
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Ну короче говоря, как можно набрать проще всего букву «ñ» в турецкой раскладке? Или проще всего — как раньше через Alt+0249?

В турецком есть «ñ» ?
Впрочем, есть или нет, ввести её несложно: Compose + ~ + n
Да и остальные варианты запоминаются легко:
Compose + - + n → n̄
Compose + ’ + n → ń
Compose + " + n → n̋
Compose + . + n → ṅ
и так далее

Ну а что такое «Compose» на клавиатуре под Windows — не написано, и поэтому все эти комбинации использовать не получится. «ñ» есть в крымскотатарском (глухая «н»), но поскольку отдельной раскладки нет, используется турецкая. Это также ключевая буква в испанском, которая отличает от английского алфавита. Все остальные можно набрать, буква «â» (смягчающая нейотированная «я») набирается через Shift+3+a, и аналогично остальные гласные с крышкой.

Как же не написано? Четвёртый абзац главы «Диакритические знаки».

Для циркумфлекса («крышки») у меня используется клавиша 6. Он там прямо на ней нарисован, даже запоминать не нужно.

В Windows такого нет, поэтому приходится эмулировать. По умолчанию в качестве клавиши Compose я использую клавишу «Menu» (между правыми Win и Ctrl). Но это можно перенастроить (см. главу «Настройка под себя» в конце следующей статьи).

Только обещание есть. Ну ок, в MS Word набрать можно, а что насчёт набора текста в любом другом редакторе? Было бы очень хорошо, чтоб можно было как-то где-то назначить на клавишу menu функционал, чтоб печатать с диактрическими знаками в любом редакторе.

Ну ок, в MS Word набрать можно, а что насчёт набора текста в любом другом редакторе?

Microsoft Keyboard Layout Creator. можна підхачити будь-яку розкладку під свої потреби, сам так кілька розкладок злив в одну. єдине, що у вінді є якийсь баг, що після перезавантаження вінда повертає назад всі видалені стандартні розкладки.

Нашёл! Букву «ñ» на турецкой раскладке можно набрать через RAlt+]+n. И аналогично другие символы с тильдой. Это ещё поискать нужно как следует.

Вы ещё проверьте клавиши соседние с «]». Например, «[», «\», «;». Там тоже есть диакритика.

Ищется в гугле по запросу «turkish keyboard layout»

В качестве Compose используется клавиша Menu. Хоть в ворде, хоть в командной строке. Везде. Берёте готовые скрипты на гитхабе и пользуетесь (ссылка в первой статье).

Я конечно могу быть не прав, но с таким качеством статей, Dou скоро начнёт постить «особенности вязания бамбуковыми спицами для чайников» да буков много, пользы мало. Аффтар, Книги по допечатной подготовке не все забыли и статья так лет на 20 опоздала, без обид, когда начал со старта писать про шпацию, и неразрывные пробелы нужно было упомянуть про Дональда Кнута и TEX, потом разъяснить особенности типов шрифтов и только после особенностях ввода. А так для 20 летних «синьоров» зайдёт нормально:)

А в статье про оптимизацию UX вы потребуете объяснения, что такое пиксель и как работает дисплей?

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

В этом всём я вижу самую большую проблему в запоминании огромного количества комбинаций. Возможно, для специфического занятия (типографский набор, да?) в принципе все эти варианты нужны. В более обычной жизни вероятность встретить большинство из них плавно приближается к вероятности встречи с динозавром на Крещатике.
В свете этого я бы таки больше смотрел на вариант с Compose как префиксом особого режима (и только для самых частых вариантов — сложные комбинации).

А вообще как-то сразу хочется обзавестить чем-то вроде Space Cadet Keyboard с семью модификаторами (точно хватит? хм), но чтобы они магически легли в те же места, что и обычные клавиши :)) Однократного префикса на это таки должно хватить.

Про апостроф — отказ от рекомендации U+02BC для всего был применён чисто для совместимости со старыми багами Microsoft; вообще же он для всех языков полезнее, если в них апостроф явно присутствует как символ языка.

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

У некоторых коллег на компьютерах установлено ≈15 национальных раскладок. Как по мне, проще запомнить один дополнительный слой кириллицы и полтора десятка кнопок с диакритикой (для языков на основе латиницы).

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

Хотя, возможно, кто-то любит, чтобы моргало и переливалось.

«Моргало и переливалось» не нужно. Вот ещё в MS-DOS в драйвере latrusuk менялся цвет рамки вокруг текста: жёлтая — русский, синяя — украинский (или наоборот). Это вполне разумно для такой клавиатуры. Можно делать не под всеми клавишами, а под отдельными, чтобы таки меньше переливалось.

Вообще, у клавиатур есть большой недостаток — передача данных только в одну сторону (назад только состояние трёх индикаторов передаётся). Было‑бы неплохо иметь возможность передавать, например, какая раскладка сейчас включена. Тогда можно было‑бы цветом это показывать прямо на клавиатуре.

В принципе, это реально. USB устройство может реализовывать одновременно несколько классов. Одним классом будет обычный HID, вторым — CDC (Communication Device Class / виртуальный COM порт). Вот по второму каналу можно гонять дополнительные данные в обе стороны. На компе программно «оконечить» виртуальный ком-порт — плёвое дело (делал неоднократно).

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

В более расширенных протоколах (и PS/2, и USB) это передаётся. Но я не подумал о другой проблеме — передачи этого из ОС (тем более что могут быть усложнения, например, что это remote desktop и ОС тоже ремотная). Да, тут сложнее, драйвер под каждую ОС.

А вот передавать цветом режимы, которые устанавливаются в самой клавиатуре, было бы реальнее. Но при генерации из сканкодов тут будет разве что адаптация под qwerty/dvorak/colemak/etc., или перестановка базовых клавиш.

Чёрт, хорошая была идея :( а я чего-то (спросонья?) забыл азы.

А через Autohotkey можно ставить, например, иконку в трее «мы сейчас в Compose и ждём второго нажатия»?

В принципе, это реально. USB устройство может реализовывать одновременно несколько классов.

Где-то так и делается. Sven 301, например, имеет клавишу Calculator, для этого изображает из себя два подустройства.

Эпично. Респект автору за труд, спасибо!

Наверное не по теме. Интересуюсь, как используя 60% клавиатуру можно было работать в программах, где используются функциональные клавиши F1-F12.
Есть ли какие-то типовые решения?

Так функциональные клавиши есть. Через сочетания с модификаторами. Чаще всего их выносят на цифровой ряд.

У меня сделано также — Space+1..0,-,=. И ещё дополнительно Tab+[uiop]/[jkl;]/[m,./] (описано в предыдущей статье)

как используя 60% клавиатуру можно было работать в программах, где используются функциональные клавиши F1-F12

Через модифікатори, але мені це виявилося незручним. Наприклад в IntelliJ пошук це Alt+F7. На обрізаній клавіатурі для цього треба натискати три кнопки а не дві, Fn+Alt+F7.

Мені це дуже незручно. Я запитав в людей в чаті Funkeys як вони вирішують цю проблему, але там походу або програмістів в IntelliJ мало, або вони не паряться.

Тому я повернувся зі спліту до повнорозмірної клавіатури. А після війни замовлю собі BFO-9000.

Ще можна запрограмувати QMK на те щоб при довгому затисканні наприклад Ctrl або Alt додавався Fn модифікатор.

Існують «менш обрізані» клавіатури, в яких є ряд функціональних клавіш.
Щодо модифікаторів — згоден. Їх, зазвичай, розташувують не дуже зручно.

Alt+F7 в моєму варіанті — Space+Alt+7 або Tab+Alt+l (маленька буква L).

Існують «менш обрізані» клавіатури, в яких є ряд функціональних клавіш.

Нажаль 99% сплітів—без F-рядка.

Как вариант найти алтернативные сочетания, без использования F-клавиш. В той же Visual Studio есть альтернативные комбинации, например, вместо F2 = Ctrl+K,Ctrl+N. Достаточно быстро привыкаешь и вполне удобно. Проблема, что всё таки есть комбинации с обязательной F-клавишей.

Еще вариант: ряд 1 2..0-= в сочетании с любым модификатором — обрабатывается как F-клавиша. Вопрос: как это удобнее реализовать?

Не вариант. Комбинации модификаторов (Alt/Ctrl/Win) просто с цифрами тоже встречаются.
Да и «-» c «=» часто используется как зуммирование вместе с Ctrl

С «-» и «=» согласен. С цифрами комбинации достаточно редки.

С помощью AutoHotkey переназначить несложно. Например, вот так:
!1::Send !{F1}
Т.е. нажатие Alt+1 будет срабатывать как Alt+F1

А вот так нажатие 1 с любым модификатором будет работать как нажатие F1 с модификатором:
*1::SendEvent {Blind}{F1}

Підписатись на коментарі