如何生成Java中没有密钥代码的键盘事件?

Jad*_*ade 5 java keyevent utf

我正在使用Robot类和KeyEvent键代码生成所有其他键事件,它们工作正常,但我还需要Hangul键(切换韩语键盘).显然KeyEvent没有这个密钥的密钥代码,所以我卡住了:(有没有办法生成这个Hangul密钥事件?有没有办法使用Windows的密钥代码,如VK_HANGUL(0x15)而不是KeyEvent关键代码?如果可能改变所有的密钥代码都不会成为问题...或者以某种方式将密钥事件一次性存储并永久存储在某处并永远使用它......

我想要做的是创建一个有数字,字母和韩语的屏幕键盘.单击一个图标,它将生成相应字母的键事件,以便输入字母.(除了切换到韩语之外的所有东西都正常工作.)

能够生成韩文键事件会很好但是如果不可能的话,是否有任何关于如何实现这一目标的建议?也许我可以用键盘上的相应字母绑定每个韩文字母(例如g在具有Eng和韩语的传统键盘上是ㅎ)或者其他什么但是我如何将它发送到其他应用程序?

对不起,如果这个问题遍布整个地方.我真的迷路了.

Jad*_*ade 0

我找到了解决该问题的方法。我使用 JNA 生成键盘事件。

这里有一些代码,以防有人需要。

使用 User32.dll 中的 JNA 和 keybd_event 方法的基本内容:

import com.sun.jna.*;    
import com.sun.jna.Native;    
import com.sun.jna.platform.win32.User32;
import com.sun.jna.win32.StdCallLibrary;    
public interface User32jna extends User32 {
 User32jna INSTANCE = (User32jna) Native.loadLibrary("user32.dll",User32jna.class);
 public void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
}
User32jna u32 = User32jna.INSTANCE;
Run Code Online (Sandbox Code Playgroud)

然后将其插入到需要生成关键事件的位置:

u32.keybd_event((byte) 0x15,(byte)0xF2,0,0);
Run Code Online (Sandbox Code Playgroud)

0x15 和 0xF2 是我正在寻找的韩文/英语切换键的虚拟键代码和键盘扫描代码,但是查找您需要的任何键的代码,然后替换它们,您几乎可以生成任何键事件。

您将需要 jna.jar 和 platform.jar 才能正常工作。