Существует ли программное обеспечение, которое одновременно генерирует раскладки клавиатуры для Macintosh, Windows и Linux(xkb)?
Редактировать: Насколько я понимаю, Microsoft Keyboard Layout Creator не поддерживает изменение клавиш-модификаторов (я читал, что, возможно, autohotkey может обойти эту проблему)
решение1
К сожалению, нет программного инструмента или пакета, который мог бы генерировать или транскодировать (портировать) собственные файлы раскладки клавиатуры основных настольных ОС (по крайней мере, не общедоступного). Такой инструмент был бы очень полезен всем тем, кто должен регулярно использовать несколько ОС, будь то на одной машине и клавиатуре или нет; что становится все более распространенным. Но ничего подобного не было разработано — и выпущено — до сих пор; и это не без причины. Существуют различные сложности, связанные с «портированием» клавиатур между ОС или попыткой поддержания точно синхронизированных раскладок клавиатуры на разных платформах. Одним из существенных препятствий является разница между «модификаторами»/командными клавишами, которые используются и/или распознаются различными операционными системами. Кроме того, у Mac есть уникальные физические клавиатуры с некоторыми клавишами, которые напрямую не соответствуют или не транслируются в другие ОС, что создает второй «слой» проблем и несоответствий, которые необходимо решить и преодолеть. По сути, на самом деле технически невозможно иметь идентично функционирующие раскладки клавиатуры на указанных вами платформах.
Однако,Разработчик Keyman— мощный сторонний программный инструмент для разработки раскладок клавиатуры и ввода текста, который, как мне кажется, максимально соответствует вашим требованиям. Насколько мне известно, это единственный инструмент такого типа, который доступен для общественности. Хотя стороннее программное обеспечение не идеально, я утверждаю, что, учитывая все, что оно может предложить, Keyman стоит рассмотреть — в зависимости от того, каковы именно ваши цели (и насколько сложны/уникальны ваши раскладки клавиатуры).
Пакет разработчика Keyman — это надежный инструмент, способный генерировать различные типы выходных файлов, включая установщики «все в одном», включая шрифты методов ввода/раскладки клавиатуры не только для любой относительно недавней версии настольных ОС Microsoft и Apple, но и для соответствующих мобильных платформ/устройств, а также платформ на базе *nix, включая Android. Это означает, что он также облегчает разработку экранных виртуальных клавиатур — ВСЕ с помощью одного интегрированного инструмента, редактируя один унифицированный файл проекта! КРОМЕ ТОГО, он недавно стал открытым и бесплатным! Я не думаю, что вы можете надеяться превзойти это... Для поддержки гибких, расширенных функций и возможностей, требуемых многими сложными скриптами, Keyman использует свой собственный движок вместо собственных файлов/технологий ОС (.klc/.dll или .keylayout), которые не поддерживают расширенные контекстно-зависимые функции, предлагаемые Keyman, которые требуются для так называемых «сложных» языков/систем письма (в основном это включает в себя скрипты Южной Азии, такие как Индия и Тибет, которые часто должны переупорядочивать символы или выбирать символы динамически на основе окружающего текста и при этом позволять редактирование после завершения последовательности без необходимости перепечатывать всю последовательность). КМФЛнеобходимо установить и использовать на системах на базе *nix для компиляции клавиатуры из исходного файла Keyman. (KMFL — это порт/переписанный движок Keyman).
Движок Keyman (или эквивалент) кажется довольно эффективным и требует мало ресурсов, а также он достаточно зрелый и кажется очень стабильным, работающим плавно и надежно, не вызывая проблем.
Хотя большинство различных поддерживаемых платформ и форматов, поддерживаемых Keyman, имеют некоторые присущие или технические ограничения (о которых я упоминал ранее, например, уникальные клавиши-модификаторы), или их разработка все еще продолжается, что может ограничить работу/(полную) реализацию определенных функций. Keyman позволяет настраивать и оптимизировать функции, уникальные для каждой платформы, которые будут включены/кодированы, чтобы помочь смягчить эти проблемы/различия.
Как я уже упоминал, все продукты Keyman недавно были переведены из коммерческой версии в версию с открытым исходным кодом в результатеСИЛприобретение проекта Keyman у его первоначального владельца: Tavultesoft. SIL имеет доступ к ресурсам для поддержки его дальнейшей разработки первоначальным разработчиком с добавлением некоторого персонала поддержки и форума пользователей.
В зависимости от сложности языка/системы письма, для поддержки которой разрабатывается клавиатура, возможно, удастся завершить проект, используя только функции, поддерживаемые графическим пользовательским интерфейсом Keyman. Однако более сложные функции, такие как мертвые клавиши, контекстное переупорядочивание и замена, требуют использования языка описания клавиатуры Keyman (язык кодирования/скриптинга), который имеет довольно крутую кривую обучения для типичного конечного пользователя.
Этот язык описания очень гибкий и расширяемый, что позволяет выполнять сложную обработку и обработку текста, включая нормализацию Unicode, контекстное переупорядочивание глифов и замену. Он также предлагает функции, которые больше соответствуют надлежащему «методу ввода» (то есть включают некоторые базовые графические элементы/окна наложения), такие как автоматические или всплывающие списки возможных выходов, вызываемые нажатием и удержанием. Он также предлагает уникальную и удобную функцию использования повторных нажатий клавиш/нажатия клавиши для циклического перехода по списку выходов. Мне особенно нравится эта функция! Хотя вы можете хранить длинный список символов на одной клавише, я считаю более практичным и полезным иметь максимум 2-5. Я использую его на клавишах скобок, чтобы обеспечить доступ к некоторым необычным скобкам, используемым языком сценариев, который я использую, а также на других клавишах символов для доступа к нечасто используемым символам. Это здорово, потому что мне не нужно запоминать определенную комбинацию модификаторов, я просто нажимаю клавишу, пока не будет напечатан нужный мне символ, если я случайно его пропущу, я просто продолжаю нажимать, пока он не появится снова. Его также можно настроить на автоматическую замену, похожую на то, как работает «Compose Key»; замена +- на ± и -+ на ∓ и аналогичные последовательности для символов, таких как ≤ ≰ ⪇ ≦ ≨ ≮ ≲ ≠ и так далее.
Как я уже говорил выше, язык, используемый для создания расширенных функций, кажется мне неидеальным и неинтуитивным. Я также обнаружил некоторые издокументациядля синтаксиса и «словаря» этого языка описания клавиатуры, которые несколько неопределенны, двусмысленны или запутанны и нуждаются в дополнении, расширении или улучшении. Однако, это, кажется, улучшается и все еще разрабатывается. Форум пользователей, кажется, не очень активен (там не так много!), хотя ответы на вопросы, кажется, публикуются быстро.
Еще важнее, на мой взгляд, сам язык кажется громоздким, чрезмерно/излишне сложным и немного нелогичным для меня в том, как определенные использования/функции должны быть отмечены/описаны в коде —ноЯ не разработчик/программист, поэтому мою оценку следует рассматривать в этом контексте.«принято с долей скепсиса»Я обнаружил, что разработчики, по-видимому, довольно открыты для рассмотрения и оценки запросов на новые функции, предложений и отзывов о программном обеспечении, языке сценариев, а также документации.
К счастью, 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/модификаторов! Одна из них (клавиша Kana) может быть заблокирована/переключаема, как Caps Lock. Клавиатуры работают без какого-либо дополнительного или стороннего программного обеспечения. Но, конечно, нет инструмента для их переноса на Mac или Linux.
Карабинявляется ближайшим аналогом MacOS, хотя у него совершенно другая предпосылка и он на самом деле не имеет ничего общего с раскладками клавиатуры как таковыми; хотя у него есть собственный язык на основе XML, который позволяет создавать пользовательские клавиши-модификаторы и поведение клавиш (например, чтобы клавиша-модификатор выводила символ, если ее нажать отдельно и не использовать как модификатор, и так далее). Хотя для того, чтобы пользовательский модификатор был полезен, все возможные желаемые выходные данные должны быть запрограммированы вручную с использованием языка, специально не предназначенного для этой цели. Но он чрезвычайно универсален и мощен, и он может делать некоторые довольно крутые низкоуровневые трюки и функции. Он также бесплатный!
Укулелебесплатный инструмент для MacOS, который генерирует собственные файлы раскладок клавиатуры и пакеты. Он имеет гораздо более мощный и интуитивно понятный интерфейс, чем MSKLC, и очень полезный форум, который часто посещают разработчики. Он также принадлежит SIL, хотя и не с открытым исходным кодом. Было бы неплохо увидеть некоторую интеграцию графического интерфейса Ukelele в пакет Keyman Developer; например, для создания мертвых клавиш. И, конечно, он не может импортировать или экспортировать раскладки с других платформ.
решение2
Да, и это довольно прямолинейно.
ОС Mac В Mac OS все уже встроено, можно найти простые и пошаговые инструкции.здесь
Окна Microsoft предлагает собственный список инструкций здесь: http://msdn.microsoft.com/en-us/goglobal/bb964665.aspx
Линукс Создание пользовательской раскладки клавиатуры Linux с помощьюхкб.
Похожий вопрос однажды был задан на StackOverflow: https://stackoverflow.com/questions/826986/how-to-make-a-custom-keyboard-layout