Keys.Context1在Qt / QML中绑定了什么键?

时间:2014-07-07 12:25:34

标签: qt qml

我目前在Windows上构建概念验证应用程序,测试我可以用QML做什么,但最终结果将在嵌入式Linux系统上运行(我需要学习它太)。我一直在处理键处理(Enter,Up,down,Left和Right等),并注意到有4个键标记为Context1到4。

QtQuick文档中,引用了Keys.Context1..4以及相关的onPressed事件,但未提及它们的使用方式。

  

context1Pressed(KeyEvent事件)

     

按下Context1键时会发出此信号。 event参数提供有关事件的信息。

     

相应的处理程序是onContext1Pressed。

如何找出这些绑定的物理键,或者如何指定它们绑定的键?

2 个答案:

答案 0 :(得分:0)

Qt / QML适用于桌面(Windows,Linux,Mac)和移动平台。我强烈怀疑contextX关键事件和处理程序是供移动平台使用的。我做了一些谷歌搜索,你可以see the intent on this Qtopia site。所以你不能在Windows上使用这些密钥。

答案 1 :(得分:0)

密钥枚举的密钥代码位于CoreLib/Global/QNamespace.h; Key_Context1..4键绑定到密钥代码0x01100000..3。正如Tod所提到的那样,密钥是为移动平台设计的,类似的移动密钥是在上下文密钥附近定义的,例如:Key_CallKey_Camera等。

Qt Embedded框架显然直接从tty设备读取密钥(在Linux上),因此不使用操作系统密钥映射,有一个补丁允许您指定绑定,如{ Qt::Key_A, Qt::Key_Context1, Qt::Key_Unknown, Qt::Key_Unknown }这个页面:http://llg.cubic.org/patches/qtegerman.html我还不确定这是否有帮助。

我希望我能够使用操作系统内置的键映射功能,但如果它是直接从输入设备读取,我不确定这是否可行。

如果我再学习,我会更新这个。

更新

我们正在运行的平台上有一个处理键盘设备的API,因此Qt无法直接访问它;我为每个按钮添加一个监听器,然后使用以下命令将按键事件发送到Qt:

QKeyEvent* key = QKeyEvent(QEvent::KeyPress, Qt::Key_Context1, Qt::NoModifier);
qApp->SendEvent(view, key).

其中view是QML DeclarativeView(或等效的)。