Привет, Хабр!
Отсылка к прошлому посту
Этот пост является, отчасти, переосмыслением прошлой статьи, со своими дополнениями и улучшениями.
Дело в том, что в прошлой статье я допустил одну критичную ошибку, которая сказалась на всём повествовании – я хотел рассказать о проекте дополняющем клавиатурную раскладку, а сам, невольно, сместил всё внимание на буквенную часть, которую зачем-то стал навязывать к использованию, как основу всего проекта. С неё всё началось, с ней связаны многие детальные части проекта, но обязательной она не является. Потому она была справедливо вынесена из проекта, и теперь мы можем полноценно поговорить о прочих аспектах, без оглядки на буквенную часть.
Прочие изменения то тут, то там, вносят свои коррективы и дополнения, и, хочется верить, помогут описать проект должным образом.
Спасибо всем комментаторам. Я учёл все замечания и предложения к вынесенной буквенной части, и ещё попробую посмотреть, как можно её улучшить. Не знаю, получится ли правильно всё реализовать, но так или иначе, это уже не имеет никакого отношения к текущему посту.
Без предысторий. О чём этот проект?
Проект является дополнением к любой клавиатурной раскладке, которое значительно расширяет и унифицирует символьный ввод, добавляет полную нативную поддержку всех языков кириллической и латинской письменностей с их особенностями, дополняет взаимодействие с клавиатурой некоторым функционалом, и всё это с первостепенной оглядкой на эргономику и общее удобство использования.
Основная идея – использование одной раскладки для всей письменности и символьного набора, без каких-либо ограничений.
Возможно вы также слышали (а может даже и используете) о типографской раскладке Ильи Бирмана. Она добавляет многим клавишам два дополнительных слоя, с модификаторами AltGr
и Alt-Shift
, под которыми расположен расширенный набор символов, в числе которых символы "корректного ввода", кавычки всех видов, некоторые специфичные языковые символы, а также прочие потенциально востребованные символы и немного диакритики. Общее количество уникальных символов около 75. За 15 лет данная раскладка приобрела немалую известность, в основном среди медиакомпаний, что служит определённым показателем востребованности.
В самом базовом представлении, данный проект следует тем же положениям – дополнительные символы на дополнительных слоях под модификаторами, для упрощения набора. Но самое интересное в деталях, ведь так? О них и поговорим ниже, благо, есть о чём.
Символьные слои
Модификаторы
Первым делом стоит определиться с модификаторами доступа к символьным слоям.
Не хотелось прибегать ни к идее отдельного переключения слоёв, ни к двойным зажимаемым модификаторам, ни к специфичному модификатору AltGr
, из-за его неоднозначного использования. Все эти варианты не представляются достаточно удобными для повседневного использования.
Из оставшихся стандартных модификаторов оставался лишь обычный Alt
, но его, конечно, недостаточно. Потому были опробованы различные "нестандартные" модификаторы, один из которых оказался настолько удобным в использовании, что в итоге стал основным (под ним расположен самый востребованный, он же базовый, набор символов). Этот модификатор – "длинные" или "долгие" нажатия. Вам может прийти аналогия со вводом на современных мобильных клавиатурах, но ощущаются они весьма по-разному. Также не стоит слишком акцентироваться на слове "долгие", ведь на деле эти нажатия занимают от 0.15с (базовая конфигурация) до 0.11с (оптимальное значение, после привыкания к модификатору), и могут быть в любой момент переопределены на более комфортное значение.
После длительного использования данного модификатора, могу уверить, что ввод символов с длинным нажатием едва ли отличается по ощущениям от базового ввода буквенных символов. Shift
никак не влияет на ввод символов с данным модификатором, что позволяет набирать их одним и тем же образом в потоке буквенных символов равно как нижнего, так и верхнего регистров.
Третьим модификатором, для сверх-дополнительных символов, выступает комбинация двух озвученных. Обращаясь к прошлому абзацу – эта комбинация ощущается как одинарный модификатор, и не эквивалентна двойным зажимаемым модификаторам.
Основной символьный слой
Основной символьный слой, расположенный под длинными нажатиями, содержит, в основном, базовый набор символов, знакомый всем по существующим раскладкам.
Символы сгруппированы по категориям (пунктуация, базовая математика, валюты, скобки с зеркальным положением вокруг домашнего ряда).
Наиболее востребованные категории (пунктуация и базовая математика) расположены на домашних позициях пальцев, для максимально удобного доступа к ним.
Некоторые графически близкие символы расположены на вертикально смежных позициях.
В правом верхнем углу расположен самый востребованный диакритический комбинируемый символ – аку́т, в первую очередь, как маркер основного ударения.
В цифровом ряду, на месте бывших символьных клавиш -_
и =+
, расположены две новые клавиши-команды – уменьшение и увеличение выделенного числа на 1. Данные клавиши определены на базовом слое (без каких-либо модификаторов) и не имеют варианта с модификатором длинного нажатия, для возможности повторения команды через удержание, потому отображены на данном слое в базовом виде. Данные клавиши могут быть переопределены отдельным пользователем в конфигурации реализации.
Обычные цифровые клавиши также не имеют варианта с длинным модификатором, и пока зарезервированы под дальнейшие потенциальные дополнения, а на данном слое отображаются в базовом виде.
Альтернативный слой
Основу слоя, расположенного под Alt
, составили альтернативные отображения символов с прошлого слоя или их логические вариации на тех же позициях – минус вместо дефиса, длинное тире на месте среднего, символ цента вместо символа доллара, гравис (как побочное ударение) вместо акута, двойные кавычки-«ёлочки» на месте одинарных угловых, …
Данный слой был дополнен базовыми навигационно-управляющими командами (стрелки, вперёд/назад, отменить/повторить), для минимизации отрыва рук от домашних позиций.
В цифровом ряду расположились все минимально востребованные символы надстрочной комбинируемой диакритики.
Расположение данного набора символов в цифровом ряду позволяет использовать их только тогда, когда они нужны, и только те, которые нужны, никоим образом не сказываясь на прочих аспектах набора и не "занимая полезное место". Ведь в зависимости от языка, у пользователей может возникнуть необходимость всего в 1-3 диакритических символах (у каждого своих), а значит, "ненавязчивое" расположение актуально как для пользователей вовсе не использующих диакритику, так и для использующих её на 4-12%, в зависимости от потребностей.
Диакритический ряд не является реализацией упомянутой ранее мультиязычности, хотя и вносит в неё свой вклад. О полноценной мультиязычности мы поговорим отдельно.
Дополнительный слой
Данный слой содержит наименее востребованные, но всё ещё представляющие интерес символы.
Следование категориям и позициям прошлых слоёв по возможности соблюдено, хотя на данном слое и не так заметно.
Навигационно-управляющие клавиши представлены в Alt
варианте, и не имеют AltLong
варианта, для сохранения возможности повторения команды через удержание.
Цифровой ряд содержит 10 подстрочных комбинируемых диакритических символов (все минимально востребованные). Описание, которое было дано надстрочной диакритике, является общим и для над- и для подстрочной диакритики.
Оставшиеся два места в цифровом ряду были отданы дополнительным символам.
Итог раздела
Суммарно на трёх слоях расположились 83 вспомогательных символа + 24 символа комбинируемой диакритики + 8 навигационно-управляющих команд + 2 вспомогательные команды.
Данные символы и команды объединены в логические группы.
Группы и отдельные вариации символов наследуют своё положение между слоями.
Позиционирование выполнено с ориентацией на удобство набора наиболее востребованных символов, с дополнительным вертикально-смежным или зеркальным позиционированием логически связанных символов в отдельных случаях.
Мультиязычность
Мультиязычность реализована посредством введения дополнительного языкового блока. Его основная идея состоит в том, что он выступает в роли открывающего доступ к набору на любом языке письменности, без привязки раскладки к конкретному языку, без каскадных ограничений набора и никак не сказывается на удобстве набора для тех пользователей, которые им не пользуются, хотя и у последних когда-никогда может возникнуть редкая потребность в нём.
В рамках этого блока нас интересует всего одно различие между языками одной письменности – набор символов (как закреплённый алфавитом, так и используемый на практике). Конечно, отдельные языковые особенности также учтены, но они будут рассмотрены отдельно для каждого случая.
Итак, как же могут различаться символы между языками? Тут существует две категории:
графически уникальные символы/лигатуры;
символы с добавочной диакритикой, или им эквивалентные.
Наличие символов первой категории является обязательным условием для базовой возможности набора на конкретном языке, и именно добавление подобных символов – основная причина создания множества отдельных языковых буквенных раскладок. Которые теперь нам не понадобятся.
Символы второй категории могут быть введены и через комбинируемую диакритику через двойное нажатие, однако было бы некорректно оставлять такие символы исключительно на комбинируемый ввод, потому стоит позаботиться и об упрощённом вводе – через одинарное нажатие.
Стоит дополнительно отметить, что символы второй категории могут быть закреплены официальным алфавитом и восприниматься носителями как уникальные (как й или ё в русском, к примеру), а могут быть общеизвестно комбинируемыми. Чем богаче на диакритику язык, тем скорее подобные буквы будут восприниматься именно в комбинируемом варианте.
Наборы символов
Конечно, специфичных языковых символов куда больше, чем мы можем разместить на клавиатуре, и уж тем более, если мы хотим сделать это удобным образом. Потому нам стоит разделить все специфичные языковые символы на наборы, которые позволят использовать их с максимальным охватом и удобством. Наборы составлены отдельно для кириллицы и латиницы, а текущий набор символов в языковом блоке будет зависеть от текущей активной раскладки, предлагая ко вводу только актуальные символы. Переключение между наборами одной письменности, при необходимости, может осуществляться "на лету", хотя это и редкий случай, ведь достаточно единожды выбрать тот набор (для каждой письменности), который потенциально может пригодиться.
Располагается наш языковой блок в "ненавязчивом" цифровом ряду под модификатором Shift
(ShiftLong
для вариантов в верхнем регистре), что даёт нам 12 позиций в каждом наборе.
Возможно смещение блока на модификаторы Long
и Shift.
Из графически уникальных символов, открывающих доступ к набору текста на популярнейших языках латинской письменности, был составлен базовый набор, присутствующий в едином виде во всех латинских наборах. Это сделано для расширения охвата каждого отдельного набора символов.
Базовый набор – ł đ ı ß ø æ œ
.
Оставшиеся же позиции будут содержать разные символы из набора в набор, в зависимости от языка/группы, для которой они предназначены.
Изменяемая часть наборов состоит из упомянутых ранее символов упрощённого ввода.
В некоторых локально востребованных наборах могут встречаться и уникальные графические символы, которые было нецелесообразно выносить в базовый набор. Подобные наборы символов можно категоризировать как "позволяющие", так как без их использования ввод текста на конкретном языке не является полноценным. К таким наборам относятся некоторые языки Африки, а также исландский, казахская латиница, азербайджанский и мальтийский.
Все остальные наборы не имеют подобного ограничения, и категоризируются как "упрощающие", т.е. содержащие в изменяемой части исключительно символы упрощённого ввода.
Давайте для примера взглянем на основной набор языкового блока для латиницы:ñ å ä ö ü ł đ ı ß ø æ œ
Здесь к базовому набору были добавлены 5 символов упрощённого ввода, и в таком виде набор открывает полноценный доступ к следующим языкам: испанский, немецкий, французский, вьетнамский, шведский, датский, финский и норвежский.
Отдельно стоит заметить, что базовый набор дополнительно предоставляет минимальную возможность ввода также и для турецкого, польского и словенского языков (дополнительно имеющих собственные упрощающие наборы).
Здесь также не перечислено множество языков, доступных ко вводу (как на базовой письменности, так и через диакритику) без использования языкового слоя – их поддержка подразумевается сама собой.
Таким образом, всего с одной вариацией языкового блока открывается полноценный доступ к 76.78% языков интернета (по используемости) и базовый к дополнительным 4.42% языков, из общих 82.16% языков латинской письменности. Суммарно же, все языковые наборы охватывают все языки письменности.
Здесь и далее используется статистика использования языков в интернете с сервиса w3techs.com за 01.12.2021.
Для языков, чья письменность отличается от латинской и кириллической, предусмотрены варианты романизации. Из 9.86% подобных языков для 9.84% поддерживаются все версии романизаций, большая часть которых недоступна на базовой раскладке письменности. Для оставшихся – предусмотрены только некоторые варианты романизации.
Отдельные уточнения и учёт языковых особенностей
в наборах, основанных на турецком варианте латиницы предусмотрено небольшое опциональное перепозиционирование символов
iI
иıİ
, для более логичного ввода –iİ
(в буквенной части) иıI
(языковой блок). Переключаемая опция;при выборе румынского языкового набора предусмотрена опциональная замена диакритической седили на кому, для исправления распространённого ошибочного использования первой. Переключаемая опция;
в наборах "исландский/древнеанглийский" и "мосси" символ
đĐ
заменён на варианты начертания, использующиеся в данных языках –ðÐ
иɖƉ
, соответственно;в наборы, в которых количество динамических символов ограничилось 4, была добавлена
ñ
, даже не относясь к основному языку набора, в качестве символа с максимальным расширением охвата, без зависимости от прочих символов;в некоторых отдельных наборах, в которых количество динамических символов потребовало 6 позиций, дополнительное место было пожертвовано от
ł
;в наборах для польского, литовского, латышского и венгерского языков, ввиду крайне широкого использования диакритики в данных языках, охватить все символы упрощённого ввода не представляется возможным. Упрощённый ввод, по возможности, охватывает символы с разной диакритикой, оставляя на комбинированный ввод буквы с единым диакритическим знаком (обычный акут для польского и венгерского, огонэк для литовского);
в зависимости от потребностей пользователя (переключаемая настройка), символы упрощённого набора могут подаваться на ввод как в комбинированном виде, так и в виде цельного юникод-символа;
одинаковые динамические символы, встречающиеся в разных наборах, расположены на одних и тех же позициях, где это было возможно.
Все варианты латинских наборов (31)
Main |
|
Turkish |
|
Polish |
|
Romanian |
|
Hungarian |
|
Slovene, Croatian, … |
|
Lithuanian |
|
Luxembourgish, Uyghur |
|
Kurdish (Hawar alphabet) |
|
Twi, Yoruba (Benin), … |
|
Hausa |
|
Latvian, Maori, … |
|
Igbo |
|
Irish, Luba-Katanga, Sundanese |
|
Venda |
|
Old English, Icelandic |
|
Mossi |
|
Fula |
|
Maltese |
|
Northern Sotho, Albanian |
|
Kazakh |
|
Southern-Berber, Kanuri |
|
Haitian, Javanese, Kikuyu |
|
Uzbek |
|
Azerbaijani, (Turkish) |
|
Estonian |
|
Urdu (Roman script) |
|
Esperanto |
|
Western Frisian |
|
Northern Sami |
|
Volta-Niger languages |
|
Перейдём к кириллическим наборам.
Здесь положение несколько иное, так как, за редким исключением, добавочная диакритика крайне некорректно отображается с кириллическим набором символов на подавляющем большинстве шрифтов, что вынуждает нас относиться ко всем символам данной письменности как к уникальным, хотя, справедливости ради, большая часть из них и так принадлежит к уникальной категории.
Ввиду этого факта, все наборы являются "позволяющими", и у них нет базового набора – все символы являются изменяемыми из набора в набор. Однако это положительно сказалось на количестве наборов – их всего 5, один из которых принадлежит единственному языку.
Символы кириллических наборов, по озвученной ранее причине, передаются на ввод исключительно в едином, предкомбинированном виде (за исключением з́ и с́, вовсе не имеющих цельного представления).
Основной, по потенциальной востребованности, кириллический набор:ґ є і ї ӏ ў ѣ ѵ ѳ ӂ ӕ ӧ
Данный набор символов открывает доступ к полноценному набору текста на украинском, белорусском, молдавском, русинском, осетинском, языке коми, диалекте руска рома, ряде кавказских языков, дореволюционном русском.
Все варианты кириллических наборов (5)
Основной |
|
Сербский, боснийский, македонский, черногорский, интерславик |
|
Казахский, монгольский, узбекский, киргизский, таджикский |
|
Башкирский, чувашский, татарский |
|
Абхазский |
|
Из 7.98% кириллических языков интернета 7.68% доступны к полноценному вводу на основном наборе, а оставшиеся 0.3% – посредством 4 прочих наборов.
Текущие активные наборы символов также отображены в GUI.
С полным распределением, алфавитами, наборами, процентами, поддержкой, категориями и письменностями можно ознакомиться в файле languages.xlsx
Итог раздела
Языковой блок, расположенный под Shift
и динамически изменяющийся, в зависимости от активной раскладки, содержит в себе 31+5 наборов специфичных языковых символов, которые открывают доступ к набору текста на любом языке кириллической и латинской письменностей. Из 90.14% кириллических и латинских языков интернета:
полностью поддерживаемые языки на любом наборе – 77.64% (89.16% без упрощённого ввода);
полностью поддерживаемые языки на основных наборах – 6.82%;
-
полностью поддерживаемые языки на дополнительных наборах – 5.40%;
5.02% – на упрощающих, 0.38% – на позволяющих;
диакритически поддерживаемые языки – 0.28%.
Романизированные версии языков прочих письменностей: все версии – 9.84%, некоторые – 0.02%.
Дополнительный функционал / реализация
С POC-реализацией для Windows можно ознакомиться и опробовать на гитхабе.
Большая часть настроек, включая длительность срабатывания "длинных" нажатий и выбор языковых наборов, доступна в меню скрипта в трее.
Буквенные раскладки
Данный проект не является отдельной раскладкой и не требует никаких изменений в этой части. Использование происходит поверх вашей раскладки, какой бы она ни была.
Так как символьные слои в полной мере покрывают все символьные потребности пользователей, их присутствие в буквенной части может быть излишним, в связи с чем большинство популярных раскладок дополнительно были приведены в адаптированный вид и опционально предлагаются к установке и использованию вместе с данным проектом.
Адаптация заключается в очистке раскладки от небуквенных символов и размещении буквенных символов в буквенной части клавиатуры, в случае, если в оригинальном виде они расположены за её пределами. Никаких прочих изменений – это те же буквенные раскладки, как они представлены в оригинальном виде.
Также приведение раскладок в адаптированный вид продолжает идею модульности – каждый блок слоя клавиатуры отвечает за собственный функционал: буквы в буквенной части на базовых нажатиях, символы на символьных слоях, цифровые символы в цифровом ряду, языковые символы в языковом блоке, диакритика в собственных слоях в цифровом ряду. В существующих же раскладках всё это переплетено между собой, и малейшее изменение влечёт за собой ряд каскадных переназначений, что мы можем наблюдать сегодня в бесчисленных вариантах раскладок, разнящихся зачастую всего парой символов, однако уже так представляющих собой отдельную раскладку.
Но так или иначе, проект не зависит от вашей раскладки и использование адаптированной версии является исключительно опциональным.
Опциональные/переключаемые функциональности
Парные скобки/кавычки – aвтоматически закрывает скобки и кавычки <>
, «»
, ""
, “”
, ()
, []
и {}
, устанавливая позицию каретки между ними.
Aвтоматическое закрытие одинарных кавычек не предусмотрено, так как данный символ часто используется в значении апострофа, где парная кавычка будет нежелательной.
Комбинированный упрощённый ввод символов языкового блока – базово на ввод отправляются "цельные" символы, даже если они эквивалентны комбинированным. С данной опцией, они будут отправляться в виде буква+диакритика, где это возможно.
Переназначения управляющих клавиш – дополнительное перепозиционирование клавиш Backspace
, Enter
, CapsLock
и Esc
, для их более комфортного использования. Подобное расположение является более эргономичным и позволяет минимизировать движения, отрывающие пальцы от домашних позиций. Предлагаемое назначение:
Enter
выполняет функциюBackspace
; с зажатымShift
–Delete
;Backspace
выполняет функции управления медиа (нажатие – воспроизведение/пауза; сShift
– увеличить громкость; сAlt
– уменьшить громкость; сShiftLong
– следующий медиа-элемент; сAltLong
– предыдущий медиа-элемент);Tilde
выполняет функциюEsc
;-
CapsLock
выполняет функциюEnter
;Функция
CapsLock
может быть назначена наEsc
отдельной настройкой.
Пользовательские назначения – для клавиш уменьшения/увеличения числа в цифровом ряду, а также для "опустевших" клавиш адаптированных латинских раскладок предусмотрены дополнительные назначения, которые прописываются пользователем в config.ini
файле скрипта.
Там же могут быть назначены дополнительные клавиши для переключения между окнами процессов сочетанием LWin-<назначенная_клавиша>.
Автоматическое отключение скрипта в отдельных приложениях – отлов длинных нажатий может быть нежелательным в некоторых приложениях, сказываясь на их работе. Такие приложения вносятся в файл config.ini
в секцию BlackList
, после чего действие скрипта в данных приложениях будет автоматически приостанавливаться.
Дополнительные горячие клавиши реализации
Изменение регистра |
|
Неразрывный пробел (переключаемая функциональность) |
|
Заменить выделенный текст, текстом из буфера обмена, с сохранением заменяемого текста в буфер |
|
Навигация "стрелками" |
|
Перемещение окон |
|
Свернуть/[восстановить] все окна |
|
Пауза/возобновление скрипта |
|
Перезапуск скрипта |
|
GUI
Скрипт имеет минимальный подсказывающий GUI, в котором отображены все символьные слои, базовая раскладка, выбранные языковые наборы, некоторые переключаемые опции и переназначения.
Все скриншоты выше взяты из него.
Дополнительно присутствуют: вкладка скан.кодов (как подсказка для добавления назначений в config.ini
), список языковых наборов (с возможностью смены активного двойным нажатием) и список горячих клавиш.
Отображение GUI переключается кликом по иконке в трее или сочетанием Alt-F1
.
Пока GUI активен, переключение между вкладками может быть осуществлено клавишами F1-F7
.
Нажатие клавиши в буквенной части клавиатуры выделят данную клавишу на "слоевых" вкладках.
Пример отображения основного символьного слоя с включённым переназначением управляющих клавиш, дополнительными переназначениями в цифровом ряду и включённой опцией парных скобок:
Заключение
Данный проект дополняет клавиатурную раскладку предоставляя единый доступ к более чем 100 уникальным символам и 10 командам, языковому блоку, охватывающему все языки кириллической и латинской письменностей, с их особенностями, а также к различному вспомогательному функционалу и пользовательским назначениям.
Предлагаемая модульная система клавиатурных назначений позволяет и в дальнейшем вносить изменения и дополнения в любой блок, не затрагивая прочие.
А дополнять ещё есть чем, и есть куда.
Спасибо, что дочитали. Буду рад всем комментариям, предложениям, замечаниям.
Если вы носитель языка, отличного от основного языка письменности, буду отдельно рад отзывам и предложениям по поддержке конкретных языков.
Комментарии (10)
kvaps
02.12.2021 15:48Я использую три раскладки: английскую, русскую и чешскую.
Первые две переключаю по капслоку, постоянно.А вот с чешской раскладкой всё немного сложнее. По умолчанию она как стандартная QWERTZ, но с дополнительным рядом букв вместо цифр.
Добавлять ещё одну раскладку в систему и переключать мне очень не хотелось. Поэтому решил замапить чешские символы на английскую раскладку. Таким образом Caps Lock стал для меня своего рода вторым шифтом для ввода чешских символов:
Jofr
04.12.2021 08:00+1О, знакомая история. Я, правда, наоборот оставил чешскую раскладку qwerty, но допилил ее до совместимости с английской. Также сделал alt-связки, но основной набор оставил на цифровой, для слепой печати гораздо удобнее. Сейчас думаю, чтобы режимы чешская vs цифровая сделать переключаемыми по §, сделав субрежимы в раскладке.
kvaps
04.12.2021 09:56Неплохая идея!
Скажите, а вы как-то решили проблему словарей? Ведь проверка правописания, как правило, работает только для одной раскладки - текущей.
Jofr
04.12.2021 10:49Хм, интересный вопрос, я об этом серьезно не задумывался. Для английской у меня в фоне висит Grammarly, а раскладка как раз доработанная чешская, т.е. оно тоже включено, по идее. Как граммарли с чешским не ссорится — не знаю, it just works.
berez
04.12.2021 20:30Из графически уникальных символов, открывающих доступ к набору текста на популярнейших языках латинской письменности, был составлен базовый набор, присутствующий в едином виде во всех латинских наборах. Это сделано для расширения охвата каждого отдельного набора символов.
Базовый набор – ł đ ı ß ø æ œ.
Два раза перечитал и все равно не понял. Кем составлен? По какому принципу составлен?
Окей, у нас есть символ ł — перечеркнутое L. Используется только в польском языке. Сможем ли мы набирать тексты на польском? Нет, не сможем, т.к. так еще используются другие диакритики (ą ę ń и т. д.).
Или вот у нас есть символ I ı — «i без точки». Используется в тюркских языках. Сможем ли мы набирать тексты, скажем. на турецком? Нет, не сможем: к символу ı идет парный символ İ i (и с точкой), который отличается от стандартного I i в латинице.
Почему в вашем «базовом наборе» есть I ı, но нет парного ему İ i — абсолютно непонятно.TLHE Автор
05.12.2021 13:14Всё перечисленное вами доступно. Моё упущение, что не смог правильно описать.
В начале раздела мультиязычности я разделил языковые символы, отличные от базовой письменности, на две категории:
уникальные символы, доступные ко вводу только посредством специального символа;
символы, эквивалентные базовым, дополненным комбинируемой диакритикой.
разумеется, нас интересует исключительно графическое отображение
Раздел описывается в два этапа, в которых рассматриваются две ступени поддержки:
базовая возможность ввода;
упрощённая возможность ввода.
В рамках рассмотрения предоставления базовой возможности нас интересуют исключительно графически уникальные символы, так как символы второй категории уже доступны ко вводу посредством комбинируемой диакритики, которая в описываемом проекте покрывает все минимально используемые языки мира.
Из подобных уникальных символов и была составлена основа латинских языковых наборов. В основу вошли символы из первых 30 языков, по используемости в интернете.
Соответственно, использование данной основы во всех наборах открывает именно базовую возможность ввода для всех этих языков.Уточнение:
Уникальные символы, относящиеся к языкам на более низких позициях, пришлось вынести в отдельные языковые наборы, которые я честно обозначил как "позволяющие", т.к. только они, в рамках проекта, предоставляют доступ к полноценному набору текста на данных языках.
К этой категории поддержки относятся только лишь азербайджанский, исландский (в наборе с древнеанглийским) и некоторые африканские языки. В посте я также причислял к этой категории текущий пересмотр казахской латиницы, но сейчас обнаружил, что в апреле текущего годаŋ
была заменена наñ
, что меняет категорию поддержки данного языка на "упрощающую", а сам набор требует пересмотра.–––
Во второй части раздела я рассматривал оптимизацию ввода алфавитных символов, эквивалентных базовым символам с комбинируемой диакритикой, для чего и были составлены все языковые наборы.
В них, в части оставшейся после "основы", я расположил подобные "комбинированные" символы в их цельном виде, для упрощённого ввода.Уточнение:
Для некоторых языков, с богатой диакритикой в алфавитных символах, попросту не хватило места, потому пришлось выбрать для их поддержки наиболее используемые и уникальные символы. К этим языкам относится затронутый вами польский, вместе с венгерским, латышским, литовским, чешским и словацким.
Сейчас это решение мне не кажется правильным, и стоит пересмотреть поддержку таких языков, пожертвовав охватом "основы" в пользу данных языков.Но даже на текущий момент польский язык доступен к базовому вводу на 24/31 наборах, благодаря
łŁ
в "основе", а также имеет собственный частично-упрощающий набор сąężó
, оставляющий на комбинированный ввод только наименее используемые символы, с единственным комбинируемым акутом –ćńśź
.–––
ıİ
, также относящийся к "основе", поддерживается во всех наборах, и в базовом виде присутствует именно в виде, противоположном ISO basic Latin. На базовой письменности у насiI
, в языковом блокеıİ
, что покрывает базовую возможность ввода.
Дополнительные языковые наборы, относящиеся к языкам, основанным на турецком варианте латиницы, помимо возможностей упрощённого ввода также содержат опциональный переключатель, доступный на данных наборах, который выполняет небольшое перепозиционирование –iİ
в буквенной части клавиатуры,ıI
в языковом блоке. Работает для наборов турецкого, азербайджанского и казахской латиницы. Таким образом "основа" предоставляет базовую возможность ввода из любого набора, а специальный упрощающий набор оптимизирует ввод, с дополнительным перепозиционированием для большего удобства и согласованности символов разных регистров.Надеюсь, смог корректно прояснить эти моменты.
AndreyDmitriev
Я как раз этим летом размышлял на тему коррекции кириллической раскладки, но элегантного решения не нашёл.
Дело в том, что у меня основная раскладка немецкая (к которой я очень привык), а кириллическая используется эпизодически и вот если их сравнить, то все знаки типа ? ( ) + * - _ и так далее перескакивают на другие клавиши при смене раскладки:
Особенно скобки достают, которые "съезжают" на одну клавишу.
Я было вооружился редактором клавиатуры и озадачился универсальной раскладкой, в которой все знаки препинания, скобки и т.д. оставались бы на своих местах, независимо от языка. И всё бы ничего, но вот буквы "Б", "Ю" и "Ъ" явно не вписываются в эту концепцию, поскольку на этих клавишах запятая, точка и плюс. Я пробовал было их в верхний ряд поместить, либо знаки через AltGr вводить, но как-то не прижилось.
TLHE Автор
Да, это одна из основных проблем, даже между раскладками одной письменности, не говоря уже о разных, где базовое количество буквенных символов разнится на 20%+ (в случае сравнения кириллица-латиница), из-за чего "нужно" или освобождать позиции в одной, или заполнять пустующие места во второй.
Некоторые буквенно-символьные раскладки подходят к этой проблеме как раз с той позиции, что вы описали в конце – убирают "редкие" буквы из основной части, в угоду вспомогательным символам, по примеру обделённой «ё» в стандартном «йцукене». А в отдельных случаях даже разносят прописные и строчные варианты одной буквы на разные клавиши.
Совсем не разделяю этот подход, и вполне понимаю, почему опробованные вами позиционирования не прижились.
Наверное, располагая небуквенные символы в буквенной части, решить эту проблему и не представляется возможным, потому я и пошёл другим путём, который позволяет унифицировать небуквенный ввод.
seraz
м. быть решением клавы с аналоговым срабатыванием переключателей. там оптические свитчи с разными степенями нажатия. т. е. просто глубже нажимать ту же букву, с боольшим усилием.
пусть будет и трудно всегда точно клацать 10 разных уровней. но точно не разницу между чуть-чуть нажал и ближе к крайним положениям и середине...
сейчас, вроде бы, даже низкопрофильные оптические появляются.
TLHE Автор
Спасибо за наводку, очень интересная вещь.
Бегло ознакомился, но, как я понял, пока что это относительная новинка для конкретных геймерских клавиатур (или просто они выше в ранжировании выбрались).
Было бы интересно совместить подобные свитчи с разными эргономическими клавиатурами. Ну и, конечно, нужно пробовать, как это ощущается. Хотя звучит отлично.