【问题标题】:qt setting QWSServer keymap from codeqt 从代码中设置 QWSServer 键盘映射
【发布时间】:2012-11-05 20:11:06
【问题描述】:

我需要为我的嵌入式 QWSServer 应用程序设置一个键盘映射。

像这样使用环境变量

QWS_KEYBOARD="TTY:keymap=/german_keyboard.qmap"
export QWS_KEYBOARD

有效,但对我来说不是最佳选择。

我尝试使用

从代码中设置它
QWSServer* wsServer = QWSServer::instance();
QWSKeyboardHandler * kh = QKbdDriverFactory::create("TTY", "keymap=/german_keymap.qmap");
wsServer->setKeyboardHandler(kh);

如上所述here

但是,它不起作用。任何想法如何解决它?

【问题讨论】:

    标签: qt embedded keyboard-layout keymapping


    【解决方案1】:

    实际上看起来你做不到。根据this 手册页,您只能为键盘处理程序设置驱动程序和设备,但不能设置键盘映射等其他选项。 在this arcticle 关于键盘映射的事情也只提到了环境变量的方式。

    因此,here 的答案似乎是错误的。

    注意:根据this answer,Qt5 没有 QWS,所有与 QWS 相关的 API 都已删除。

    【讨论】:

    • 很遗憾,您的第一个和第二个链接已失效。你有新的吗?
    • 感谢您更新链接。那么,您是否让键盘映射更改工作?这些教程在工作示例代码方面严重缺乏。任何人只要通过阅读课堂文档就可以在没有现实生活中的 Qt 员工指导的情况下使其工作,必须是真正的天才恕我直言。
    • 不,我只设法一直使用一个键盘映射,我无法让更改工作。
    • 好的。那么你做了什么来设置那个键映射?
    • 不幸的是,它并没有那么容易。我运行了一个调用 "system("export QWS_KEYBOARD=\"TTY:keymap=/usr/de.qmap\"");" 的程序后来我的 GUI 启动了,但键盘布局没有改变。系统命令返回0,这有什么技巧吗?
    【解决方案2】:

    你可以试试:

    QWSServer::instance()->closeKeyboard();
    QWSKeyboardHandler * kh = QKbdDriverFactory::create("TTY", "keymap=/german_keymap.qmap");
    

    它对我有用,但只是第一次,如果我想第二次更改布局,closeKeyboard() 会崩溃,因为它试图删除 QWS_KEYBOARD 定义的驱动程序,并且它已经被删除了第一次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 2010-10-18
      • 1970-01-01
      相关资源
      最近更新 更多