我正在尝试将从/ dev / input / event0读取的键盘事件从定义的值转换为未运行X或终端的嵌入式应用程序中的ASCII等效值。
我认为这应该通过Linux中定义的键盘映射功能来完成,而不仅仅是创建我自己的std :: map<>但我似乎无法找到一个好的起点。到目前为止,我发现的大多数示例都假设我使用X窗口或终端运行。
答案 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