Windows 10 下的 MSKLC:创建自定义键盘布局,支持中文 IME(输入法)和西班牙文组合输入

Posted

技术标签:

【中文标题】Windows 10 下的 MSKLC:创建自定义键盘布局,支持中文 IME(输入法)和西班牙文组合输入【英文标题】:MSKLC under Windows 10: Create custom keyboard layout which supports IME (input method) for Chinese and combined input in Spanish 【发布时间】:2017-10-22 16:04:36 【问题描述】:

这个问题最初是我在微软社区发布的:

https://answers.microsoft.com/en-us/windows/forum/windows_10-other_settings/msklc-under-windows-10-create-custom-keyboard/8c5a7137-d575-4247-8ab3-b4dd1e5fb437?tm=1495318604424

总之:我在 Windows 10 中使用 Microsoft Keyboard Layout Creator 1.4 创建了一个自定义键盘布局,它可以正常工作,但只是部分工作。它不能:

将两个击键组合成一个以键入“组合字母”,例如“¨”+“u” = “ü”。中文不应该存在,但我想实现这个。

输入中文拼音和中文标点符号。在 MS 拼音输入法中,我可以按 shift 在中文拼音模式和英文模式之间切换。在拼音模式下,我可以将字母转换成拼音,从而得到汉字,但我的布局缺少这个。而且,如果我在拼音模式下按微软拼音中的“,”,它应该给我“,”(全长逗号),但这种布局无法做到这一点。

我正在考虑两种方法来解决这个问题:

将微软拼音的键盘布局替换为我的布局(用我的布局替换微软拼音的英文部分)

将MS拼音的拼音部分复制到我的布局中。

那么,我该如何解决呢?

【问题讨论】:

【参考方案1】:

我已经解决了。

对于第一个问题,您必须定义一些“死键组合”。详细说明如下:

http://www.angelfire.com/planet/linguisticsisfun/Creating_a_Keyboard_Using_MSKLC.pdf

对于第二个问题,基本上你是这样做的:

    创建您的键盘布局。

    使用文本编辑器编辑 .klc 文件,以更改 VK 代码映射。这是因为 Microsoft Windows 中的大多数应用程序在您按下热键时会检测到发送到操作系统的 VK 代码,而不是“键字符”(您在文本处理软件中键入时输出的字符)。因此,为了使键盘布局的键字符与其 VK 代码匹配,您必须手动执行此操作。 MSKLC 不会为您改变这一点。这里有一些细节:

http://www.sensefulsolutions.com/2010/08/how-to-fix-keyboard-shortcuts-in-klc-eg.html

    安装布局。

    打开您的注册表编辑器,输入HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\,在底部找到您的新键盘布局(我的名称类似于a0000xxxx)。复制dll 文件名。那是包含您新创建的键盘布局信息的 DLL 文件。

    返回注册表的父分支,搜索您要应用此布局的语言,如中文或西班牙语。您会发现几个名称相似的变体,但描述是不言自明的,可以帮助您区分它们。

    简体中文使用KBDUS.dll,意思是“美式键盘的键盘布局”。这也适用于 MS 拼音。将此值更改为您复制的 DLL 名称,以便下次操作系统启动时加载您的 DLL。

    重启。

结果:

    我可以使用 Microsoft Pinyin 和我的自定义键盘布局键入英文和中文拼音,我可以使用 ,. 导航下一页/上一页。 使用这种键盘布局,我可以在不切换到西班牙语键盘的情况下输入西班牙语特殊字符,例如 ïáçñ。 任何软件中的热键都可以按预期工作,因为现在 VK 代码与键上打印的字母匹配。

【讨论】:

另外需要注意的是,dll 文件在机器之间不兼容,甚至在两台 Win 10 机器之间也不兼容。我认为这是由于每台计算机中的编译组件不同;需要在每台机器上编译打包.klc文件生成dll 非常感谢您提供有关 VK 代码的详细信息!我花了大量时间调查我的系统,以找出为什么我的一些快捷方式无法与我的自定义布局一起使用,现在一切都变得有意义了 :) 实际上它们在所有情况下都没有意义。不同的应用程序有自己的规则映射热键,它们通常只基于 QWERTY,因为它真的很复杂。 死键有什么用?把你改成ü?为什么不使用 ALT GR? @life-on-mars 抱歉,我想说“定义一个死键组合”。是的,在这个组合中,我使用 Alt-Gr + "¨" + 字母。

以上是关于Windows 10 下的 MSKLC:创建自定义键盘布局,支持中文 IME(输入法)和西班牙文组合输入的主要内容,如果未能解决你的问题,请参考以下文章

Windows10下自定义桌面快捷方式图标--以Spyder为例

Windows10下自定义桌面快捷方式图标--以Spyder为例

Windows下的Jupyter Notebook 安装与自定义启动

在自定义视图中显示会员下的订单(显示注册会员)?

delphi 10.2 创建并使用资源文件(一共22种格式,RCDATA是自定义格式)

C# WinForm自定义进度条