用于 Linux 的 Qt 嵌入式.键盘布局切换 [英] Qt Embedded for Linux. Keyboard layout switching

查看:22
本文介绍了用于 Linux 的 Qt 嵌入式.键盘布局切换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Qt Embedded 开发应用程序并在 linux 帧缓冲区中运行它.我需要一种输入非美国字符的方法.是否可以使用 Qt 更改键盘布局?

I'm developing application with Qt Embedded and run it in linux framebuffer. I need a way to type non-US characters. Is it possible to change keyboard layout with Qt?

我尝试在 Qt/X11 上运行它.布局切换和输入在那里非常好.但是当我使用 Qt/Embedded 编译它并在帧缓冲区中运行它时,我无法更改布局.

I tried to run it on Qt/X11. Layout switching and input are perfectly fine there. But when I compile it with Qt/Embedded and run it in framebuffer I cannot change layout.

我搜索了文档,没有找到任何关于布局切换的信息.

I searched in the documentation and didn't find anything about layout switching.

我认为这与 中指定的 qt 键盘驱动程序有关文档.看来我应该开发自己的键盘驱动程序.但是我使用的是标准键盘,我认为必须有一种标准的方式来更改输入语言?

I think it has something to do with qt keyboard driver as specified at the documentation. It seems that I should develop my own keyboard driver. But I'm using standard keyboard and I think there must be a standard way to change input language?

你有什么建议?

顺便说一句,我使用的是 4.5 版本.或许4.6有办法解决这个问题?

BTW, I'm using 4.5 version. Maybe 4.6 has something to solve this issue?

这里也是同样的问题:

http://lists.trolltech.com/pipermail/qt-embedded-interest/2008-August/000034.html

http://lists.trolltech.com/qt-interest/2004-02/msg00570.html

推荐答案

4.6版本获得键盘映射支持.解决方案:

Version 4.6 has gained keymap support. Solution:

  1. 生成kmap文件:

  1. generate kmap file:

ckbcomp -layout xx > xx.kmap

ckbcomp -layout xx > xx.kmap

将 kmap 转换为 qmap

convert kmap to qmap

kmap2qmap xx.kmap xx.qmap

kmap2qmap xx.kmap xx.qmap

通过

  1. 指定 QWS_KEYBOARD 环境变量:

  1. specifying QWS_KEYBOARD environment variable:

QWS_KEYBOARD="TTY:keymap=xx.qmap"

QWS_KEYBOARD="TTY:keymap=xx.qmap"

或动态加载键盘映射:

QWSKeyboardHandler * currentKeyboardHandler =
    QKbdDriverFactory::create("TTY", "keymap=foo.qmap");

确保在创建新的处理程序时删除已创建的处理程序:

Make sure that you delete created handler when you create a new one:

delete currentKeyboardHandler;
currentKeyboardHandler =
    QKbdDriverFactory::create("TTY", "keymap=bar.qmap");

似乎 Qt for Embedded linux 已被 灯塔计划.不过不确定,如果它已准备好生产,我也不知道它如何处理键盘布局切换.

Seems like Qt for Embedded linux is superseeded by Project Lighthouse. Not sure though, if it is production ready, neither I know how does it handle keyboard layout switching.

更新

Qt5 没有 QWS,所有与 QWS 相关的 API 都被移除.所以你需要一些第三方解决方案.或者为 QPA 编写一个插件.

Qt5 doesn't have QWS and all QWS-related APIs are removed. So you'll need some thirdparty solution. Or write a plugin for QPA.

这篇关于用于 Linux 的 Qt 嵌入式.键盘布局切换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