跨操作系统自定义键盘布局

跨操作系统自定义键盘布局

是否有任何软件可以同时生成 Macintosh、Windows 和 Linux(xkb)键盘布局?

编辑:据我所知,Microsoft Keyboard Layout Creator 不支持更改修饰键(我读到也许 autohotkey 可以解决这个问题)

答案1

不幸的是,没有软件工具或软件包能够生成或转码(移植)主要桌面操作系统的原生键盘布局文件(至少没有一个可供公众使用的)。这样的工具对于所有必须经常使用多个操作系统(无论是否在同一台机器和键盘上)的人来说非常有用;这种情况正变得越来越普遍。但到目前为止,还没有开发和发布过这样的工具;这并非毫无道理。在操作系统之间“移植”键盘或试图在不同平台上保持精确同步的键盘布局涉及各种复杂情况。其中一个重大障碍是不同操作系统使用和/或识别的“修饰符”/命令键之间的差异。此外,Mac 具有独特的物理键盘,其中一些键不直接对应或翻译到其他操作系统,从而产生了需要解决和克服的第二“层”问题和不一致问题。从本质上讲,实际上在技术上不可能在您指定的平台上拥有完全相同的键盘布局。

然而关键人物开发商是一款功能强大的第三方软件工具,用于键盘布局和文本输入开发,我认为它能够尽可能地满足您的要求。据我所知,它是同类工具中唯一一款可供公众使用的工具。虽然第三方软件并不理想,但我认为,考虑到它提供的所有功能,Keyman 值得考虑——具体取决于您的目标是什么(以及您的键盘布局有多复杂/独特)。

Keyman 的开发者包是一款功能强大的工具,能够生成各种类型的输出文件,包括一体化安装程序,其中包含输入法/键盘布局的字体,不仅适用于任何较新版本的 Microsoft 和 Apple 桌面操作系统,还适用于各自的移动平台/设备,以及基于 *nix 的平台(包括 Android)。这意味着它还促进了屏幕虚拟键盘的开发——所有这些都使用一个集成工具,编辑一个统一的项目文件!此外,它最近已开源并免费!我认为你无法超越这一点...为了支持许多复杂脚本所需的灵活、高级功能和特性,Keyman 使用自己的引擎,而不是 OS 原生文件/技术 (.klc/.dll 或 .keylayout),后者不支持 Keyman 提供的高级上下文相关功能,而这些功能是所谓的“复杂”语言/书写系统所必需的(主要包括印度和西藏等南亚脚本,这些脚本必须经常重新排序字符或根据周围的文本动态选择字符,并且在序列完成后仍允许编辑,而无需重新输入整个序列)。 韩国传统服装必须在基于 *nix 的系统上安装和使用,以便从 Keyman 源文件编译键盘。(KMFL 是 Keyman 引擎的移植/重写)。Keyman
引擎(或等效引擎)似乎非常高效,只需要很少的资源,而且它还相当成熟,似乎非常稳定,运行平稳可靠,不会造成问题。

尽管 Keyman 支持的各种平台和格式中的大多数都存在某种固有或技术限制(我之前提到过,例如独特的修饰键),或者它们的开发仍在进行中,这可能会限制某些功能的运行/(完全)实现。Keyman 允许对每个平台独有的功能进行自定义和优化,以包括/编码,以帮助缓解这些问题/差异。

正如我所提到的,由于南澳大利亚州从其原所有者 Tavultesoft 手中收购 Keyman 项目。SIL 可以使用资源来支持原开发者继续开发该项目,并增加一些支持人员和用户论坛。

根据键盘设计所支持的语言/书写系统的复杂程度,仅使用 Keyman 图形用户界面支持的功能可能就能完成项目。但是,死键、上下文重新排序和替换等更复杂的功能需要使用 Keyman 的键盘描述语言(一种编码/脚本语言),而对于典型的最终用户来说,这种语言的学习难度相当大。

这种描述语言非常灵活且可扩展,允许进行复杂的文本处理和处理,包括 Unicode 规范化、基于上下文的字形重新排序和替换。它还提供更符合正确“输入法”的功能(这意味着它包括一些基本的图形覆盖元素/窗口),例如自动或按住弹出可能输出的列表。它还提供了一个独特而方便的功能,即使用重复击键/点击某个键来循环显示循环输出列表。我特别喜欢这个功能!虽然您可以在一个键中存储一长串字符,但我发现最多有 2-5 个字符更实用、更有用。我在括号键上使用它来访问我使用的脚本语言使用的一些不常见的括号,以及在其他符号键上使用它来访问不常用的符号。这很棒,因为我不必记住特定的修饰符组合,我只需点击该键直到打印出我想要的字符,如果我不小心错过了它,我只需继续点击直到它回来。它还可以设置为进行类似于“撰写键”工作方式的自动替换;用 +- 代替 ±,用 -+ 代替 ∓,以及用类似的字符序列代替如 ≤ ≰ ⪇ ≦ ≨ ≮ ≲ ≠ 等等。

