如何在Windows中添加新的修改键?

9
据我所知,“Shift”、“Alt”和“Control”这些概念从键盘本身到操作系统API都被硬编码了。有时候,我会看到Windows键被用作修饰键,但它似乎并不像键盘上的其他键那样被注册为“真正”的修饰键。
但是一个人能否添加新的修饰键呢?也许这是为了使太空飞行员键盘重生而做出的疯狂尝试?除了物理修改键盘(或者只是重新映射一些未使用的键),还需要什么?新的驱动程序?新的API调用?完全重写操作系统?
我想,在开源操作系统上,这种事情可能比在Windows上容易得多,对吗?
4个回答

5

如果键盘和鼠标有一个标准,那么就不需要特殊的驱动程序或操作系统补丁就可以使它们“工作”。但这意味着键盘和鼠标本身必须进行标准化,以使它们“只需工作”。

因此,如果您想要在键盘上添加额外的按键 - 无论它是修改键还是其他类型的键 - 您必须使其有用,这意味着应用程序需要知道它,并且它们需要一种方法来通知该按键的状态。幸运的是,Windows和其他操作系统(开源或非开源)提供了可扩展且标准的机制:驱动程序

简而言之,您需要提供一个驱动程序来扩展标准键盘的功能,就像您需要驱动程序一样,如果您购买了那些带有19个特殊按钮和3个滚轮而不是标准两三个按钮和一个滚轮的花哨鼠标。

最后,您需要的是能够识别您特殊键盘的应用程序。毕竟,如果您的应用程序对其超能力一无所知,那么这个改装过的键盘有什么用处呢?您唯一能够做的就是创建包含您特殊修改键的热键...


5
我很好奇您的原因。您是否真的希望在日常电脑使用中充分利用并整合使用额外的修饰键?如果是这样,您打算如何使用?(这只是我的好奇心; 我对导致您提出此问题的原因或事件感到着迷!并且我将解释原因。)首先,让我声明,我无法完全回答您所问的问题(添加修饰符到操作系统需要什么),除了说它需要比任何个人都能完成的更多工作 - 即使在几年内(除非是一些真正的计算机天才); 但根据您提出问题的原因,我可以向您展示它可能不需要为您的目的(尽管这显然是推测)。实际上,技术上存在更多的修饰符,但它们几乎没有记录,并且很少使用。
我已经玩弄这个问题有一段时间了。我的第一个有意义的个人电脑使用体验是在 Mac 的早期。Mac 一直至少有两个真正的“字符”修饰键,以及两个“命令”修饰键。我认为这种区别很重要,尽管它通常并没有被明确解释或提到。在现代时代,Mac 可以功能性地拥有最多达五个修改键;尽管对于各种目的如何有效利用这些键存在一些限制。*nix 操作系统可以支持高达8个修改键。但是,如果想要使用现代键盘,需要进行一些重新映射。

然而,大多数个人电脑都是基于 Windows 的,在关键时刻,Windows 真的只支持一个真正的字符修饰键:Shift。这对我来说是绝对不能接受的状态!为什么?因为我需要输入的字符比那多得多!

