1

我正在使用 Qt/Embedded 4.8.4(c++ 绑定)开发一个应用程序。我发现启用大写锁定不会将大写字母的字符放在编辑框中。这是一个简单的程序供您参考,它显示了相同的行为。

#include <QApplication>
#include <QMainWindow>
#include <QLineEdit>

int main(int argc, char **argv)
{
    QApplication a(argc, argv);
    QMainWindow *win = new QMainWindow(0);
    win->move(50,50);
    win->resize(500, 500);
    win->show();

    QLineEdit *edit = new QLineEdit(win);
    edit->move(30, 30);
    edit->resize(100, 30);
    edit->show();

    return a.exec();
}

在编辑框中,您正在输入的字符会以小写形式出现,无论您是否设置了大写锁定状态

回复:供您参考,我使用 LinuxInput 作为键盘和鼠标的输入驱动程序

4

1 回答 1

0

Qt Window Server (QWS) 使用的键映射可能对 caps Lock 键(键码 58)的设置有误。我遇到了这个问题,并且能够按如下方式修复它。

为了生成自定义键盘映射,我遵循了这篇文章中的方法:Qt Embedded for Linux。键盘布局切换

但是,在运行 kmap2qmap 之前,我编辑了 kmap 文件,以便 keycode 58 使用 Caps_Lock 而不是 CtrlL_Lock

然后我将生成的 qmap 文件作为输入传递给键盘驱动程序:

export QWS_KEYBOARD="LinuxInput:keymap=/path/to/xx.qmap"
./myApp -qws
于 2014-05-06T18:01:09.437 回答