c++ - Qt/嵌入式 : Caps Lock is not working

标签 c++ linux qt qt4 qtembedded

我正在使用 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/

相关文章:

C# 从返回 char 指针的 c++ 函数中获取字符串/字符值

c++ - VIDIOC_QBUF : Device or resource busy V4L2 MEMORY USERPTR

linux ftp mget 使用 ftp MULTI-FETCHING 或 cURL

c - 在 linux 中使用 c 编程的键盘处理程序

c++ - Qt调用QDialog继承类的成员函数

c++ - QT写浏览器插件

c++ - munmap_chunk:使用 std::vector 更改数据存储位置时的无效指针

c++ - 如何确保用户输入允许的枚举

c++ - .Net Socket 类错误代码

c++ - 我什么时候应该在 Qt 上使用 qApp->setProperty