因为我对外语、语言学、语音和书写系统有着浓厚的兴趣和背景。我需要能够键入比Windows支持的更多字符和符号(不要过于困难)。虽然这主要是为了娱乐,所以并不紧急。而且当我需要创建/编辑包含除英语以外的任何语言的文档时,我已经能够访问Mac了。
因此,在Windows中,Alt键在内部被称为菜单键,因为它最初用于访问和导航应用程序的命令菜单,在Windows采用鼠标之前的日子里。而且它仍然在这个容量中起作用。从技术上讲,只有与控制键结合使用时,它才能作为修改键。ISO键盘(欧洲/外国键盘)通常有一个称为AltGr的键,而非“右边”的Alt键;它代表“替代图形”,用于通过使整个键盘的另一层或两层可访问,将其他语言所需的附加符号和重音字母映射到“常规”键盘上,有效地将可以输入的字符数翻倍(甚至翻三倍或四倍)。从技术上讲,AltGr键只是触发打字员手指便利的Alt和Control键同时按下的一个键。
你其实并不需要一个ISO键盘来使用AltGr并访问这些附加字符;但是,它们会使事情变得更容易,因为它们通常在键上打印每个键可以生成的字符,就像我们一样。你真正需要做的就是激活其中一种语言的键盘布局(这些语言内置于所有Windows版本中)。你可能需要打印出所选择的键盘的图示,或者制作贴纸,直到您学会输入所需的所有符号。
顺便说一下,Windows键是一个完全成熟的修改键,但其使用受限制,由Microsoft根据他们的意愿进行委派。(实际上,他们将使用数字的组合指定为OEM系统中的自由游戏)。它在硬件级别上被设计为修饰键。
大多数键盘所支持的技术通常对于键盘的标准使用(通常不包括游戏)例如打字、输入文本/数据、研究等完全有效。但是,为了节约成本和简化操作,它们被设计为可以同时按下并识别至少一个或两个其他键的修饰符键。然而,如果您尝试将修饰符移动到键盘上的其他键,并仍希望触发“弦式”热键(同时按下2、3或更多个键),则很快会遇到问题,因为这些键没有被设计并赋予硬件作为修饰符键的功能。Windows键-即使在Windows中没有以那种方式使用它(到目前为止);它具有技术要求。
此外,Windows键盘可以插入Mac中并且可以正常工作。Windows键对应于Apple Command键;它被大多数应用程序广泛使用来触发复杂的热键/键盘快捷键-并且可以无问题地执行此操作。
因此,尽管另一个回答中声称,"添加额外的键"-或者多个键到您的键盘实际上要容易得多。无需自定义驱动程序,甚至只需要内置的OS驱动程序。您需要做的就是将该键指定为各种外国键盘上发现的少数几个附加键之一(并被Windows本地识别)。
有三种显著的键盘类型:ANSI(美国)、ISO(欧洲)和JIS(日本);另一个常见的变体是巴西键盘;通常称为Abnt(实际上是指这些键盘上发现的额外键的基础“名称”:VK_ABNT_C1和C2)。
从技术上讲,ISO键盘上有一两个独特的键(称为VK_OEM_8和VK_OEM_102)。日语键盘可以有超过8个附加键;然而,它们通常有5-6个附加键,其中两个是用于将键盘上的几十个按键转换为几千个复杂表意文字的各种方法中使用的特殊键。另一个是MODIFIER键!韩语键盘也有它。它的工作方式类似于CapsLock,但不是切换到大写字母,而是切换到韩文字母表或日语假名(因为据我所知,所有计算机仍需要能够输入拉丁文的键盘以进行密码等)。但是,对于经常切换书写系统的用户来说,不断切换键盘布局变得非常繁琐和沮丧。因此,他们通过锁定修改键解决了这个问题,该键通常具有LED灯,就像CapsLock一样,提供简单,即时的视觉提示,以指示将产生哪种书写系统。
另一种日本键盘是专门为了打字方便和快速而开发的。虽然它从未真正流行起来(在80年代和90年代出现了很多不同的想法和模型,之前没有统一标准),但这个富士通键盘仍然受到作家和需要大量使用日文文本的人们的喜爱。

它的特殊之处在于它有3个大型按键取代了空格键,只有中间较小的键才会产生空格,其他两个是“拇指修饰键”,非常方便使用,无需手指技巧; 它们甚至可以与shift键相结合,提供一个额外的可输入字符的大型库存。从技术上讲,Windows也支持这两个修饰符!尽管支持有限,文档几乎不存在(至少在日本以外)。

然而,如果您重新映射和重新定制键盘上的一些键-尤其是如果您有带数字键的完整键盘,仍然可以以各种方式利用这些按键。