正如我上面提到的,用于创建高级功能的语言对我来说似乎不太理想和直观。我还发现一些文档这种键盘描述语言的语法和“词汇”有些模糊、含糊或令人困惑,需要增强、扩展或改进。然而,这似乎正在改进,并且仍在开发中。用户论坛似乎不太活跃(那里没有太多内容!),尽管对问题的回答似乎确实发布得很快。
更重要的是,在我看来,语言本身感觉很麻烦,过于/不必要地复杂,而且对于某些用法/功能必须在代码中标注/描述的方式,我感觉有点违反直觉——我不是开发人员/程序员,因此我的评估应该在这种背景下考虑,“持怀疑态度”。我发现开发人员似乎相当开放地考虑和评估有关软件、脚本语言以及文档的功能请求、建议和反馈。

幸运的是,Keyman 已经支持超过 1,000 种语言,并且可以观察、研究、修改甚至复制这些语言的源文件/代码,并将其插入和回收到您自己的项目中。

可以生成多种不同类型的文件和包,从各种类型的源文件到包含 Keyman 引擎、图标、字体以及键盘布局和文本处理文件的全自动安装程序包。您甚至可以创建自定义的、用户可切换的设置,以激活键盘中的不同行为。

不幸的是,Keyman 至少没有能力导入操作系统原生的键盘布局格式。这真的会非常有帮助,非常棒!不过它是开源的,所以有技能、有动力和有时间的人可以开始研究它。如果论坛上有足够多的请求和评论,他们也许可以说服开发人员研究这个问题。
这样的项目也可能是外包给想在国外工作的廉价自由程序员的好选择。不幸的是,Windows 和 MacOS 的键盘布局/输入 API 根本不支持 Keyman 的许多功能,因此尝试让 Keyman 生成原生键盘布局文件是不可能的。

~~~~~~ 更改任何不产生文本的键的输出/功能(即:修改键/命令键、功能键、媒体键、编辑键(向上、向下、退格等)等)不被大多数操作系统视为键盘布局的一部分,并且 Windows 根本不支持它。 MacOS 提供了一种在键盘控制面板中重新分配修改键的方法,并且有各种适用于不同版本 *nix 的工具,允许进行类似且通常更广泛的自定义。
Windows 有一个第三方工具,称为Kbd编辑它实际上会为 Windows 生成标准 klc 文件和 DLL 安装程序包。KbdEdit 非常像我想象中的 MSKLC 应该是什么样子... 功能强大且足够灵活,几乎可以做任何事情 - 包括使用链接死键创建非常复杂的键盘布局... 它还能够将任何键重新分配给许多模糊的 v_keys,其中包括日语/亚洲键盘上的修饰键。创造性地重新使用这些模糊的修饰键可能会弥合我之前提到的操作系统之间的差异;但没有直接或明显的方法来实现这一点。我相信 Windows 键盘实际上在技术上可以有多达 15 个单独的 shift/修饰键状态/级别/层!其中之一(假名键)可以锁定/切换 - 就像大写锁定一样。键盘无需任何额外或第三方软件即可工作。但当然没有工具将它们移植到 Mac 或 Linux。

登山扣是最接近 MacOS 的模拟,尽管它有一个完全不同的前提,并且实际上与键盘布局本身没有任何直接关系;尽管它有一种基于 xml 的本机语言,可以创建自定义修饰键和按键行为(例如,如果单独点击修饰键而不将其用作修饰键,则修饰键会输出一个字符,等等)。尽管要使自定义修饰键有用,必须使用并非专门为此目的设计的语言手动编程所有可能的期望输出。但它非常灵活和强大,它可以做一些非常酷的低级技巧和功能。它也是免费的!

尤克里里是一款免费的 MacOS 工具,可生成原生键盘布局文件和包。它的界面比 MSKLC 更强大、更直观,并且有一个开发者经常访问的非常有用的论坛。它也归 SIL 所有,尽管不是开源的。如果能将 Ukelele 的 GUI 集成到 Keyman Developer 包中,那就太好了;例如,用于创建死键。当然,它不能从其他平台导入或导出布局。

答案2

是的,非常简单。

苹果系统 在 Mac OS 上,所有内容均可轻松找到,并可找到简单的分步说明这里

视窗 微软在这里提供了自己的指令列表: http://msdn.microsoft.com/en-us/goglobal/bb964665.aspx

Linux 创建自定义 Linux 键盘布局陳小嶺

StackOverflow 上也曾有人问过类似的问题: https://stackoverflow.com/questions/826986/how-to-make-a-custom-keyboard-layout

相关内容