我正在寻找从我的Qt应用程序中更改键盘布局的方法。该应用程序将在不支持键盘布局文件的Linux内核上运行,因此Qt必须执行与键盘输入映射有关的所有操作。
对于Qt for Embedded Linux,我在这里找到了一个好看的解决方案:
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.0464位虚拟机上工作。
目标系统是一个具有专门的最小Linux内核的硬件,因此尝试使用Qt嵌入式将非常困难。
没有Xcb服务器,没有帧缓冲插件(edit2:但是我们使用帧缓冲),我也不知道DE或eglfs是什么意思。

最佳答案

似乎你应该实现你自己的键盘支持层。
您没有dumpkeys程序,因此无法在设备上生成密钥映射文件。使用桌面版本。
桌面PC上生成的键码可能与设备生成的键码不同,因此您应该调整它们。
修改keymap文件后,可以编写代码来读取这些文件。
根据当前使用的KEY map,拥有一个KEY-CODE=>UTF8-u字符的映射,您可以截取键事件并将它们转换为输入符号。

关于linux - Qt中的键盘布局切换,而不是嵌入式Linux中的Qt,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25268780/

10-12 00:18
查看更多