我在其中一个MIPS平台上启用了QT。 我为显示器编写了一个图形插件,工作正常。 现在我正在尝试启用键盘。
我没有再编写一个键盘插件,而是将键盘作为Grpahics插件的一部分。 我的键盘代码是这样的:
class MyKeyboardHandler : public QObject, public QWSKeyboardHandler
{
Q_OBJECT
public: MyKeyboardHandler();
virtual ~MyKeyboardHandler();
private: QSocketNotifier *m_notifier;
private slots: void readKeyboardData();
};
使用套接字,我获得了键盘数据。 我已将一个Signal注册到readKeyboardData,因此只要socket中有数据,就会调用readKeyboardData。
类的构造函数是这样的:
.... m_notifier = new QSocketNotifier(fd, QSocketNotifier::Read, this);
connect(m_notifier, SIGNAL(activated(int)),this, SLOT(readKeyboardData()));
//QWSServer::setKeyboardHandler(this);
...
在readKeyboardData()中,我调用
processKeycode()
使用上面的代码,我得到套接字读取调用,并调用processKeyCode。但唯一的问题是应用程序永远不会得到密钥。 我启用最后一行的那一刻(QWSServer :: setKeyboardHandler(this),套接字读取信号永远不会到来。即readKeyboardData()函数永远不会被调用。
如果我做错任何事,请告诉我。 我的主要目的是启用键盘。
答案 0 :(得分:0)
我能够调试这个问题。实际上代码工作正常,但由于驱动程序问题,它没有出现在应用程序中。在键盘驱动程序中,驱动程序过去常常只提供Keyup而不是keydown。所以keydown从来没有去过。因此,应用程序没有正确接收数据。在我修复了驱动程序后,它开始工作了 - 哈里 (将其作为答案而不是评论发布)