0

我正在寻找一种从我的 Qt 应用程序中更改键盘布局的方法。该应用程序将在不支持键盘布局文件的 Linux 内核上运行,因此 Qt 必须完成有关键盘输入映射的所有工作。

对于 Qt for Embedded Linux,我在这里找到了一个好看的解决方案: Qt Embedded for Linux。键盘布局切换

但不幸的是,QKbdDriverFactory 类不适用于任何其他 Qt 版本,根据此处的文档:http: //qt-project.org/doc/qt-4.8/qkbddriverfactory.html 我无论如何都尝试包含它(令人惊讶的是,该类是那里),但是每当我调用 create 函数时,编译器都会抛出“未定义的引用”错误。

我必须手动编程巨大的 QMap 对象吗?请告诉我有一种不那么乏味的方法。我不想相信 qmap 文件不能在 Qt 之外用于嵌入式 Linux,因为如果 kmap2qmap 转换器大部分时间都没用,为什么它几乎可以在任何 SDK 中使用?

亚历克斯

编辑:附加信息:我使用的是 Qt 4.7.4(32 位)和 QtCreator 2.4.1。
我在虚拟机上使用 Ubuntu 12.04、64 位。
目标系统是具有专用最小 Linux 内核的硬件,因此尝试使用 Qt Embedded 将非常困难。
没有 Xcb 服务器,没有帧缓冲区插件(edit2:但我们确实使用帧缓冲区),我无法找出 DE 或 eglfs 的含义。

4

1 回答 1

1

似乎您应该实现自己的键盘支持层。

  1. 您没有dumpkeys程序,因此无法在设备上生成键盘映射文件。使用桌面版。
  2. 台式 PC 上生成的键码可能与您的设备生成的键码不同,因此您应该调整它们。
  3. 调整键盘映射文件后,您可以编写代码来读取这些文件。
  4. 根据当前使用的键映射,拥有 KEY_CODE=>UTF8_CHARACTER 的映射,您可以拦截键事件并将它们转换为输入符号。
于 2014-08-22T04:57:10.697 回答