【问题标题】:How to construct Qt::Key out of KeySym or KeyCode?如何从 KeySym 或 KeyCode 构造 Qt::Key?
【发布时间】:2018-02-02 23:32:48
【问题描述】:

我有一个接收扫描码的低级按键记录器,没有 QKeyEvent,因为 QApplication 没有焦点。可以使用系统特定的库调用将扫描码转换为关键符号。

扫描码对应Qt的QKeyEvent->nativeScanCode(),key syms对应QKeyEvent->nativeVirtualKey(),但是Qt的Qt::Key值似乎是独立映射的。我想获取给定的 Qt::Key 并转换为 sym 密钥或扫描代码,或者从 sym 密钥或扫描代码构造一个 Qt::Key,以便我可以将捕获的密钥与预先确定的密钥进行比较Qt::Key 的。

我见过其他项目通过实现大型、不完整的查找表ref1ref2 来做到这一点。当然,如果 Qt 正在收集扫描代码并从中构建 QtKey,它一定有一些内部映射吗?我想要一些方法来避免重复。是否有任何可访问的 Qt API 来从密钥符号或扫描代码构造 Qt::Keys,或者可以复制而不依赖外部项目的任何非公共 API Qt 代码?

【问题讨论】:

    标签: qt keyboard keyboard-shortcuts x11


    【解决方案1】:

    不幸的是,在 Qt 键和本机键码之间转换似乎没有简单的方法。

    您可以使用 Qt 用于 X11 的相同映射。我将 this table 用于 QxtGlobalShortcut 库。

    原始表格来自qxcbkeyboard.cpp。源文件包含一些用于转换原生键码以在 Qt 中使用的函数。问题是 QXcb* 类不是公共的,从标题的外观来看,可能会在次要 Qt 版本之间中断(因此不建议直接使用)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      相关资源
      最近更新 更多