如何使用 Java Robot 输入非小键盘数字?

Posted

技术标签:

【中文标题】如何使用 Java Robot 输入非小键盘数字?【英文标题】:How to input non-numpad numbers with Java Robot? 【发布时间】:2012-07-25 16:44:13 【问题描述】:

我正在运行一个 Java 机器人类,我需要输入键盘键 0-9(实际数字),而不是数字键盘数字。出于某种原因,我正在使用的 java 小程序(我没有写)不接受来自数字键盘的 0-9 键,只接受标准键盘上方的 0-9 行。但是,Java 机器人类似乎只有一个 VK_NUMPAD# KeyEvent。起初,我尝试了 VK_1 事件,但结果与数字无关(而是前 0-9 个 ASCII 字符)。有什么办法可以得到第一行的数字吗?我使用的机器人除此之外工作正常,并且会很乐意输入“VK_P”和“VK_UP”等键。 谢谢!

【问题讨论】:

您能给我们提供有关您正在使用的小程序的任何信息吗?还是具有 VK_NUMPAD# 事件的机器人类? 小程序是 webpacman.com/mspacman.htm 。它将接受像 VK_UP 这样的 KeyEvents 来移动 pacman 而不会抱怨,而不是数字。机器人类是来自docs.oracle.com/javase/1.4.2/docs/api/java/awt/Robot.html 的标准Java Robot。此外,VK_NUMPAD[#] 只是我对 VK_NUMPAD1、VK_NUMPAD2 等的符号。 【参考方案1】:

This 应该是关键代码的最终链接。当使用e.getKeyCode() 时,我们看到 VK_NUMPAD 的代码分别为 96-105 对应数字 0-9。仅当 num_lock 开启时才会出现这种情况,因为如果关闭,您将获得其他代码。

您对 VK_1 的尝试应该是正确的。那就是代码 49,它对应于顶行上的 1 已被推送。我用我拥有的小程序尝试了这个。我卡在一个 KeyListener 中,并验证这是正确的。 48-57 对应于第一行的 0-9,在我给出的链接中列为 VK_0 ... VK_9。必须有某种覆盖(例如 num_lock 键覆盖数字键盘)正在重新映射它,因为正如我所说 VK_1 是键盘顶部 1 字符的正确答案。

【讨论】:

以上是关于如何使用 Java Robot 输入非小键盘数字?的主要内容,如果未能解决你的问题,请参考以下文章

Java比较两个数字的大小 两个参数由键盘输入

如何使用数字键盘输入键执行方程? [复制]

并发/非阻塞控制台键盘输入

Java里鲜为人知的“机器人”类库

在JAVA中,键盘输入的字符串中包含的字母、数字和其他字符的个数如何制作?

input 非 password 类型 输入框显示圆点