获取键盘按键位置

4
我希望这个问题还没有被问过,但我正在寻找解决方案,却没有找到对我有帮助的内容。
我正在编写一个Java应用程序,用户可以通过键盘控制该应用程序。问题是,我需要很多不同的输入键。因此,我也必须使用特殊字符键。但我的问题是,我不能为每个键盘重新编写整个代码。
所以我的问题是,是否有一种方法可以确定给定键在键盘上的位置。如果有人知道如何做到这一点,那就太好了。
先谢谢了, Leo

你实际上无法知道一个键位的“物理”位置。键盘只发送键码(正如G_H所指出的那样),而且一些键盘有物理开关,可以改变物理按键发送的键码(例如,在某些键盘上,您可以设置“大写锁定”直接从键盘内部发送“左Ctrl”的键码:您根本无法以编程方式检测到这一点)。更不用说一些键盘控制器甚至比这更可编程了。 - TacticalCoder
2个回答

2
一个键盘只会向底层堆栈发送按键代码。操作系统和软件需要想办法利用这些代码。也许硬件确实有一种简单的代码,依赖于位置,然后进行一些转换,将其转换为应用程序可用的按键代码。我认为这一定是事实,因为可以从操作系统中选择布局。但除非使用JNI,否则在Java中不太可能访问这种低级别的东西。
KeyListener开始,您可以捕获KeyEvents。我建议您查看该类的文档、字段和方法,并制作一个小的测试应用程序,捕获此类事件并打印出各种方法的结果。也许您可以找到一些共同点。
如果没有直接的方法来完成这个任务,或许最好采用某种翻译表方案来标准化最常见的布局输入,例如Qwerty和Azerty。这对大多数用户应该足够了,因为您想要依靠绝对定位,所以需要一些小型布局集合之一并不算过分。用户可以在操作系统中更改布局。
如果你正在制作一个游戏,也许可以创建一些巨大的控制面板,人们将被迫购买才能获得最佳体验。额外的收益! :D

谢谢。我想,我会在应用程序第一次打开窗口时提示用户输入所有键,并将这些数据存储。 - evotopid

1

您可以使设置完全由用户定义

您可以进行一些设置,让用户可以修改将键映射到操作的设置,同时提供azerty和qwerty的标准设置作为默认设置


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