有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我使用Robot类和KeyEvent键代码生成所有其他键事件,它们工作正常,但我还需要Hangul键(切换韩国键盘)。显然KeyEvent没有这个密钥的密钥代码,所以我被卡住了:(有办法生成这个Hangul密钥事件吗? 有没有办法使用像VK_HANGUL(0x15)这样的Windows键代码来代替KeyEvent键代码?如果可能的话,更改所有的密钥代码不会有问题。。。或者以某种方式将关键事件保存一次,并将其永久存储在某个地方,然后永远使用

我想做的是创建一个屏幕键盘,上面有数字、字母和韩语。点击一个图标,它将生成相应字母的关键事件,这样就可以键入字母。(除了切换到韩语,其他一切都正常工作。)

能够生成韩语密钥事件会很好,但如果这不可能,有没有关于如何实现这一点的建议? 也许我可以把每个韩语字母和键盘上相应的字母绑定在一起(例如g是ㅎ 在既有英语又有韩语的传统键盘上)或其他什么,但我该如何将其发送到其他应用程序

抱歉,如果这个问题到处都是。我真的迷路了


共 (1) 个答案

  1. # 1 楼答案

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

    以下是一些代码,以防有人需要

    使用User32中的JNA和keybd_事件方法的基本资料。dll:

    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是我一直在寻找的韩语/英语切换键的虚拟键代码和键盘扫描代码,但是查找需要的任何键的代码,然后替换它们,几乎可以生成任何键事件

    你需要jna。罐子和平台。让它工作