繁体   English   中英

QT Embedded:如何向ESC(转义),F1和类似键生成事件

[英]QT Embedded: How to generate an event to ESC (Escape), F1 and such keys

我正在研究QT中使用LIRC处理RC(远程控制)按键的嵌入式软件。

我设法映射了所有RC按键,因此directFB获得了如下按键:

00000000000011b7 00 MENU
00000000000011a7 00 EXIT
0000000000001193 00 RED

我创建了一个QT类,该类使用套接字来获取LIRC密钥,并通过QApplication :: postEvent为所有其他QT小部件等生成KeyPressEvent。 它对于“常规”键工作正常,但不适用于模拟ESC,F1,F2和其他“特殊”键的键。

我可以使用信号和插槽使它正常工作(在下面检查),但是这很麻烦,因为我需要一直为活动的Windows(小部件)连接和断开信号。 我拒绝相信对此没有更好的解决方案。

有谁知道如何为这些特殊键生成事件?

遵循LIRC套接字处理程序方法的代码段:

QKeyEvent *event = NULL;
int emitKey = 0;

if (strstr(code, "MENU"))
{
    cout << "MENU";
    event = new QKeyEvent(QEvent::KeyPress, Qt::Key_Menu, Qt::NoModifier, "Menu", 0);
    emitKey = Qt::Key_Menu;
}
else if (strstr(code, "EXIT"))
{
    cout << "EXIT";
    event = new QKeyEvent(QEvent::KeyPress, Qt::Key_Escape, Qt::NoModifier, "Exit", 0);
    emitKey = Qt::Key_Escape;
}
else if (strstr(code, "RED"))
{
    cout << "RED";
    event = new QKeyEvent(QEvent::KeyPress, Qt::Key_F1, Qt::NoModifier, "Red", 0);
    emitKey = Qt::Key_F1;
}

// All other keys, including ...

if (event)
{
    cout << ": POSTED!" << endl;
    event->ignore();
    QApplication::postEvent(this, event);
    emit k_output(emitKey);
}

菜单键事件即将到达活动窗口的keyEvent方法。 其他(退出,红色)不是...

非常感谢您的帮助。

在postEvent中使用当前关注的小部件可以解决此问题。 我在LIRC配置中遇到了一些问题,该问题正在生成一些“不是很正确”的密钥代码。 如果有人需要帮助,我会很乐意提供帮助。 谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM