【问题标题】:Get position of key on keyboard获取键盘上键的位置
【发布时间】:2011-12-17 20:09:59
【问题描述】:

我希望这个问题还没有被问到,但我一直在寻找解决问题的方法,但没有发现任何对我有帮助的东西。

我正在编写一个 Java 应用程序,用户可以通过键盘控制该应用程序。问题是,我需要许多不同的输入键。所以我还必须使用特殊的字符键。但我的问题是,我无法再次为每个键盘编写整个代码。

所以我的问题是,有没有办法确定键盘上给定键的位置。如果有人知道如何做到这一点,那就太好了。

提前致谢, 狮子座

【问题讨论】:

  • 您无法真正知道密钥的“物理” 位置。键盘只发送键码(正如 G_H 指出的那样),而且一些键盘具有物理开关,可以更改物理键发送的键码(例如,在某些键盘上,您可以设置“大写锁定”以发送“左 ctrl”的键码直接从键盘内部:您根本无法以编程方式检测到这一点)。更不用说一些键盘控制器比这更可编程。

标签: java keyboard


【解决方案1】:

键盘仅将键代码发送到底层堆栈。由操作系统和软件决定如何使用它。现在也许硬件确实有一个依赖于位置的简单代码,并且正在进行一些转换以将其转换为应用程序的可用关键代码。我认为必须是这种情况,因为可以从 OS 中选择布局。但这似乎不像您在 Java 中可以访问的那种低级东西,除非使用 JNI。

源自KeyListener,您可以捕获KeyEvents。我建议您查看该类的文档、字段和方法,并可能制作一个小型测试应用程序来捕获此类事件并打印出各种方法的结果。也许你能找到一些共同点。

如果没有直接的方法来做到这一点,也许最好有某种转换表方案来标准化最常见布局的输入,例如 Qwerty 和 Azerty。对于大多数用户来说应该这样做,并且由于您希望依赖绝对定位,因此需要一小组布局中的一个似乎是不可接受的。用户可以在操作系统中更改布局。

如果您碰巧在制作游戏,不妨创建some huge control deck that people will be forced to buy to get the best experience。多余的钱! :D

【讨论】:

  • 谢谢。我想,我只会在应用程序第一次打开一个窗口时提示,用户必须在其中键入所有键,然后存储这些数据。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2011-03-28
    • 2012-03-29
    • 2013-10-26
    • 2020-11-09
    • 1970-01-01
    • 2011-11-25
    • 2011-08-03
    • 1970-01-01
    • 2012-07-01
    相关资源
    最近更新 更多