相关疑难解决方法(0)

如何在java中模拟键盘按下?

我想运行一个java程序并让它模拟键盘按下.例如,它可以在焦点输入框上键入一些文本.这可能吗?

java io

35
推荐指数
1
解决办法
7万
查看次数

我怎样才能完美地模拟KeyEvents?

我如何构建自己的KeyEvent对象,它完全(或非常接近)匹配我从KeyListener最终用户输入内容时收到的对象?


例如,我有一个英国的ISO键盘布局,并键入"我按下的字符Shift+2.如果我JFrame用a 记录这个KeyListener,我会收到以下事件:

java.awt.event.KeyEvent[KEY_PRESSED,keyCode=16,keyText=Shift,keyChar=Undefined keyChar,modifiers=Shift,extModifiers=Shift,keyLocation=KEY_LOCATION_LEFT,rawCode=16,primaryLevelUnicode=0,scancode=42,extendedKeyCode=0x10] on frame0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=50,keyText=2,keyChar='"',modifiers=Shift,extModifiers=Shift,keyLocation=KEY_LOCATION_STANDARD,rawCode=50,primaryLevelUnicode=50,scancode=3,extendedKeyCode=0x32] on frame0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='"',modifiers=Shift,extModifiers=Shift,keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0,primaryLevelUnicode=0,scancode=0,extendedKeyCode=0x0] on frame0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=16,keyText=Shift,keyChar=Undefined keyChar,keyLocation=KEY_LOCATION_LEFT,rawCode=16,primaryLevelUnicode=0,scancode=42,extendedKeyCode=0x10] on frame0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=50,keyText=2,keyChar='"',keyLocation=KEY_LOCATION_STANDARD,rawCode=50,primaryLevelUnicode=50,scancode=3,extendedKeyCode=0x32] on frame0
Run Code Online (Sandbox Code Playgroud)

我想创建一个方法,我将其"作为char参数,它将返回上面列出的KeyEvents数组.

我的问题是:

  • KEY_PRESSEDKEY_RELEASED事件中,keyChar='"'表示按下的字符("),但是keyCode=50指的是"非移位"的ASCII值(又名2).我需要知道如何从"字符中获取这个非移位值.

  • 对于不同的键盘布局,此非移位值也将不同.例如,美国ANSI布局需要Shift+'键入"密钥,这意味着keyCode将是39而不是50.

  • 在某些键盘布局中,Shift键需要键入键,而不是其他键.#例如,该字符需要Shift+3美国ANSI键盘,但不需要在英国ISO键盘上按压.我需要知道是否应该模拟移位按下/释放事件并提供移位修改器.

任何有关如何解决这些问题的见解将不胜感激.我还应该注意,Robot在我的情况下使用该类不能使用.

java keyevent

10
推荐指数
1
解决办法
3884
查看次数

标签 统计

java ×2

io ×1

keyevent ×1