我正在实现KeyEventDispatcher.dispatchKeyEvent()
将所有键盘操作传递给外部(Android)设备。使用设备轻松将 KeyEvent 转换为提供的协议的一个关键问题是将事件分为两种类型:Unicode 事件和“动作事件”(杂项、编辑、导航键 - F1、Del、箭头等)。
Java 可以很方便地告诉用户 KeyStrokes 生成的 Unicode 字符:您只需检查 if (KeyEvent)e.getID() == KeyEvent.KEY_TYPED
,并且e.getKeyChar()
保证是生成的字符。无需处理修饰键、键保持等。
问题始于其他类型的键输入事件,即那些不生成 KEY_TYPED 事件的事件。正如 Oracle 的文档KeyEvent
所述:“不会产生 Unicode 字符的组合键,例如 F1 和 HELP 键等操作键,不会生成KEY_TYPED
事件”。
我需要能够以两种方式处理这些事件:
KEY_TYPED
不要发送等),并且,
VK_ALT
VK_ENTER
KEY_TYPED
switch
已知动作事件列表中的非KEY_TYPED
事件,以便将其转换为适合设备协议的代码。
我可以实现其中任何一个吗?如何?