【问题标题】:KeyEventDispatcher - how to separate action key events from Unicode eventsKeyEventDispatcher - 如何将操作键事件与 Unicode 事件分开
【发布时间】:2013-06-16 09:55:03
【问题描述】:

我正在实现 KeyEventDispatcher.dispatchKeyEvent() 以将所有键盘操作传递给外部 (Android) 设备。使用设备轻松将 KeyEvent 转换为提供的协议的一个关键问题是将事件分为两种类型:Unicode 事件和“动作事件”(杂项、编辑、导航键 - F1、Del、箭头等)。

Java 可以很方便地告诉用户 KeyStrokes 生成的 Unicode 字符:您只需检查(KeyEvent)e.getID() == KeyEvent.KEY_TYPED 是否保证e.getKeyChar() 是生成的字符。无需处理修饰键、键保持等。

问题始于其他类型的键输入事件,即那些不生成 KEY_TYPED 事件的事件。正如 Oracle 的 KeyEvent 文档所述:“不会产生 Unicode 字符的组合键,例如 F1 和 HELP 键等操作键,不会生成 KEY_TYPED 事件”。

我需要能够以两种方式处理这些事件:

  • 将它们与KEY_TYPED 生成事件分开,以避免向设备发送重复的事件(即,如果这些已作为KEY_TYPED 的一部分处理,则不要发送VK_ALTVK_ENTER 等事件),并且,
  • switchKEY_TYPED 事件在已知动作事件列表上,以便将其转换为适合设备协议的代码。

    我可以实现其中任何一个吗?怎么样?

  • 【问题讨论】:

      标签: java android event-handling keyboard-events keyevent


      【解决方案1】:

      好吧,毕竟这真的很容易。

      如果我早点知道有一个KeyEvent.isActionKey()...

      尚未测试所有可能的情况,但它的行为似乎与我预期的一样。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-27
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多