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

时间:2014-12-10 18:07:22

标签: java keyevent utf

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

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

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

很抱歉,如果这个问题遍布整个地方。我真的迷路了。

1 个答案:

答案 0 :(得分: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;

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

u32.keybd_event((byte) 0x15,(byte)0xF2,0,0);

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

你需要jna.jar和platform.jar来实现这个目的。

相关问题