К сожалению, не существует программного средства или пакета, которые могли бы генерировать или транскодировать (переносить) исходные файлы раскладки клавиатуры основных операционных систем для настольных компьютеров (по крайней мере, ни одного, который доступен для общественности). Такой инструмент был бы очень полезен для всех тех, кто должен регулярно использовать несколько ОС, независимо от того, находятся ли они на одной машине и на клавиатуре или нет; который становится все более распространенным. Но ничего подобного до сих пор не разработано и не выпущено; и это не без причины. Существуют различные сложности, связанные с "портированием" клавиатур между операционными системами или попыткой поддерживать точно синхронизированные раскладки клавиатуры на разных платформах. Одним из существенных препятствий является различие между "модификаторами" / клавишами управления, которые используются и / или распознаются различными операционными системами. Кроме того, на компьютерах Mac есть уникальные физические клавиатуры с некоторыми клавишами, которые не соответствуют напрямую или не переводятся в другие операционные системы, создавая второй "слой" проблем и несоответствий, которые необходимо разобрать и преодолеть. По сути, технически невозможно иметь одинаково функционирующие раскладки клавиатуры на указанных вами платформах.
Однако Keyman Developer - это мощный сторонний программный инструмент для раскладки клавиатуры и разработки ввода текста, который настолько близок к вашим требованиям, насколько я думаю, вы можете надеяться найти его. Это единственный известный мне инструмент такого типа, который доступен для общественности. Хотя стороннее программное обеспечение не является идеальным, я утверждаю, что, учитывая все, что оно может предложить, Keyman стоит рассмотреть - в зависимости от того, какие именно у вас цели (и насколько сложны / уникальны ваши раскладки клавиатуры).
Пакет Keyman Developer - это надежный инструмент, способный генерировать различные типы выходных файлов, включая универсальные установщики, в том числе шрифты методов ввода / раскладки клавиатуры не только для любой неопределенно новой версии настольных операционных систем Microsoft и Apple, но и для соответствующих мобильных платформ. / устройств, а также * nix-платформ, в том числе для Android. Это означает, что это также облегчает разработку виртуальных клавиатур на экране - ВСЕ, используя один интегрированный инструмент, редактируя единый файл проекта! ПЛЮС, он недавно стал открытым и бесплатным! Я не думаю, что вы можете надеяться победить это ...
Для поддержки гибких, расширенных функций и функций, требуемых многими сложными сценариями, Keyman использует собственный движок вместо собственных файлов / технологий ОС (.klc / .dll или .keylayout), которые не поддерживают расширенные контекстно-зависимые функции. предлагаемые Keyman, которые требуются так называемым "сложным" языкам / системам письма (в основном это скрипты Южной Азии, такие как Индия и Тибет), которые часто должны переупорядочивать символы или выбирать символы динамически на основе окружающего текста и по-прежнему разрешать редактирование после того, как последовательность завершена без необходимости повторного ввода всей последовательности). KMFL должен быть установлен и использован в системах * nix для компиляции клавиатуры из исходного файла Keyman. (KMFL - это порт / перезапись движка Keyman).
Движок Keyman (или его эквивалент) кажется довольно эффективным и требует немного ресурсов, а также достаточно зрелым и стабильным, работает без сбоев и надежностей.
Хотя большинство различных поддерживаемых платформ и форматов, поддерживаемых Keyman, имеют какие-то присущие или технические ограничения (о которых я говорил ранее, например, уникальные клавиши-модификаторы), или их разработка все еще продолжается, что может ограничивать работу / работу определенных функций (полностью ) реализовано. Keyman позволяет настраивать и оптимизировать функции, уникальные для каждой платформы, для включения / кодирования, чтобы помочь смягчить эти проблемы / различия.
Как я уже упоминал, все продукты Keyman были недавно переведены с коммерческого на открытый исходный код в результате приобретения SIL проекта Keyman у его первоначального владельца: Tavultesoft. SIL имеет доступ к ресурсам, чтобы поддержать его дальнейшее развитие первоначальным разработчиком с добавлением некоторого персонала поддержки и пользовательского форума.
В зависимости от сложности системы языка / письма, для поддержки которой предназначена клавиатура, может быть возможным завершить проект, используя только те функции, которые поддерживаются графическим интерфейсом Keyman. Тем не менее, более сложные функции, такие как «мертвые» клавиши, контекстное переупорядочение и подстановка, требуют использования языка описания клавиатуры Keyman (язык кодирования / написания сценариев), который имеет довольно крутую кривую обучения для типичного конечного пользователя.
Этот язык описания является очень гибким и расширяемым, что позволяет выполнять сложную обработку и обработку текста, включая нормализацию Юникода, контекстное переупорядочение глифов и подстановку. Он также предлагает функции, которые больше соответствуют подходящему "методу ввода" (т.е. он включает в себя некоторые основные графические наложенные элементы / окна), такие как автоматические или всплывающие списки возможных нажатий.
Он также предлагает уникальную и удобную функцию использования повторяющихся нажатий / нажатия клавиши для циклического перемещения по циклическому списку выходов. Мне особенно нравится эта функция! Хотя вы можете хранить длинный список символов в одной клавише, я считаю более практичным и полезным иметь максимум 2-5. Я использую его на клавишах-скобках для обеспечения доступа к некоторым необычным скобкам, используемым используемым мной языком сценариев, а также к другим клавишам символов для доступа к не часто используемым символам. Это здорово, потому что мне не нужно запоминать конкретную комбинацию модификаторов, я просто нажимаю клавишу до тех пор, пока не будет напечатан нужный символ, если я случайно пропущу его, я просто продолжаю нажимать, пока он не вернется. Он также может быть настроен на автоматические замены, аналогичные тому, как работает "Создать ключ"; подставляя + - для ±, и - + для ∓ и аналогичные последовательности для таких символов, как ≤ ≰ ⪇ ≦ ≨ ≮ ≲ ≠ и так далее.
Как я уже говорил выше, язык, используемый для создания расширенных функций, кажется мне не совсем идеальным и интуитивно понятным. Я также обнаружил, что некоторая документация по синтаксису и «словарному запасу» этого языка описания клавиатуры является несколько расплывчатой, двусмысленной или запутанной и нуждается в дополнении, расширении или улучшении. Однако, это, кажется, улучшается и все еще развивается.
Форум пользователей, кажется, не очень активен (там не так много!), Хотя ответы на вопросы, кажется, выкладываются быстро.
Что еще более важно, IMO, сам язык кажется громоздким, чрезмерно / излишне сложным и немного нелогичным для меня относительно того, как некоторые виды использования / функции должны быть отмечены / описаны в коде - но я не разработчик / кодер, поэтому мой оценка должна рассматриваться в этом контексте и «взята с долей соли». Я обнаружил, что разработчики кажутся достаточно открытыми, чтобы рассматривать и оценивать запросы функций, предложения и отзывы о программном обеспечении, языке сценариев, а также документации.
К счастью, Keyman уже поддерживает более 1000 языков, и исходные файлы / код для них можно наблюдать, изучать, изменять и даже копировать для вставки и повторного использования в ваших собственных проектах.
Можно создавать различные типы файлов и пакетов, начиная с различных типов исходных файлов и заканчивая полностью автоматизированными установочными пакетами, содержащими механизм Keyman, значки и даже шрифты, и, конечно же, файлы раскладки клавиатуры и файлы обработки текста. Вы даже можете создавать настраиваемые, настраиваемые пользователем параметры, которые активируют различные варианты поведения на клавиатуре.
К сожалению, у Keyman нет возможности, по крайней мере, импортировать форматы раскладки клавиатуры операционной системы. Это было бы действительно полезно и потрясающе!
Это открытый исходный код, поэтому кто-то с навыками, мотивацией и временем может начать работать над этим. Также возможно, с достаточным количеством запросов и комментариев к их форуму, убедить их разработчиков, что они должны работать над этим.
Такой проект также может быть хорошим кандидатом, чтобы отправиться на поиски недорогого внештатного кодера, ищущего работу за рубежом.
К сожалению, многие функции Keyman просто не поддерживаются API-интерфейсами раскладки / ввода клавиатуры Windows и MacOS, поэтому просто невозможно попытаться заставить Keyman сгенерировать собственные файлы раскладки клавиатуры.
~~~~~~ Изменение вывода / функции любых клавиш, которые не воспроизводят текст (то есть: клавиши-модификаторы / клавиши управления, функциональные клавиши, клавиши мультимедиа, клавиши редактирования (вверх, вниз, backspace и т.д.) И т.д.) не рассматривается как часть раскладки клавиатуры в большинстве операционных систем и вообще не поддерживается Windows. MacOS предоставляет способ переназначения клавиш-модификаторов на панели управления «Клавиатура», и существуют различные инструменты для различных разновидностей * nix, которые позволяют выполнять аналогичные, часто более широкие настройки.
Существует сторонний инструмент для Windows под названием KbdEdit, который фактически генерирует стандартные файлы klc и пакеты установщика DLL для Windows. KbdEdit очень похоже на то, как я представляю, каким должен быть MSKLC ... Довольно мощный и достаточно гибкий, чтобы иметь возможность делать что угодно, включая создание очень сложных раскладок клавиатуры с зацепленными цепями ... Он также имеет возможность переназначить любую клавишу многочисленным непонятным v_keys, включая клавиши-модификаторы на японских / азиатских клавиатурах. Творческое, многоцелевое использование этих неясных клавиш-модификаторов может потенциально устранить разрыв между несоответствиями между операционными системами, о которых я упоминал ранее; но нет прямого или очевидного способа реализовать это. Я считаю, что клавиатура Windows может на самом деле иметь до 15 отдельных состояний / уровней / слоев клавиш Shift / Modifier! Одна из них (клавиша Kana) может быть блокируемой / переключаемой, как колпачок. Клавиатуры работают без какого-либо дополнительного или стороннего программного обеспечения. Но, конечно, не существует инструмента для их переноса на Mac или Linux.
Karabiner - самый близкий аналог MacOS, хотя он имеет совершенно другую предпосылку и не имеет непосредственного отношения к раскладке клавиатуры как таковой; хотя он имеет родной язык на основе xml, который позволяет создавать настраиваемые клавиши-модификаторы и поведение клавиш (например, когда клавиша-модификатор выводит символ, если нажать его отдельно и не использовать в качестве модификатора и т. д.). Хотя для того, чтобы пользовательский модификатор был полезен, все возможные желаемые результаты должны быть запрограммированы вручную с использованием языка, специально не предназначенного для этой цели. Но он чрезвычайно универсален и мощен, и может выполнять довольно крутые трюки и функции низкого уровня. Это также бесплатно!
Ukelele - это бесплатный инструмент для MacOS, который генерирует файлы раскладки и пакеты клавиатуры. Он имеет гораздо более мощный и интуитивно понятный интерфейс, чем MSKLC, и очень полезный форум, часто посещаемый разработчиком. Он также принадлежит SIL, но не с открытым исходным кодом. Было бы неплохо увидеть некоторую интеграцию графического интерфейса Ukelele с пакетом Keyman Developer; для создания мертвых ключей, например. И, конечно же, он не может импортировать или экспортировать макеты с других платформ.