在Windows中,实际上可以有多达15个层级的键盘(包括基础层),每个层级需要通过唯一的组合修饰键来激活。实际上,有48种有效组合,包括shift,control,Alt-Control,kana,loya和roya;因此无法使用理论上的可能性。
我一直在使用我开发的特殊键盘布局,它使用所有这些键并具有15个层级,使我能够轻松地用拉丁字母组成任何语言的文本(包括任何带重音或修改的字母),以及国际音标(IPA),该音标用于准确地记录地球上任何语言或方言的书面形式。我还有专门用于输入埃塞俄比亚语的几个层级(我小时候在那里生活);此外,我还有用于基本希腊语、希伯来语和阿拉伯语的层级,以及用于符号的层级。此外,我还将许多deadkey编程到我的键盘中——这对于带重音的字母非常理想(首先按下特定重音标记的键,但在下一个(或有时3-5个)键被按下之前不会发生任何事情(如果死键“链接”起来将几个标记添加到单个字母中,例如越南语就会极端化);当输入实际字母时,如果可能的话,所有这些重音或标记都将叠加/应用到字母上。

你需要什么才能实现这个?

一个名为KbdEdit的小软件(高级版),价格非常合理(依我之见)。

当然,你可以免费试用它的试用版;该网站充满了有用、迷人且常常不为人知的键盘信息。

还有其他(免费)软件可让您做各种事情,包括更自由地利用所有修饰键以便实现几乎任何目的。这个软件叫AutoHotKey。我已经使用它多年来完成各种巧妙的事情(它实际上是我重新映射键盘以获得3个额外修饰键的系统的一部分,它让我“双重使用”键,以便我不会失去功能。例如,我已经物理重新映射了两个日语拇指修饰键到我的Alt键。我从不使用Alt键来访问Windows应用程序中的菜单;但是,我使用的软件确实利用了包含Alt的键盘快捷键。然而,您可能还记得,除了导航菜单之外,必须始终使用Control才能执行任何操作。因此,在我的自定义键盘布局中,我没有使用任何控制和拇指修饰键的组合(这没有造成任何挑战)。我已经配置AutoHotKey将同时按下Control和任一拇指修饰键转换为“control-alt”,如果我碰巧只需要Alt本身,按下Windows + 任一拇指修饰键就会将其转换为Alt(因为我从未遇到过需要同时使用Windows和Alt的快捷键而没有冲突的情况。

我也非常讨厌我的笔记本电脑上的触摸板;尝试使用滚动功能是不可预测和令人恼火的;此外,它无法产生我广泛使用的中键单击。因此,我重新利用了那个没有人使用的键来打开“上下文菜单”(因为只需“右键单击”即可打开该菜单,所以这更容易),通常称为“应用程序键”。如果我按住它(就像自定义修饰符一样),它会将箭头键转换为滚轮移动(在上下或左右轴中),并将空格键敲击转换为中键单击。我还有一些功能或按钮编程,可以通过我能够轻松触及的所有其他键触发,同时保持“仿制”的自定义修饰符。我能够通过模拟我的小型笔记本电脑没有的媒体键来控制我的媒体应用程序,以及许多其他很酷的事情。 AutoHotKey可能能够适应您想要添加额外修饰符键的大多数原因,而无需经历所有这些麻烦!

2
非常感谢您编辑和修正我的答案!我非常感激。 - AuralArch

0

Windows W32 API 定义了虚拟键码。它是8位的,提供256个值,并且表格中存在一些间隙。

WM_KEYDOWN 消息操作这些代码。

现代键盘可以检测到最多6个同时按下的键,但是有N-Key RolloverKey Ghosting问题,您应该注意。

.Net API仅公开Alt/Shift/Control作为修饰符。

简而言之 - 微软提供的许多核心API都依赖于Alt/Shift/Control作为修饰符,即使现代键盘允许在按键按下之外近5个同时修饰符。


0

我不确定您是否了解修饰键,但现在许多游戏键盘都配备了可编程键和按键宏,可以提供您需要的额外功能。

另一种可能性是,如果您熟悉 C++ 程序级别的编程,请使用 Windows Raw Input API 并插入第二个 USB 键盘,您的程序可以从完全不同的一组输入中读取输入。 https://learn.microsoft.com/en-us/windows/win32/inputdev/about-raw-input?redirectedfrom=MSDN

第三个选择可能是获取一个 Raspberry Pi 或 Arduino 将您的键盘插入其中,并将其编程为将特定键读取为您的附加修饰键并发送所需的输出(作为标准键盘输出)到您的 PC,而 Pi / Arduino 充当“中间人”并模拟键盘。也许您可以通过这种方式创建自己的太空军士键盘。

我认为带有可编程键的游戏键盘可能会以最低成本和最少时间实现您想要的功能......


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接