适用于 Linux 的 Qt 嵌入式。键盘布局切换

标签 qt internationalization keyboard-layout qtembedded

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

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

我在 documentation 中搜索并且没有找到任何有关布局切换的信息。

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

你有什么建议?

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

这里有完全相同的问题:

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

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

最佳答案

4.6版本已获得keymap support 。解决方案:

  1. 生成kmap文件:

    ckbcomp -layout xx > xx.kmap

  2. 将 kmap 转换为 qmap

    kmap2qmap xx.kmap xx.qmap

  3. 通过以下方式加载键盘映射

    1. 指定 QWS_KEYBOARD 环境变量:

      QWS_KEYBOARD="TTY:keymap=xx.qmap"

    2. 或动态加载键盘映射:

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

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

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

看起来嵌入式 Linux 的 Qt 已被 Project Lighthouse 取代。 。但不确定它是否已准备好投入生产,我也不知道它如何处理键盘布局切换。

更新

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

关于适用于 Linux 的 Qt 嵌入式。键盘布局切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2669464/

相关文章:

QT QmlMap 带点的折线

c++ - 将句子拆分为包含撇号的单词

python - PySide 全屏 Mac os x 小部件

c++ - 通过 QDirectPainter 绘画

php - Doctrine 1.2 自动加入 i18n?

java - messages.properties 取自数据库

node.js - koajs 中的 URL i18n

linux - 更改了键盘布局,现在无法再登录,因为 Linux 上缺少字母

linux - 创建自定义 setxkbmap 选项

windows - 通过powershell在windows 10中添加国际英语键盘