qt从代码设置QWSServer keymap

时间:2012-11-05 20:11:06

标签: qt embedded keyboard-layout keymapping

我需要一个嵌入式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

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

2 个答案:

答案 0 :(得分:2)

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

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

注意:根据here,Qt5没有QWS,并且所有与QWS相关的API都已被删除。

答案 1 :(得分:0)

您可以尝试:

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

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