【问题标题】:Unable to get key events for touchscreen keyboard from /dev/input/event1无法从 /dev/input/event1 获取触摸屏键盘的按键事件
【发布时间】:2016-09-07 16:00:37
【问题描述】:

我无法从 /dev/input/event1 获取关键事件。我能够从其输出中过滤掉的是来自事件代码 53 和 54 的绝对 X 和 Y 触摸坐标。我很困惑为什么在我的软键盘上键入时没有事件代码 1 的输出。我想知道哪个关键用户按下了,压力有多大。希望你能理解我的问题。

我使用的是三星 Galaxy S4。

【问题讨论】:

    标签: android linux-kernel low-level-io


    【解决方案1】:

    因为软键盘不能那样工作。它不是操作系统的一部分,它是一个应用程序。所以键盘应用程序将被赋予触摸事件,它会调用 java 函数来告诉主应用程序按下了什么。按下后根本不经过硬件输入通道。操作系统永远不知道什么键在哪里。

    大多数键盘甚至不生成按键事件——它们通过 commitText 一次输出生成单词。

    基本上,你不能以你想要的方式做你想做的事。在不改变操作系统的情况下知道按下了哪些键的唯一方法是在 InputConnection 的另一侧处理来自 InputMethodService(键盘)的命令。

    【讨论】:

    • 感谢@Gabe 的指导。请您详细说明如何在另一个 InputConnection 上进行操作。我没有得到你。实际上我想要做的是以某种方式与现有键盘连接以获得关键事件。这有可能吗?感谢您的帮助:)
    • 大多数键盘根本不做按键事件,或者只在最坏的情况下这样做。用于在视图和软键盘之间进行通信的 API 称为 InputConnection。接受键盘输入的视图将创建一个 InputConnection 并根据框架的请求将其返回给框架。然后,这两个应用程序通过该对象通过 IPC 直接通信。他们根本不经历传统的 linux 键盘事件——只有物理键才能做到这一点。
    猜你喜欢
    • 2020-06-26
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    相关资源
    最近更新 更多