如何将Linux密钥从/ dev / input / event *转换为ASCII

时间:2012-07-11 15:25:09

标签: linux embedded ascii keycode

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

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

2 个答案:

答案 0 :(得分:1)

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

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

但基本上:不要。这比你似乎意识到的更难(!)难题。

答案 1 :(得分: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