我正在使用 Qt/Embedded 4.8.4(c++ 绑定(bind))开发应用程序。我发现启用大写锁定不会将大写字母中的字符放入编辑框中。这是一个简单的程序供您引用,它显示了相同的行为。
#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 作为键盘和鼠标的输入驱动程序
最佳答案
可能是 Qt Window Server (QWS) 使用的键映射对大写锁定键(键码 58)的设置有误。我遇到了这个问题,并且能够按如下方式解决它。
为了生成自定义键盘映射,我遵循了这篇文章中的方法:Qt Embedded for Linux. Keyboard layout switching
但是,在运行 kmap2qmap 之前,我编辑了 kmap 文件,使键码 58 使用 Caps_Lock 而不是 CtrlL_Lock
然后我将生成的 qmap 文件作为输入传递给键盘驱动程序:
export QWS_KEYBOARD="LinuxInput:keymap=/path/to/xx.qmap"
./myApp -qws
关于c++ - Qt/嵌入式 : Caps Lock is not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22961736/