但是一个人能否添加新的修饰键呢?也许这是为了使太空飞行员键盘重生而做出的疯狂尝试?除了物理修改键盘(或者只是重新映射一些未使用的键),还需要什么?新的驱动程序?新的API调用?完全重写操作系统?
我想,在开源操作系统上,这种事情可能比在Windows上容易得多,对吗?
如果键盘和鼠标有一个标准,那么就不需要特殊的驱动程序或操作系统补丁就可以使它们“工作”。但这意味着键盘和鼠标本身必须进行标准化,以使它们“只需工作”。
因此,如果您想要在键盘上添加额外的按键 - 无论它是修改键还是其他类型的键 - 您必须使其有用,这意味着应用程序需要知道它,并且它们需要一种方法来通知该按键的状态。幸运的是,Windows和其他操作系统(开源或非开源)提供了可扩展且标准的机制:驱动程序。
简而言之,您需要提供一个驱动程序来扩展标准键盘的功能,就像您需要驱动程序一样,如果您购买了那些带有19个特殊按钮和3个滚轮而不是标准两三个按钮和一个滚轮的花哨鼠标。
最后,您需要的是能够识别您特殊键盘的应用程序。毕竟,如果您的应用程序对其超能力一无所知,那么这个改装过的键盘有什么用处呢?您唯一能够做的就是创建包含您特殊修改键的热键...
然而,大多数个人电脑都是基于 Windows 的,在关键时刻,Windows 真的只支持一个真正的字符修饰键:Shift。这对我来说是绝对不能接受的状态!为什么?因为我需要输入的字符比那多得多!
因为我对外语、语言学、语音和书写系统有着浓厚的兴趣和背景。我需要能够键入比Windows支持的更多字符和符号(不要过于困难)。虽然这主要是为了娱乐,所以并不紧急。而且当我需要创建/编辑包含除英语以外的任何语言的文档时,我已经能够访问Mac了。它的特殊之处在于它有3个大型按键取代了空格键,只有中间较小的键才会产生空格,其他两个是“拇指修饰键”,非常方便使用,无需手指技巧; 它们甚至可以与shift键相结合,提供一个额外的可输入字符的大型库存。从技术上讲,Windows也支持这两个修饰符!尽管支持有限,文档几乎不存在(至少在日本以外)。
然而,如果您重新映射和重新定制键盘上的一些键-尤其是如果您有带数字键的完整键盘,仍然可以以各种方式利用这些按键。
在Windows中,实际上可以有多达15个层级的键盘(包括基础层),每个层级需要通过唯一的组合修饰键来激活。实际上,有48种有效组合,包括shift,control,Alt-Control,kana,loya和roya;因此无法使用理论上的可能性。你需要什么才能实现这个?
一个名为KbdEdit的小软件(高级版),价格非常合理(依我之见)。
当然,你可以免费试用它的试用版;该网站充满了有用、迷人且常常不为人知的键盘信息。
还有其他(免费)软件可让您做各种事情,包括更自由地利用所有修饰键以便实现几乎任何目的。这个软件叫AutoHotKey。我已经使用它多年来完成各种巧妙的事情(它实际上是我重新映射键盘以获得3个额外修饰键的系统的一部分,它让我“双重使用”键,以便我不会失去功能。例如,我已经物理重新映射了两个日语拇指修饰键到我的Alt键。我从不使用Alt键来访问Windows应用程序中的菜单;但是,我使用的软件确实利用了包含Alt的键盘快捷键。然而,您可能还记得,除了导航菜单之外,必须始终使用Control才能执行任何操作。因此,在我的自定义键盘布局中,我没有使用任何控制和拇指修饰键的组合(这没有造成任何挑战)。我已经配置AutoHotKey将同时按下Control和任一拇指修饰键转换为“control-alt”,如果我碰巧只需要Alt本身,按下Windows + 任一拇指修饰键就会将其转换为Alt(因为我从未遇到过需要同时使用Windows和Alt的快捷键而没有冲突的情况。
我也非常讨厌我的笔记本电脑上的触摸板;尝试使用滚动功能是不可预测和令人恼火的;此外,它无法产生我广泛使用的中键单击。因此,我重新利用了那个没有人使用的键来打开“上下文菜单”(因为只需“右键单击”即可打开该菜单,所以这更容易),通常称为“应用程序键”。如果我按住它(就像自定义修饰符一样),它会将箭头键转换为滚轮移动(在上下或左右轴中),并将空格键敲击转换为中键单击。我还有一些功能或按钮编程,可以通过我能够轻松触及的所有其他键触发,同时保持“仿制”的自定义修饰符。我能够通过模拟我的小型笔记本电脑没有的媒体键来控制我的媒体应用程序,以及许多其他很酷的事情。 AutoHotKey可能能够适应您想要添加额外修饰符键的大多数原因,而无需经历所有这些麻烦!Windows W32 API 定义了虚拟键码。它是8位的,提供256个值,并且表格中存在一些间隙。
WM_KEYDOWN 消息操作这些代码。
现代键盘可以检测到最多6个同时按下的键,但是有N-Key Rollover和Key Ghosting问题,您应该注意。
.Net API仅公开Alt/Shift/Control作为修饰符。
简而言之 - 微软提供的许多核心API都依赖于Alt/Shift/Control作为修饰符,即使现代键盘允许在按键按下之外近5个同时修饰符。
我不确定您是否了解修饰键,但现在许多游戏键盘都配备了可编程键和按键宏,可以提供您需要的额外功能。
另一种可能性是,如果您熟悉 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 充当“中间人”并模拟键盘。也许您可以通过这种方式创建自己的太空军士键盘。
我认为带有可编程键的游戏键盘可能会以最低成本和最少时间实现您想要的功能......