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

2024-03-18

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

我想做的是创建一个包含数字、字母和韩语的屏幕键盘。点击某个图标,就会生成对应字母的按键事件,从而输入该字母。 (除了切换到韩语之外,一切都正常。)

能够生成朝鲜文按键事件会很好,但如果不可能,是否有关于如何实现此目标的任何建议? 也许我可以将每个韩语字母与键盘上相应的字母表绑定(例如,在同时具有英语和韩语的传统键盘上,g 是ㅎ)或其他东西,但是如何将其发送到其他应用程序?

抱歉,如果这个问题如此普遍。我真的迷路了。


我找到了解决该问题的方法。我使用 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 是我正在寻找的韩文/英语切换键的虚拟键代码和键盘扫描代码,但是查找您需要的任何键的代码,然后替换它们,您几乎可以生成任何键事件。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Java 中生成没有按键代码的键盘事件? 的相关文章

随机推荐

  • TButton的缺陷

    Delphi XE2 中的 TButton 有一个Style财产 当该属性设置为bsSplitButton然后按钮右侧会显示一个下拉箭头 然而 这个下拉区域有一些不便 很多情况下它太窄了 下拉区域的静态宽度只有11个像素 当鼠标指针悬停在下
  • 如何调整jsf2 primefaces中选项卡的宽度和高度?

    如何调整 jsf 2 primefaces 中选项卡的宽度和高度 另请告诉我如何控制选项卡内的文本 颜色和字体大小 谢谢 PrimeFaces 使用 ThemeRoller CSS 框架 前往jQuery UI ThemeRoller 页面
  • 如何在 Azure VM 中使用公共静态 IP

    在花了几个小时尝试每个相关的 Azure Power Shell 命令来将虚拟公共 IP 分配给 Azure VM 后 我又回到了原点 令人惊奇的是 这样的基本功能在Azure中却无法完成 首先 我保留了一个静态IP 然后创建一个虚拟机 然
  • Swift:“后台会话不支持完成处理程序块。请改为使用代表。

    我是 Swift 新手 因此经验不是很丰富 我不知道为什么这不起作用 我正在尝试下载音乐文件 然后将其发送到 AVAudoPlayer 进行播放 这是代码 IBAction func startDownload sender Any wea
  • PHP 将所有 url 转换为 html 链接 [重复]

    这个问题在这里已经有答案了 可能的重复 将文本中的 URL 替换为 HTML 链接 https stackoverflow com questions 1188129 replace urls in text with html links
  • Python 和 PyQt 中的线程错误

    我注意到当函数setModel http doc trolltech com 4 0 qabstractitemview html setModel在并行线程中执行 我尝试了 threading Timer 或 threading thre
  • 修复对 CherryPy 的 GET 请求中的 404:缺少参数错误

    我正在为服务器端使用 CherryPy 在客户端使用 HTML CSS 和 jQuery 制作一个网页 我还使用 mySQL 数据库 我有一个供用户注册该网站的工作表单 创建用户名和密码 我使用 jQuery 向 CherryPy 发送 A
  • 如果我添加/删除/更新可靠集合的元素,休眠会增加版本吗?

    我正在学习休眠乐观锁机制 但我还没有找到我的问题的答案用户指南 https docs jboss org hibernate orm 6 0 userguide html single Hibernate User Guide html l
  • Powershell 按 [DateTime]::ParseExact 排序对象

    我正在尝试使用 PowerShell 按日期对控制台程序返回的行进行排序 日期的格式为 MM dd yyyy 格式 因此必须将它们转换为 DateTime 对象才能采用可排序的格式 为了解析日期 我使用 dates 10 24 2010 0
  • 控制器的 Angular 中的 Jasmine 测试

    我收到以下错误 TypeError undefined is not a function问题是公共的是模块和工厂 问题出在我的线上 var ctrl controllerConstructor resetPasswordSentScree
  • 有没有办法从 MongoDB 检索没有 _id 字段的数据?

    我在我们的项目中使用 MongoDB 目前正在学习它是如何工作的 当插入记录时 MongoDB自动生成ID 查询数据时 总是返回 id 当我们将 Bson Json 反序列化为 out 对象时 这会产生一个问题 因为我们的类型没有该字段 而
  • 使用 C# 在 asp.net 中排序列表和下拉列表

    我有一个返回排序列表的方法 我想将其数据源到下拉列表 我在用 DropDownList1 DataSource stList DropDownList1 DataValueField stList ContainsValue DropDow
  • Haskell:针对 Hackage 的多个版本的基础测试包

    我正在尝试将我的第一个包上传到 Hackage 耶 但出现以下错误 依赖项 build depends base 未指定版本号的上限 基础 包的每个主要版本都会以各种方式更改 API 并且大多数包都需要进行一些更改才能与其一起编译 推荐的做
  • Flutter更新BottomNavigationBar

    我将 BottomNavigationBar 与 TabController 一起使用 通过单击 BottomNavigationBar 的不同选项卡 TabView 会更改内容 但是 如果我在 TabView 上滑动以切换到另一个视图 选
  • 如何使用 C# xaml 以编程方式设置数据绑定

    如何以编程方式设置 DataContext 并在 C Xaml 中创建数据绑定 给定一个类 class Boat INotifyPropertyChanged public event PropertyChangedEventHandler
  • npm 错误!网络 getaddrinfo ENOTFOUND

    我正进入 状态npm ERR network getaddrinfo ENOTFOUND尝试使用 NPM 安装任何包时出错 我知道有很多关于同一问题的线程 但我找不到任何可以帮助我的线程 我已经设置了代理 我认为这与代理设置不正确 没有使用
  • 将 pandas.DataFrame 添加到现有 Excel 文件

    我有一个网络抓取工具 可以为本月的抓取创建一个 Excel 文件 我想在每次运行时将今天的刮擦和该月的每次刮擦添加到该文件中作为新工作表 然而 我的问题是 它仅用新工作表覆盖现有工作表 而不是将其添加为单独的新工作表 我尝试使用 xlrd
  • Hibernate 延迟加载问题

    我在 Hibernate 5 中映射了这个实体 class A private String code private B child LazyToOne LazyToOneOption PROXY ManyToOne fetch Fetc
  • 在不使用cocoapods的情况下向现有项目添加框架

    我有一个现有项目 我想在其中添加名为 CoreActionSheetPicker 的框架 https github com skywinder ActionSheetPicker 3 0 问题是我似乎无法将框架添加到我的项目中 当我将框架拉
  • 如何在 Java 中生成没有按键代码的键盘事件?

    我使用 Robot 类和 KeyEvent 按键代码来生成所有其他按键事件 它们工作正常 但我还需要 Hangul 键 切换韩语键盘 显然 KeyEvent 没有这个键的键码 所以我被卡住了 有没有办法生成这个韩文键事件 有没有办法使用 W