嵌入式设备中使用QWS_KEYBOARD

最近发现一个问题,当我在嵌入式设备中使用环境变量QWS_KEYBOARD的时候,运行Qt程序,程序会被挂起。串口终端那边无法再输入任何东西。上网查找原因,发现也有其他的人碰到过这个问题,他们大多数的解决办法就是使用QWS_USB_KEYBOARD,但是由于我使用的是i2c的键盘设备,而不是usb的,所以这种方法对我没什么用。最后看到一篇老外的帖子,他提到需要修改Qt的源代码。

下面是修改部分:

修改.../src/gui/embedded/qkbdlinuxinput_qws.cpp

#if 0
        if (m_tty_fd >= 0) {
            // save tty config for restore.
            tcgetattr(m_tty_fd, &m_tty_attr);

            struct ::termios termdata;
            tcgetattr(m_tty_fd, &termdata);

            // record the original mode so we can restore it again in the destructor.
            ::ioctl(m_tty_fd, KDGKBMODE, &m_orig_kbmode);

            // setting this translation mode is even needed in INPUT mode to prevent
            // the shell from also interpreting codes, if the process has a tty
            // attached: e.g. Ctrl+C wouldn't copy, but kill the application.
            ::ioctl(m_tty_fd, KDSKBMODE, K_MEDIUMRAW);

            // set the tty layer to pass-through
            termdata.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
            termdata.c_oflag = 0;
            termdata.c_cflag = CREAD | CS8;
            termdata.c_lflag = 0;
            termdata.c_cc[VTIME]=0;
            termdata.c_cc[VMIN]=1;
            cfsetispeed(&termdata, 9600);
            cfsetospeed(&termdata, 9600);
            tcsetattr(m_tty_fd, TCSANOW, &termdata);
        }
#endif

将这段代码注释掉,重新编译替换原来的libQtGui.so.4文件即可

完成之后export QWS_KEYBOARD="LinuxInput:/dev/input/event1" 就可以正确使用键盘了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值