Qt中的键盘布局切换,而不是嵌入式Linux的Qt

时间:2014-08-12 15:52:25

标签: linux qt keyboard keyboard-layout qmap

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

对于嵌入式Linux的Qt,我在这里找到了一个好看的解决方案: Qt Embedded for Linux. Keyboard layout switching

但遗憾的是,根据此处的文档,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的含义。

1 个答案:

答案 0 :(得分:1)

好像你应该实现自己的键盘支持层。

  1. 您没有dumpkeys程序,因此您无法在设备上生成键盘映射文件。使用桌面版。
  2. 桌面PC上生成的密钥代码可能与您设备生成的密码不同,因此您应该对其进行调整。
  3. 在调整键盘映射文件后,您可以编写代码来读取这些文件。
  4. 根据当前使用的键盘映射,您可以使用KEY_CODE => UTF8_CHARACTER的地图拦截键事件并将其转换为输入符号。