6

我正在尝试将从 /dev/input/event0 读取的键盘事件从定义的值转换为未运行 X 或终端的嵌入式应用程序中的 ASCII 等效项。

我认为这应该通过在 Linux 中定义的键映射功能来完成,而不是仅仅创建我自己的 std::map<> 但我似乎找不到一个好的起点。到目前为止,我发现的大多数示例都假设我使用 X 窗口或终端运行。

4

2 回答 2

1

文本输入(除了非常简单的传统美式键盘和 7 位 ASCII 标准)是一个非常复杂的领域。我强烈建议您使用 X 客户端执行此操作,您可以在其中利用所有现有的输入法。

但是,如果您必须这样做,并且您对一种键盘和一种语言感到满意,您可以通过像终端一样解释事件来做到这一点。检查/usr/include/linux/input.h值的定义。跟踪 Shift 和 Ctrl 键的位置(当然,Alt、Fn 等非 ASCII 键由您来解释)并在按键事件中发出相应的字节。如果默认设置不适用于您的应用程序,也许您也想实现自动重复功能。

但基本上:不要。这是一个比您似乎意识到的要困难得多(!)的问题。

于 2012-08-28T16:36:39.190 回答
0

您可以从 /dev/input/event0 读取以下结构

struct input_event {
    struct timeval time;
    unsigned short type;
    unsigned short code;
    unsigned int value;
};

更多详情:https ://www.kernel.org/doc/Documentation/input/input.txt

于 2014-03-11T03:42:21.233 回答